Сортировка букв в тексте в алфавитном порядке - 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;
}

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

  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
Похожие ответы