P
PrimatYarik
Задача состоит в том, чтоб пользователь ввел английский алфавит с клавиатуры, программа должна разделить на гласные и согласные.
После чего Сортировать оба списка по алфавиту и вывести на екран. У меня все работает кроме одного пункта: Если повторить сортировку 2 раза то все правильно, но вот если один - сортирует массив весь кроме первого елемента Почему неполностью сортирует массив? Вот исходник:
Замечание от модератора OKEN: Дубликат темы - link removed
После чего Сортировать оба списка по алфавиту и вывести на екран. У меня все работает кроме одного пункта: Если повторить сортировку 2 раза то все правильно, но вот если один - сортирует массив весь кроме первого елемента Почему неполностью сортирует массив? Вот исходник:
C++:
#include <conio.h>
#include <iostream>
using namespace std;
char sort(char array[], int col){ //Ф-ция сортировки пузырьком
int i, k, j;
char men, bil; //переменные для большего и менньшего значений
for(i=1, j=0, k=0; k<=col; i++, j++){
if(array[i] < array[j]){
men = array[i];
bil = array[j];
array[j] = men;
array[i] = bil;
}
if(i==col){
k++;
i=1;
j=0;}
}
}
bool isGl(char ch){ //возвращает true если переменная содержит гласную
return (ch == 'a' || ch == 'i' || ch == 'e' || ch == 'o' || ch == 'y' || ch == 'u');
}
bool isSogl(char ch){ //возвращает true если переменная содержит согласную
return (ch == 'b' || ch == 'c' || ch == 'd' || ch == 'f' || ch == 'g' || ch == 'h' || ch == 'j' || ch == 'k' || ch == 'l' || ch == 'm' || ch == 'n' || ch == 'p' || ch == 'q' || ch == 'r' || ch == 's' || ch == 't' || ch == 'v' || ch == 'w' || ch == 'x' || ch == 'z');
}
main(){
char vvod[26]; //массив для ввода
char gl[6]; //массив для гласных
char sgl[20]; //массив для согласных
M1: int i, k=0, j=0, key;
cout<<"Enter english alfavet:\n";
for(i=0; i<=25; i++){
cin>>vvod[i];
}
for(i=0; i<=25; i++){
if(isGl(vvod[i])) {gl[k] = vvod[i]; k++;}
if(isSogl(vvod[i])) {sgl[j] = vvod[i]; j++;}
}
gl[6] = sort(gl, 5);
sgl[20] = sort(sgl, 19);
cout<<"Glasnie:\n";
for(i=0; i<6; i++){
cout<<gl[i]<<"\n";
}
cout<<"Soglasnie:\n";
for(i=0; i<20; i++){
cout<<sgl[i]<<"\n";
}
getch();
}