Сортировка букв в тексте в алфавитном порядке - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д