Вывести текст пословно в порядке возрастания количества гласных букв - 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сравнивает строки, игнорируя регистр символов, и возвращает отрицательное значение, если первая строка идет перед второй, положительное значение, если первая строка идет после второй, и ноль, если строки идентичны.