Сортировка букв в тексте в алфавитном порядке - C (СИ)
Формулировка задачи:
Добрый день. Нужна ваша помощь с исправлением программы. Программа должна выводить слова в алфавитном порядке. Но нужно, чтобы буквы при отображении не повторялись и нужно чтобы каждая буква выводилась с новой строки. Вот код:
Код:
Если кто поможет, буду очень благодарен....
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main()
- {
- char a[40],t;
- int i,j;
- printf("\n Vvedite slovo :- ");
- scanf("%s",a);
- for(i=0;a[i]!='\0';i++)
- {
- for(j=i+1;a[j]!='\0';j++)
- {
- if (a[i]>a[j])
- {
- t=a[i];
- a[i]=a[j];
- a[j]=t;
- }
- }
- }
- printf("Slovo v alfavitnom poriadke:- %s\n",a);
- system("pause");
- return 0;
- }
Решение задачи: «Сортировка букв в тексте в алфавитном порядке»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- char **skaityti (char *s)
- {
- FILE *Failas;
- char **A1;
- if ( (Failas = fopen( "skaityk.txt", "r" )) == NULL )
- {
- printf("Fajl ne najden.");
- exit(1);
- }
- else
- {
- fscanf(Failas,"%s\n", s);
- A1 = (char**) malloc(*s * sizeof(char*));
- printf("Vvedennyje simvoli:\n");
- printf("%s\n", s);
- }
- fclose(Failas);
- return (char**) A1;
- }
- void irasyti (char **A1, char s)
- {
- FILE *F;
- if ((F = fopen( "rezultatas.txt", "w" )) == NULL )
- {
- printf("Ne udalos sozdat fail rezultata");
- exit(1);
- }
- printf(F,"Tekst v alfavitnom poriadke: %s",s);
- fclose(F);
- }
- char **rusiavimas (char **A, char s)
- {
- int **ptr;
- while ( printf("Word: ") && scanf("%63s", s) == 1 ) {
- int cnt[256] = { 0 }, ptr;
- for ( ptr = 0; s[ptr]; ++ptr )
- cnt[s[ptr]]++;
- for ( ptr = 0; ptr < 256; ++ptr )
- if ( cnt[ptr] )
- printf("%c\n", ptr);
- }
- return (char**) ptr;
- }
- int main()
- {
- char **Mat1, s;
- Mat1 = (char**) skaityti(&s);
- Mat1 = rusiavimas(Mat1,s);
- irasyti(Mat1,s);
- free(Mat1);
- system("pause");
- return 0;
- }
Объяснение кода листинга программы
- В функции
skaityti
открывается файлskaityk.txt
для чтения. - Если файл не может быть открыт, выводится сообщение об ошибке и программа завершается.
- Если файл успешно открыт, из него считывается строка в переменную
s
. - Выделяется память под массив указателей на строки, размер которого равен длине строки
s
. - Выводится сообщение о введенных символах и их количестве.
- В функции
irasyti
открывается файлrezultatas.txt
для записи. - Если файл не может быть открыт, выводится сообщение об ошибке и программа завершается.
- В файл
rezultatas.txt
записывается строкаs
в алфавитном порядке. - В функции
rusiavimas
считываются слова из стандартного ввода до тех пор, пока не будет введено пустое слово. - Для каждого символа в слове подсчитывается количество его вхождений в строку
s
. - Выводится количество вхождений каждого символа.
- В функции
main
считываются слова из файлаskaityk.txt
. - Результат сортировки записывается в файл
rezultatas.txt
. - Программа ожидает нажатия клавиши для завершения работы.
- Выделяется память под массив указателей на строки
Mat1
и освобождается после использования. - В функции
main
не происходит возврата значения, поэтому возвращаем 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д