Last active
August 29, 2015 14:28
-
-
Save dlupaescu/59700a5e632a138337be to your computer and use it in GitHub Desktop.
Level: 3 | hidenp.c | str_capitalizer.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* ************************************************************************** */ | |
/* */ | |
/* ::: :::::::: */ | |
/* hidenp.c :+: :+: :+: */ | |
/* +:+ +:+ +:+ */ | |
/* By: exam <marvin@42.fr> +#+ +:+ +#+ */ | |
/* +#+#+#+#+#+ +#+ */ | |
/* Created: 2015/08/21 18:44:11 by exam #+# #+# */ | |
/* Updated: 2015/08/21 19:19:57 by exam ### ########.fr */ | |
/* */ | |
/* ************************************************************************** */ | |
#include <unistd.h> | |
int ft_strlen(char *str) | |
{ | |
int len; | |
len = 0; | |
while (str[len]) | |
len++; | |
return (len); | |
} | |
int ft_strstr(char *s1, char *s2) | |
{ | |
int i; | |
int j; | |
i = 0; | |
j = 0; | |
while (s2[i]) | |
{ | |
if (s2[i] == s1[j]) | |
j++; | |
i++; | |
} | |
if (j == ft_strlen(s1)) | |
return (1); | |
return (0); | |
} | |
int main(int argc, char **argv) | |
{ | |
char c; | |
char c1; | |
c = '1'; | |
c1 = '0'; | |
if (argc != 3) | |
{ | |
write(1, "\n", 1); | |
return (0); | |
} | |
if (ft_strstr(argv[1], argv[2])) | |
{ | |
write(1, &c, 1); | |
write(1, "\n", 1); | |
} | |
else | |
{ | |
write(1, &c1, 1); | |
write(1, "\n", 1); | |
} | |
return (0); | |
} | |
/* | |
Exercitiu : hidenp | |
Fisiere de iesire : hidenp.c | |
Functii autorizae : write | |
-------------------------------------------------------------------------------- | |
Scrieti un program numit hidenp ce ia ca parametru doua siruri de caractere si | |
care afiseaza 1 urmat de '\n' daca primul sir este inclus in cel de-al doilea. | |
In caz contrar se va afisa 0 urmat de '\n'. | |
Fie s1 si s2 doua siruri de caractere. Spunem ca sirul s1 este inclus in sirul | |
s2 daca putem gasi fiecare caracter al sirului s1 in s2 si acestea sa fie in | |
aceeasi ordine ca in sirul s1. Mai mult, sirul vid este inclus in orice sir. | |
Daca numarul de parametri transmis este diferit de 2, programul vaafisa '\n'. | |
Exemple : | |
$>./hidenp "fgex.;" "tyf34gdgf;'ektufjhgdgex.;.;rtjynur6" | cat -e | |
1$ | |
$>./hidenp "abc" "2altrb53c.sse" | cat -e | |
1$ | |
$>./hidenp "abc" "btarc" | cat -e | |
0$ | |
$>./hidenp | cat -e | |
$ | |
$> | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* ************************************************************************** */ | |
/* */ | |
/* ::: :::::::: */ | |
/* str_capitalizer.c :+: :+: :+: */ | |
/* +:+ +:+ +:+ */ | |
/* By: exam <marvin@42.fr> +#+ +:+ +#+ */ | |
/* +#+#+#+#+#+ +#+ */ | |
/* Created: 2015/08/21 18:07:07 by exam #+# #+# */ | |
/* Updated: 2015/08/21 19:46:16 by exam ### ########.fr */ | |
/* */ | |
/* ************************************************************************** */ | |
#include <unistd.h> | |
void ft_putchar(char c) | |
{ | |
write(1, &c, 1); | |
} | |
int ft_lit(char **argv, int i, int j) | |
{ | |
if ((argv[i][j] >= 'a') && (argv[i][j] <= 'z')) | |
return (0); | |
if ((argv[i][j] >= 'A') && (argv[i][j] <= 'Z')) | |
return (0); | |
return (1); | |
} | |
void ft_int_word(char **argv, int i, int j) | |
{ | |
if ((argv[i][j] >= 'a') && (argv[i][j] <= 'z')) | |
ft_putchar(argv[i][j]); | |
else if ((argv[i][j] >= 'A') && (argv[i][j] <= 'Z')) | |
ft_putchar(argv[i][j] + 32); | |
else if (argv[i][j] != ' ') | |
ft_putchar(argv[i][j]); | |
} | |
int ft_print_word(char **argv, int i, int j) | |
{ | |
if (((argv[i][j] >= 'a') && (argv[i][j] <= 'z') | |
&& (argv[i][j - 1] == ' ')) || ((j == 0) | |
&& (argv[i][j] >= 'a') && (argv[i][j] <= 'z'))) | |
{ | |
ft_putchar(argv[i][j] - 32); | |
j++; | |
} | |
else if (((argv[i][j] >= 'A') && (argv[i][j] <= 'Z') | |
&& (argv[i][j - 1] == ' ')) || ((j == 0) | |
&& (argv[i][j] >= 'A') && (argv[i][j] <= 'Z'))) | |
{ | |
ft_putchar(argv[i][j]); | |
j++; | |
} | |
while (!(ft_lit(argv, i, j))) | |
{ | |
ft_int_word(argv, i, j); | |
j++; | |
} | |
return (j); | |
} | |
int main(int argc, char **argv) | |
{ | |
int i; | |
int j; | |
i = 1; | |
while (argv[i]) | |
{ | |
j = 0; | |
while (argv[i][j]) | |
{ | |
if (ft_lit(argv, i, j)) | |
{ | |
ft_putchar(argv[i][j]); | |
j++; | |
} | |
else | |
j = ft_print_word(argv, i, j); | |
} | |
i++; | |
ft_putchar('\n'); | |
} | |
if (argc == 1) | |
ft_putchar('\n'); | |
return (0); | |
} | |
/* | |
Exercitiu : str_capitalizer | |
Fisiere de iesire : str_capitalizer.c | |
Functii autorizate : write | |
-------------------------------------------------------------------------------- | |
Scrieti un program ce ia ca parametru unul sau mai multe siruri de caractere si | |
care pentru fiecare argument transforma primul caracter al fiecarui cuvant (daca | |
e vorba de o litera, evident) in majuscule iar restul cuvantului il transforma | |
in minuscule si afiseaza resultatul la iesirea standard, urmat de '\n'. | |
Numim "cuvant" o portiune dintrun sir de caractere delimitat fie de spatii si/sau | |
tabulatoare, fie de inceputul/sfarsitul sirului. Daca un cuvant este compus dintr-o | |
singura litera, ea va trebui transformata in majuscula. | |
Daca nu exista nici un parametru, programul va afisa '\n'. | |
Exemplu: | |
$> ./str_capitalizer | cat -e | |
$ | |
$> ./str_capitalizer "Premier PETIT TesT" | cat -e | |
Premier Petit Test$ | |
$> ./str_capitalizer "DeuxiEmE tEST uN PEU moinS facile" " attention C'EST pas dur QUAND mEmE" "ALLer UN DeRNier 0123456789pour LA rouTE E " | cat -e | |
Deuxieme Test Un Peu Moins Facile$ | |
Attention C'est Pas Dur Quand Meme$ | |
Aller Un Dernier 0123456789pour La Route E $ | |
$> | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment