Skip to content

Instantly share code, notes, and snippets.

@dlupaescu
Last active August 29, 2015 14:28
Show Gist options
  • Save dlupaescu/59700a5e632a138337be to your computer and use it in GitHub Desktop.
Save dlupaescu/59700a5e632a138337be to your computer and use it in GitHub Desktop.
Level: 3 | hidenp.c | str_capitalizer.c
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* 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
$
$>
*/
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* 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