repeat_alfa.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /* Assignment name : repeat_alpha
  2. Expected files : repeat_alpha.c
  3. Allowed functions: write
  4. --------------------------------------------------------------------------------
  5. Напишите программу с именем repeat_alpha, которая берет строку и отображает ее,
  6. повторяя каждый алфавитный символ столько раз, сколько его алфавитный указатель,
  7. за которым следует новая строка.
  8. 'a' становится 'a', 'b' становится 'bb', 'e' становится 'eeeee', и так далее...
  9. Если количество аргументов не равно 1, просто отобразите новую строку.
  10. Примеры:
  11. $>./repeat_alpha "abc"
  12. abbccc
  13. $>./repeat_alpha "Alex." | cat -e
  14. Alllllllllllleeeeexxxxxxxxxxxxxxxxxxxxxxxx.$
  15. $>./repeat_alpha 'abacadaba 42!' | cat -e
  16. abbacccaddddabba 42!$
  17. $>./repeat_alpha | cat -e
  18. $
  19. $>
  20. $>./repeat_alpha "" | cat -e
  21. $
  22. $> */
  23. #include <unistd.h>
  24. int ft_count(char c)
  25. {
  26. int count;
  27. if (c >= 'A' && c <= 'Z')
  28. count = c - 'A' + 1;
  29. else if (c >= 'a' && c <= 'z')
  30. count = c - 'a' + 1;
  31. else
  32. count = 1;
  33. return (count);
  34. }
  35. int main(int argc, char **argv)
  36. {
  37. (void) *argv;
  38. int count;
  39. int i;
  40. i = 0;
  41. if (argc == 2)
  42. {
  43. while (argv[1][i] != '\0')
  44. {
  45. count = ft_count(argv[1][i]);
  46. while (count > 0)
  47. {
  48. write(1, &argv[1][i], 1);
  49. count--;
  50. }
  51. i++;
  52. }
  53. write(1, "\n", 1);
  54. }
  55. else
  56. write(1, "\n", 1);
  57. }