Вывести текст пословно в порядке возрастания количества гласных букв - C (СИ)
Формулировка задачи:
Ввести строку. Вывести пословно в порядке возрастания количества
гласных букв.
вот собственно код,но с ошибкой,кто-нибудь,помогите исправить)))
Листинг программы
- #define N 50
- #include <stdio.h>
- int NGlSimb(int mas[N][N], int m)
- {
- int i,c=0;
- for(i=0;mas[i][m]!='\0';i++)
- if ((mas[i][m]=='a') || (mas[i][m]=='e'))
- c++;
- return c;
- }
- void ChngW(int mas[N][N], int n, int m)
- {
- int i=0,j=0;
- int c;
- for (i=0;i<N;i++)
- {
- c=mas[i][m];
- mas[i][m]=mas[i][n];
- mas[i][n]=c;
- }
- }
- void main()
- {
- int mas[N][N],i=0,n,j=0;
- while ((mas[i][j]=getchar())!='\n')
- {
- if (mas[i][j]==' ')
- {
- mas[i][j]='\0';
- i=0;
- j++;
- }
- else
- i++;
- }
- mas[i][j]='\0';
- n=j;
- for (i=0 ; i<n ; i++)
- {
- for (j=i+1 ; j<=n ; j++)
- {
- if (NGlSimb(mas,i)>NGlSimb(mas,j))
- ChngW(mas,i,j);
- }
- }
- for (j=0;j<=n;j++)
- {
- for (i=0;mas[i][j]!='\0';i++)
- {
- putchar(mas[i][j]);
- }
- putchar('\n');
- }
- }
Решение задачи: «Вывести текст пословно в порядке возрастания количества гласных букв»
textual
Листинг программы
- int newstrcmp(const char *s1, const char *s2)
- {
- while (*s1 != '\0' && *s1 == *s2) {
- s1++;
- s2++;
- }
- return *s1 - *s2;
- }
Объяснение кода листинга программы
Ниже представлен список с пояснениями к каждому элементу:
- int newstrcmp(const char s1, const char s2) - это функция, которая принимает два указателя на строки (
s1
иs2
) и возвращает разницу между первым символом вs1
и первым символом вs2
(если они не равны). Если символы равны, то функция продолжает сравнивать следующие символы до тех пор, пока не найдет различие или не достигнет конца строки. while (*s1 != '\0' && *s1 == *s2) {
- это цикл, который продолжается, пока*s1
не станет равным нулю (т.е. не достигнет конца строкиs1
) и при этом*s1
будет равен*s2
(т.е. текущие символы вs1
иs2
будут равны).s1++;
иs2++;
- это операторы инкремента, которые увеличивают указателиs1
иs2
на единицу, чтобы перейти к следующим символам в строках.return *s1 - *s2;
- это оператор, который возвращает разницу между первым символом вs1
и первым символом вs2
. Эта разница будет использована в качестве результата функции. В итоге, функцияnewstrcmp
сравнивает строки, игнорируя регистр символов, и возвращает отрицательное значение, если первая строка идет перед второй, положительное значение, если первая строка идет после второй, и ноль, если строки идентичны.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д