Сортировка букв в тексте в алфавитном порядке - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Нужна ваша помощь с исправлением программы. Программа должна выводить слова в алфавитном порядке. Но нужно, чтобы буквы при отображении не повторялись и нужно чтобы каждая буква выводилась с новой строки. Вот код: Код:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. char a[40],t;
  7. int i,j;
  8. printf("\n Vvedite slovo :- ");
  9. scanf("%s",a);
  10. for(i=0;a[i]!='\0';i++)
  11. {
  12. for(j=i+1;a[j]!='\0';j++)
  13. {
  14. if (a[i]>a[j])
  15. {
  16. t=a[i];
  17. a[i]=a[j];
  18. a[j]=t;
  19. }
  20. }
  21. }
  22. printf("Slovo v alfavitnom poriadke:- %s\n",a);
  23. system("pause");
  24. return 0;
  25. }
Если кто поможет, буду очень благодарен....

Решение задачи: «Сортировка букв в тексте в алфавитном порядке»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. char **skaityti (char *s)
  5. {
  6. FILE  *Failas;
  7. char **A1;
  8.  
  9.     if ( (Failas = fopen( "skaityk.txt", "r" )) == NULL )
  10.     {      
  11.         printf("Fajl ne najden.");
  12.         exit(1);
  13.         }
  14.     else
  15.     {
  16.         fscanf(Failas,"%s\n", s);
  17.         A1 = (char**) malloc(*s * sizeof(char*));  
  18.         printf("Vvedennyje simvoli:\n");
  19.         printf("%s\n", s);
  20.     }
  21.     fclose(Failas);
  22.     return (char**) A1;
  23. }
  24. void irasyti (char **A1, char s)
  25. {
  26.  FILE *F;    
  27.     if ((F = fopen( "rezultatas.txt", "w" )) == NULL )
  28.     {      
  29.         printf("Ne udalos sozdat fail rezultata");
  30.         exit(1);
  31.     }
  32.     printf(F,"Tekst v alfavitnom poriadke: %s",s);    
  33.     fclose(F);
  34. }
  35.  
  36. char **rusiavimas (char **A, char s)
  37. {
  38.     int **ptr;
  39.     while ( printf("Word: ") && scanf("%63s", s) == 1 ) {
  40.         int cnt[256] = { 0 }, ptr;
  41.         for ( ptr = 0; s[ptr]; ++ptr )
  42.             cnt[s[ptr]]++;
  43.         for ( ptr = 0; ptr < 256; ++ptr )
  44.             if ( cnt[ptr] )
  45.                 printf("%c\n", ptr);
  46.     }
  47.    
  48.     return (char**) ptr;
  49. }  
  50.    
  51. int main()
  52. {
  53.     char **Mat1, s;
  54.     Mat1 = (char**) skaityti(&s);
  55.     Mat1 = rusiavimas(Mat1,s);
  56.     irasyti(Mat1,s);
  57.     free(Mat1);
  58.     system("pause");
  59.     return 0;
  60. }

Объяснение кода листинга программы

  1. В функции skaityti открывается файл skaityk.txt для чтения.
  2. Если файл не может быть открыт, выводится сообщение об ошибке и программа завершается.
  3. Если файл успешно открыт, из него считывается строка в переменную s.
  4. Выделяется память под массив указателей на строки, размер которого равен длине строки s.
  5. Выводится сообщение о введенных символах и их количестве.
  6. В функции irasyti открывается файл rezultatas.txt для записи.
  7. Если файл не может быть открыт, выводится сообщение об ошибке и программа завершается.
  8. В файл rezultatas.txt записывается строка s в алфавитном порядке.
  9. В функции rusiavimas считываются слова из стандартного ввода до тех пор, пока не будет введено пустое слово.
  10. Для каждого символа в слове подсчитывается количество его вхождений в строку s.
  11. Выводится количество вхождений каждого символа.
  12. В функции main считываются слова из файла skaityk.txt.
  13. Результат сортировки записывается в файл rezultatas.txt.
  14. Программа ожидает нажатия клавиши для завершения работы.
  15. Выделяется память под массив указателей на строки Mat1 и освобождается после использования.
  16. В функции main не происходит возврата значения, поэтому возвращаем 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы