Вывести текст пословно в порядке возрастания количества гласных букв - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ввести строку. Вывести пословно в порядке возрастания количества гласных букв.
вот собственно код,но с ошибкой,кто-нибудь,помогите исправить)))
Листинг программы
  1. #define N 50
  2. #include <stdio.h>
  3. int NGlSimb(int mas[N][N], int m)
  4. {
  5. int i,c=0;
  6. for(i=0;mas[i][m]!='\0';i++)
  7. if ((mas[i][m]=='a') || (mas[i][m]=='e'))
  8. c++;
  9. return c;
  10. }
  11. void ChngW(int mas[N][N], int n, int m)
  12. {
  13. int i=0,j=0;
  14. int c;
  15. for (i=0;i<N;i++)
  16. {
  17. c=mas[i][m];
  18. mas[i][m]=mas[i][n];
  19. mas[i][n]=c;
  20. }
  21. }
  22. void main()
  23. {
  24. int mas[N][N],i=0,n,j=0;
  25. while ((mas[i][j]=getchar())!='\n')
  26. {
  27. if (mas[i][j]==' ')
  28. {
  29. mas[i][j]='\0';
  30. i=0;
  31. j++;
  32. }
  33. else
  34. i++;
  35. }
  36. mas[i][j]='\0';
  37. n=j;
  38. for (i=0 ; i<n ; i++)
  39. {
  40. for (j=i+1 ; j<=n ; j++)
  41. {
  42. if (NGlSimb(mas,i)>NGlSimb(mas,j))
  43. ChngW(mas,i,j);
  44. }
  45. }
  46. for (j=0;j<=n;j++)
  47. {
  48. for (i=0;mas[i][j]!='\0';i++)
  49. {
  50. putchar(mas[i][j]);
  51. }
  52. putchar('\n');
  53. }
  54. }

Решение задачи: «Вывести текст пословно в порядке возрастания количества гласных букв»

textual
Листинг программы
  1. int newstrcmp(const char *s1, const char *s2)
  2. {
  3.     while (*s1 != '\0' && *s1 == *s2) {
  4.         s1++;
  5.         s2++;
  6.     }
  7.     return *s1 - *s2;
  8. }

Объяснение кода листинга программы

Ниже представлен список с пояснениями к каждому элементу:

  1. int newstrcmp(const char s1, const char s2) - это функция, которая принимает два указателя на строки (s1 и s2) и возвращает разницу между первым символом в s1 и первым символом в s2 (если они не равны). Если символы равны, то функция продолжает сравнивать следующие символы до тех пор, пока не найдет различие или не достигнет конца строки.
  2. while (*s1 != '\0' && *s1 == *s2) { - это цикл, который продолжается, пока *s1 не станет равным нулю (т.е. не достигнет конца строки s1) и при этом *s1 будет равен *s2 (т.е. текущие символы в s1 и s2 будут равны).
  3. s1++; и s2++; - это операторы инкремента, которые увеличивают указатели s1 и s2 на единицу, чтобы перейти к следующим символам в строках.
  4. return *s1 - *s2; - это оператор, который возвращает разницу между первым символом в s1 и первым символом в s2. Эта разница будет использована в качестве результата функции. В итоге, функция newstrcmp сравнивает строки, игнорируя регистр символов, и возвращает отрицательное значение, если первая строка идет перед второй, положительное значение, если первая строка идет после второй, и ноль, если строки идентичны.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы