0x02-functions_nested_loops
Requirements
- Allowed editors:Â
vi
,Âvim
,Âemacs
- All your files will be compiled on Ubuntu 20.04 LTS usingÂ
gcc
, using the optionsÂ-Wall -Werror -Wextra -pedantic -std=gnu89
- All your files should end with a new line
- AÂ
README.md
 file, at the root of the folder of the project is mandatory - Your code should use theÂ
Betty
 style. It will be checked using betty-style.pl and betty-doc.pl - You are not allowed to use global variables
- No more than 5 functions per file
- You are not allowed to use the standard library. Any use of functions likeÂ
printf
,Âputs
, etc… is forbidden - You are allowed to use _putchar
- You don’t have to pushÂ
_putchar.c
, we will use our file. If you do it won’t be taken into account - In the following examples, theÂ
main.c
 files are shown as examples. You can use them to test your functions, but you don’t have to push them to your repo (if you do we won’t take them into account). We will use our ownÂmain.c
 files at compilation. OurÂmain.c
 files might be different from the one shown in the examples - The prototypes of all your functions and the prototype of the functionÂ
_putchar
 should be included in your header file calledÂmain.h
- Don’t forget to push your header file
Note: you have to create the files _putchar.c and main.h
_putchar.c
#include <unistd.h>
/**
* _putchar - writes the character c to stdout
* @c: The charater to print
*
* Return: On success 1.
* On erro, -1 is returned, and errno is set appropriately.
*/
int _putchar(char c)
{
return (write(1, &c, 1));
}
main.h
#ifndef main_h
#define main_h
int _putchar(char);
void print_alphabet(void);
void print_alphabet_x10(void);
int _islower(int c);
int _isalpha(int c);
int print_sign(int n);
int _abs(int);
int print_last_digit(int);
void jack_bauer(void);
void times_table(void);
int add(int, int);
void print_to_98(int n);
void print_times_table(int n);
#endif
0-putchar.c
#include "main.h"
/**
* main - Entry point
*
* Return: Always 0 (Success)
*/
int main(void)
{
_putchar('_');
_putchar('p');
_putchar('u');
_putchar('t');
_putchar('c');
_putchar('h');
_putchar('a');
_putchar('r');
_putchar('\n');
return (0);
}
1-alphabet.c
#include "main.h"
/**
* print_alphabet - Prints the alphabet in lowercase
*
* Return: Always 0 (Success)
*/
void print_alphabet(void)
{
char alpha;
for (alpha = 'a'; alpha <= 'z'; alpha++)
{
_putchar (alpha);
}
_putchar('\n');
}
2-print_alphabet_x10.c
#include "main.h"
/**
* print_alphabet_x10 - a function that prints 10 times the alphabet
*
* Return: x10 a-z
*/
void print_alphabet_x10(void)
{
char alpha, co;
co = 0;
while (co < 10)
{
for (alpha = 'a'; alpha <= 'z'; alpha++)
{
_putchar (alpha);
}
co++;
_putchar('\n');
}
}
3-islower.c
#include "main.h"
/**
* _islower - checks for lowercase character
* @c: the character to check
* Return: 1 if c is lowercase, 0 otherwise
*/
int _islower(int c)
{
return (c >= 'a' && c <= 'z');
}
4-isalpha.c
#include "main.h"
/**
* _isalpha - a function that checks for alphabetic character
* @c: single letter input
* Return: 1 if c is a letter (lower or uppercase), 0 otherwise
*/
int _isalpha(int c)
{
if (((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')))
return (1);
else
return (0);
}
5-sign.c
#include "main.h"
/**
* print_sign - Determines if the input number
* greater, iqual or less than zero.
*
* @n: The input number as an integer.
*
* Return: 1 is greater than zero. 0 is zero.
* -1 is less than zero.
*/
int print_sign(int n)
{
if (n > 0)
{
_putchar(43);
return (1);
}
else if (n < 0)
{
_putchar(45);
return (-1);
}
else
{
_putchar(48);
return (0);
}
_putchar('\n');
}
6-abs.c
#include "main.h"
/**
* _abs - a function that computes the absolute value of an integer
* @ab: integer input
* Return: Absolute value of ab
*/
int _abs(int ab)
{
return (ab * ((ab > 0) - (ab < 0)));
}
7-print_last_digit.c
#include "main.h"
/**
* print_last_digit - a function that prints the last digit of a number
* @nld: number's last digit result
* Return: value of the last digit
*/
int print_last_digit(int nld)
{
int pld;
pld = (nld % 10);
if (pld < 0)
{
pld = (-1 * pld);
}
_putchar(pld + '0');
return (pld);
}
8-24_hours.c
#include "main.h"
/**
* jack_bauer - function that prints every minute of the day, 24 hour clock
* h = hour, m = minutes
* / 10 allows second digit to rotate
* for loop breaks before passing 24:00
* Return: 24 hour clock line by line
*/
void jack_bauer(void)
{
int h, m;
for (h = 0; h < 24; h++)
{
for (m = 0; m < 60; m++)
{
_putchar((h / 10) + '0');
_putchar((h % 10) + '0');
_putchar(':');
_putchar((m / 10) + '0');
_putchar((m % 10) + '0');
_putchar('\n');
}
}
}
9-times_table.c
#include "main.h"
/**
* times_table - a function that prints the 9 times table, starting with 0
* rone = row, cone = column, d = digits of current result
* Return: times table
* add extra space past single digit
*/
void times_table(void)
{
int rone, cone, d;
for (rone = 0; rone <= 9; rone++)
{
_putchar('0');
_putchar(',');
_putchar(' ');
for (cone = 1; cone <= 9; cone++)
{
d = (rone * cone);
if ((d / 10) > 0)
{
_putchar((d / 10) + '0');
}
else
{
_putchar(' ');
}
_putchar((d % 10) + '0');
if (cone < 9)
{
_putchar(',');
_putchar(' ');
}
}
_putchar('\n');
}
}
10-add.c
#include "main.h"
/**
* add - a function that adds two integers and returns the result
* @one: first number input
* @two: second number input
* Return: one + two
*/
int add(int one, int two)
{
return (one + two);
}
11-print_to_98.c
#include <stdio.h>
#include "main.h"
/**
* print_to_98 - a function that prints all natural numbers from n to 98
* user input's number prints to 98, regardless < 98 or > 98
* @n: number input
* Return: Always 0 (Success)
*/
void print_to_98(int n)
{
if (n < 98)
{
while (n <= 98)
{
printf("%d", n);
if (n != 98)
{
printf(", ");
}
n++;
}
}
else if (n > 98)
{
while (n >= 98)
{
printf("%d", n);
if (n != 98)
{
printf(", ");
}
n--;
}
}
else
{
printf("98");
}
printf("\n");
}
100-times_table.c
#include "main.h"
/**
* print_times_table - Prints a multiplication table up to param
* @n: The number to be treated
*
* Return: Number matrix
*/
void print_times_table(int n)
{
int a, b, op;
if (n >= 0 && n <= 15)
{
for (a = 0; a <= n; a++)
{
_putchar(48);
for (b = 1; b <= n; b++)
{
op = a * b;
_putchar(44);
_putchar(32);
if (op <= 9)
{
_putchar(32);
_putchar(32);
_putchar(op + 48);
}
else if (op <= 99)
{
_putchar(32);
_putchar((op / 10) + 48);
_putchar((op % 10) + 48);
}
else
{
_putchar(((op / 100) % 10) + 48);
_putchar(((op / 10) % 10) + 48);
_putchar((op % 10) + 48);
}
}
_putchar('\n');
}
}
}
101-natural.c
#include <stdio.h>
/**
* main - computes and prints the sum of all the multiples
* of 3 or 5 below 1024
* Return: Always 0 (Success)
*/
int main(void)
{
unsigned long int sum3, sum5, sum;
int i;
sum3 = 0;
sum5 = 0;
sum = 0;
for (i = 0; i < 1024; ++i)
{
if ((i % 3) == 0)
{
sum3 = sum3 + i;
} else if ((i % 5) == 0)
{
sum5 = sum5 + i;
}
}
sum = sum3 + sum5;
printf("%lu\n", sum);
return (0);
}
102-fibonacci.c
#include <stdio.h>
/**
* main - prints the first 50 Fibonacci numbers, starting with 1 and 2
* followed by a new line
* Return: Always 0 (Success)
*/
int main(void)
{
long int i, j, k, next;
j = 1;
k = 2;
for (i = 1; i <= 50; ++i)
{
if (j != 20365011074)
{
printf("%ld, ", j);
} else
{
printf("%ld\n", j);
}
next = j + k;
j = k;
k = next;
}
return (0);
}
103-fibonacci.c
#include <stdio.h>
/**
* main - finds and prints the sum of the even-valued terms
* followed by a new line
* Return: Always 0 (Success)
*/
int main(void)
{
int i;
unsigned long int j, k, next, sum;
j = 1;
k = 2;
sum = 0;
for (i = 1; i <= 33; ++i)
{
if (j < 4000000 && (j % 2) == 0)
{
sum = sum + j;
}
next = j + k;
j = k;
k = next;
}
printf("%lu\n", sum);
return (0);
}
104-fibonacci.c
#include <stdio.h>
/**
* main - finds and prints the first 98 Fibonacci numbers,
* starting with 1 and 2
* followed by a new line
* Return: ALways 0 (Success)
*/
int main(void)
{
unsigned long int i, j, k, j1, j2, k1, k2;
j = 1;
k = 2;
printf("%lu", j);
for (i = 1; i < 91; i++)
{
printf(", %lu", k);
k = k + j;
j = k - j;
}
j1 = j / 1000000000;
j2 = j % 1000000000;
k1 = k / 1000000000;
k2 = k % 1000000000;
for (i = 92; i < 99; ++i)
{
printf(", %lu", k1 + (k2 / 1000000000));
printf("%lu", k2 % 1000000000);
k1 = k1 + j1;
j1 = k1 - j1;
k2 = k2 + j2;
j2 = k2 - j2;
}
printf("\n");
return (0);
}
README.md
Always make this file. Just
echo 'project description' > README.md
NB: Do you know you can git commit all your files and push at once?
To make that happen, complete each code and git add, then git commit. and move to the next one.
Just to be sure your codes are running, you can compile the file using make filename without the .c extension and run with ./filename.c
or you ca use
gcc -Wall -Werror -Wextra -pedantic -std=gnu89 filename.c
to compile the program and run ./filename.c
#Leave comments below if you have any questions.
#Share this if you find it useful.