Вывести на экран слова, отличающиеся лишь порядком следования букв - C (СИ)

  1. Всем здрасте! Заранее спасибо, если Вы даже просто подумали над моей проблемкой. В общем, к делу. Задача была таковой: Дана строка (неизвестной длины) - вывести на экран слова (из данной строки), которые отличаются лишь порядком следования букв (мама - амма - амам и т.д.). Я долго бился над решением и решил, что это можно сделать следующим образом: разделить строку на слова, в каждом слове буквы свести к одному регистру и отсортировать в алфавитном порядке(написал для этого функцию). Затем каждое слово сравнить таким образом с остальными и, как только найдется "пара" - вывести на экран. Вот мое скудное (наверняка некрасивое), но творение: Кликните здесь для просмотра всего текста C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 #include <locale> #include <stdio.h> #include <stddef.h> #include <cstdio> #include <conio.h> #include <iostream> #include <string.h>   #define maxn 10000   char S[maxn], *NewWord, **Words; int i,f,N, WBeg,WEnd,WLeng, Numb, col, row, z;     char *expansion (char *Word) {char *FuncAr; char C; int j;                                 j=0;                                 while (Word[j]!='\0') j++;                                 FuncAr=(char*)calloc(j, sizeof (char));                                   for (int k = 0;k<=j;k++) FuncAr[k]=Word[k];                                 FuncAr=strlwr(FuncAr);                                 j=1;                                 while (j=1) {                                     j=0;                                 for (int k=1; k<=i;k++) { if (FuncAr[k]<FuncAr[k-1]) {j=1;                                                         C=FuncAr[k];                                                         FuncAr[k]=FuncAr[k-1];                                                         FuncAr[k-1]= C;}}}                                 puts (FuncAr);                                 return FuncAr;                         }   void main () {     setlocale (0,"russian");     do{        printf ("Введите вашу строку!\n");        gets_s (S);        i=0;        N=1;            while (S[i]!='\0' && N==1)        {if ((S[i]!=' ') && ! ((S[i]>='A' && S[i]<='Z') || (S[i]>='a' && S[i]<='z'))) /*|| ((unsigned char)S[i]>=(unsigned char)'А' && (unsigned char)S[i]<=(unsigned char)'я')*/            N=0;         i++;        }                if (N==0) printf ("Ввод некорректен. Попробуйте заново\n");               }while (N==0);     N=i;     i=0;          Words = (char**)calloc(N, sizeof(*Words));      Numb=1;       while (i<=N)     {      while (S[i]==' ') i++;      WBeg=i;      while (S[i]!=' ') i++;      WEnd=i;        WLeng=WEnd-WBeg;          Words[Numb]=(char*)calloc(WLeng, sizeof(char));        for (int k = 0, i=WBeg;i<=WEnd; i++, k++) {          Words[Numb][k]=S[i];}      Numb++;        printf ("Слово № %d :\n", Numb);      puts (Words[Numb]);      printf ("\n\n");     }     printf ("Результат:\n");       row=1;     while (row<=Numb) {         for (i=0;i<=Numb;i++) {if (strcmp(expansion(Words[row]),expansion(Words[i]))) puts(Words[row]);}         row++;} free (Words); system ("pause"); } Прошу прощения за такое большое количество переменных, не обессудьте. У меня здесь две проблемы (ну.. пока те, на которые я наткнулся) - 1)Не распознает слова = не выводит их на экран по отдельности (Выдает ошибку, вида "бла-бла-бла, адрес программы. Строка 49. Выражение (string !=NULL). бла-бла-бла") 2) Какая-то глупая ошибка в функции сортировки слова (или не глупая... я ее, в общем, найти не могу).. Прошу помощи, если вам не трудно) Я писал пока только для латинских букв.. и в строке не может быть ничего, окромя латинских букв и пробелов.. Потом, как с вашей божьей помощью разберусь с тем, что здесь неверно, пойду разбираться с русскими буквами и знаками препинания. Еще раз спасибо за внимание!


textual

Код к задаче: «Вывести на экран слова, отличающиеся лишь порядком следования букв - C (СИ)»

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
//создаем массив из слов введенной строки
char **CreateArray(char line[], int len, int *cnt) {
    int i = -1;
    int count = 0;
    char *buf = (char*) malloc(strlen(line) + 1); //копия исходной строки, уничтожается в процессе подсчета слов
    strcpy(buf, line);
 
    char *delims = " ,.-\n";
    char *word = strtok(buf, delims);
    while (word != NULL) {
        ++count;                                  //считаем фактическое кво слов
        word = strtok(NULL, delims);
    }
    free(buf);
    *cnt = count;
    char **words = (char**) malloc(count * sizeof(char*)); //выделяем память под count слов длиной len
    while (++i < count)
        words[i] = (char*) malloc(len);
 
    word = strtok(line, delims); //заполняем массив словами из строки
    i = -1;
    while (word != NULL) {
        strcpy(words[++i], word);
        word = strtok(NULL, delims);
    }
    return words;
}
 
//печать массива слов
void ShowArray(char **words, int count) {
    int i = -1;
    while (++i < count)
        printf("%s\n", words[i]);
}
 
//копия массива слов
char **CopyArray(char **words, int count) {
    int i = -1;
    char **copy = (char**) malloc(count * sizeof(char*));
    while (++i < count) {
        copy[i] = (char*) malloc(strlen(words[i]) + 1);
        strcpy(copy[i], words[i]);
    }
    return copy;
}
 
//очистка памяти
void DestroyArray(char **words, int count) {
    while (--count > -1)
        free(words[count]);
    free(words);
}
 
//своп двух букв для сортировки по алфавиту
void Swap(char *a, char *b) {
    char t = *a;
    *a = *b;
    *b = t;
}
 
//сортировка слова по алфавиту
void SortLetters(char *word) {
    int i, j, len = strlen(word);
    for (i = 0; i < len - 1; i++)
        for (j = i + 1; j < len; j++)
            if (word[j] < word[i])
                Swap(&word[i], &word[j]);
}
 
//собственно, решение задачи
void FindBros(char **words, int count) {
    int i, j;
 
    char **copy = CopyArray(words, count);          //создаем копию массива слов
    for (i = 0; i < count; i++)
        SortLetters(copy[i]); //в каждом слове переставляем все буквы по алфавиту
 
    int *mask = (int*) malloc(count * sizeof(int)); //маска: слово уже было найдено как "двойник по буквам" или нет
    for (i = 0; i < count; i++)
        mask[i] = 0;                                    //сначала - все 0
 
    for (i = 0; i < count - 1; i++) {
        if (!mask[i])        //если i-ое слово еще не было "двойником по буквам"
        {
            printf("\n%20s: ", words[i]);
            for (j = i + 1; j < count; j++)
                if (strcmp(copy[i], copy[j]) == 0) //сравниваем i-ую и j-ую копию, т.е. буквенный состав слов words[i] и words[j]
                        {
                    printf("%20s ", words[j]); //если буквенный состав совпал - выводим words[j]
                    mask[j] = 1; //в маске помечаем j-ое слово как уже найденное в качестве "двойника"
                }
        }
    }
 
    DestroyArray(copy, count);
    free(mask);
}
 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main() {
    char str[BUFSIZ];
    int len = 20, count = 0;
    printf("Your string:\n");
 
    fgets(str, BUFSIZ, stdin);
 
    char **words = CreateArray(str, len, &count);
    printf("\n\nYour words:\n");
    ShowArray(words, count);
 
    printf("\n\nWords with the same set of letters:\n");
    FindBros(words, count);
 
    DestroyArray(words, count);
    getchar();
    return 0;
}

СДЕЛАЙТЕ РЕПОСТ

14   голосов, оценка 4.000 из 5



Похожие ответы
  1. Дорогие знатоки, проблема следующая: при выводе строки на экран появляется символ переноса строки появление которого моему уму не постижимо (в программировании слабоват). Надеюсь на вашу помощь) Собственно проблема на скрине.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 #include #include #include #include #include   #define N 3   char predmet1[20]; char predmet2[20]; char predmet3[20];   char shif_stud[] = "Шифр студента"; char shif_grup[] = "Шифр группы"; char FIO[] = "Ф.И.О. студента"; char sred[] = "Средний балл";   float alg_1(float a, float b, float c) //Вычесление среднего балла студента {     float res = (a + b + c)/3;     return res; }   struct student {       int shif_stud; //Шифр студента     char FIO[20];     int shif_grup; //Шифр Группы     float ocenka1;     float ocenka2;     float ocenka3;     float sred; //Средний балл студента } stud[N];   int main(void) {     SetConsoleCP(1251);     SetConsoleOutputCP(1251);     setlocale(LC_ALL, "rus");     int i, vibor1, vibor2;     printf("Пожалуйста, введите дисциплины обучения студентов (предметы):\n");     printf("Введите название 1 - ого предмета (до 20-ти знаков):");     gets (predmet1);     printf("Введите название 2 - ого предмета (до 20-ти знаков):");     gets (predmet2);     printf("Введите название 3 - ого предмета (до 20-ти знаков):");     gets (predmet3);     printf("Как вы хотите получить информацию о студентах?\n");     printf("1. - Из файла\n");     printf("2. - Вручную\n");     scanf("%d", &vibor1);     FILE *fp;     switch (vibor1)     {         case 1:         fp = fopen("K16-1.txt", "r");         if((fp = fopen("K16-1.txt", "r")) == NULL)         {             printf("ОШИБКА! Файла не существует!\n");             printf("Пожалуйста, введите информацию:\n");         }         else         {             for(i = 0; i < N; i++)             {             fgets(stud[i].FIO, 19, fp);             fscanf(fp, "%d\n", &stud[i].shif_stud);             fscanf(fp, "%d\n", &stud[i].shif_grup);             fscanf(fp, "%f\n", &stud[i].ocenka1);             fscanf(fp, "%f\n", &stud[i].ocenka2);             fscanf(fp, "%f\n", &stud[i].ocenka3);             fscanf(fp, "%f\n", &stud[i].sred);             }         fclose(fp);         break;          }     case 2:         fp = fopen("K16-1.txt", "w");         for (i = 1; i < N; i++)         {             printf("Введите Ф.И.О. %d-го студента (до 20-ти знаков):\n", i);             fflush(stdin);             fgets(stud[i].FIO, 20, stdin);             fputs(stud[i].FIO, fp);             printf("Введите шифр %d-го студента (6 знаков):\n", i);             scanf("%d", &stud[i].shif_stud);             fprintf(fp, "%d\n", stud[i].shif_stud);             printf("Введите шифр группы %d-го студента (6 знаков):", i);             scanf("%d", &stud[i].shif_grup);             fprintf(fp, "%d\n", stud[i].shif_grup);             printf("Введите оценку студента по дисциплине %s (1 знак):", predmet1);             scanf("%f", &stud[i].ocenka1);             fprintf(fp, "%f\n", stud[i].ocenka1);             printf("Введите оценку студента по дисциплине %s (1 знак):", predmet2);             scanf("%f", &stud[i].ocenka2);             fprintf(fp, "%f\n", stud[i].ocenka2);             printf("Введите оценку студента по дисциплине %s (1 знак):", predmet3);             scanf("%f", &stud[i].ocenka3);             fprintf(fp, "%f\n", stud[i].ocenka3);             stud[i].sred = alg_1(stud[i].ocenka1, stud[i].ocenka2, stud[i].ocenka3);             fprintf(fp, "%f\n", stud[i].sred);         }         fclose(fp);         break;     }       system("cls");     while (vibor2 != 4)     {         printf("_____________________________________________________________________________________________\n");         printf("                        |-----------Меню----------|                                 \n");         printf("                                                                    \n");         printf("                    |  Выберите пожалуйста действие  |                          \n");         printf("                                                                    \n");         printf("            1. - Вывести список студентов, получающих степендию         \n");         printf("            2. - Список студентов, умеющих неудовлетворительные оценки  \n");         printf("            3. - Вывод оценок студента по всем дисциплинам              \n");         printf("            4. - Выход                                                  \n");         printf("_____________________________________________________________________________________________\n");         scanf("%d", &vibor2);         system("cls");         switch (vibor2)         {             case 1:                 printf("%-20s%-20s%-20s%-20s\n", shif_stud, shif_grup, FIO, sred);                 for (i = 0; i < N; i++)                 {                     if (stud[i].sred >= 4)                     {                         printf("%-20d%-20d%-20s%-20f\n", stud[i].shif_stud, stud[i].shif_grup, stud[i].FIO, stud[i].sred);                     }                 }                 getch();                 system("cls");                 break;             case 2:                 printf("%-20s%-20s%-20s%-20s\n", shif_stud, shif_grup, FIO, sred);                 for (i = 0; i < N; i++)                 {                     if (stud[i].sred < 3)                     {                         printf("%-21d%-20d%-20s%-20f\n", stud[i].shif_stud, stud[i].shif_grup, stud[i].FIO, stud[i].sred);                     }                 }                 getch();                 system("cls");                 break;             case 3:                 printf("%-20s%-20s%-20s%-20s%-20s%-20s\n", FIO, shif_grup, shif_stud, predmet1, predmet2, predmet3);                 for (i = 0; i < N; i++)                 {                     printf("%-20s", stud[i].FIO);                     printf("%-20d%-20d%-20f%-20f%-20f\n", stud[i].shif_grup, stud[i].shif_stud, stud[i].ocenka1, stud[i].ocenka2, stud[i].ocenka3);                 }                 getch();                 system("cls");                 break;             case 4:                 printf("До свидания!");                 getch();                 break;             default:                 printf("Неверное действие! Повторите ввод.");                 getch();                 system("cls");                 break;         }     } }

  1. Здравствуйте! Данная "программа" должна обрабатывать числа, расстояние между которыми меньше 5, а также находить среди таких двух чисел самое большее чётное произведение. КОМПИЛИРУЕТСЯ ВСЁ НОРМАЛЬНО, НО ИСПОЛЬНЯТЬ ЭТА ГАДЮКА НИЧО НЕ ХОЧЕТ ИМЕННО В СЛУЧАЕ, КОГДА НА ВХОД ПОСУТПАЕТ БОЛЕЕ 5 ЧИСЕЛ. Т.е. цикл for(i=5;i int main(void) {   char j,c;      int i;      int n;      int a[5];      int x;      int max=-1;           scanf("%d",&n);     for (i=0;i<=4;i++){         scanf("%d",&a[i]);         }     for (i=5;imax )&&  (a[j-1]*a[c]%2 ==0))                     max=a[c]*a[j-1];                                             }                     }                 for (j=0;j<4;j++){             a[j]=a[j+1];         }         a[4]=x;         }      if (max==-1)          printf("-1");     else printf ("%d",max);     getchar();     getchar();     return 0; }Добавлено через 9 минут Тэкс... Счётчик тут должен робить... Тэк... Вывод массива когда у его индекса чото вычитаем тоже работает... Угу... Кажется я как-то выхожу из границ массива, но я в упор не могу разглядеть этого... Так, падажжи еманаДобавлено через 37 секунд лол, разглядеть он не может, у тебя две строки где идут пляски с массивамми, там же очевидно и ошибкаДобавлено через 3 минуты эхх, пойти спать или сожжрать таки хлеб с пащтетом? но тогда изжога будет от паштета с хлебом, я не хочу изжоги, антиацида нет с собой

  1. zss, Спасибо! Скажите, вот хочу что бы он мне выводил данные, фамилии которых начинается на букву В, Г, Д. Он не показывает, подскажете почему?C++ (Qt)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 #include #include #include #include struct TZap { char FIO[30];   double s_b, mat, xum, inf, fiz, gr, god; } Zap; int size = sizeof(TZap); FILE *Fz, *Ft; char File_Zap[] = "zapisi.dat"; char File_Rez[] = "rezult.txt"; void Out(TZap);   int main() { int kod, D_f, i = 0, j, kol;   double s_b, mat, xum, inf, fiz, gr, god; long len; TZap st, *mas_Z; Ft = fopen(File_Rez, "w"); while (true) { puts("\n Create - 1\n Add - 2\n View - 3\n Sort - 4\n EXIT - 0"); scanf("%d", &kod); switch (kod) { case 1: if ((Fz = fopen(File_Zap, "wb")) == NULL) { puts("\n Create ERROR!"); //return; } fclose(Fz); printf("\n Create New File %s !\n", File_Zap); break; case 2: Fz = fopen(File_Zap, "ab"); printf("\n F.I.O. - "); fflush(stdin); gets(Zap.FIO); printf(" God rozdeniya - "); fflush(stdin); scanf("%lf", &Zap.god); printf(" Nomer gruppi - "); scanf("%lf", &Zap.gr); printf(" Fizika - "); scanf("%lf", &Zap.fiz); printf(" Matematika - "); scanf("%lf", &Zap.mat); printf(" Informatika - "); scanf("%lf", &Zap.inf); printf(" Xumuya - "); scanf("%lf", &Zap.xum);   Zap.s_b = (Zap.fiz + Zap.mat + Zap.inf + Zap.xum) / 4;   fwrite(&Zap, size, 1, Fz); fclose(Fz); break; case 3: if ((Fz = fopen(File_Zap, "rb")) == NULL) { puts("\n Open ERROR!"); //return; } // printf("\n\t —-----------------— Informations —-------------------\n"); printf("\n\t FIO , god ,nomer gr, fiz , mat , inf , xum ,sredball\n"); // fprintf(Ft, "\n\t —-----------------— Informations —-------------------"); while (1) { if (!fread(&Zap, size, 1, Fz)) break; Out(Zap); } fclose(Fz); break; case 4: Fz = fopen(File_Zap, "rb"); D_f = fileno(Fz); len = filelength(D_f); kol = len / size; mas_Z = new TZap[kol]; // for (i = 0; i < kol; i++) fread((mas_Z + i), size, 1, Fz); fclose(Fz); printf("\n\t---— S O R T —---\n"); fprintf(Ft, "\n\t---— S O R T —---\n"); for (i = 0; i < kol - 1; i++) if ((mas_Z[i].FIO[0] == 'В') && (mas_Z[i].FIO[0] == 'Г') && (mas_Z[i].FIO[0] == 'Д')) //&& ((mas_Z[i].mat == 8) || (mas_Z[i].mat == 9))) //888 { } for (i = 0; i < kol; i++) Out(mas_Z[i]);   delete[]mas_Z; break; case 0: fclose(Ft); //888 //return; }     } }     void Out(TZap z) { printf("\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); fprintf(Ft, "\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); }Добавлено через 1 минутуQwerty_Wasd, Спасибо! Скажите, вот хочу что бы он мне выводил данные, фамилии которых начинается на букву В, Г, Д. Он не показывает, подскажете почему?C++ (Qt)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 #include #include #include #include struct TZap { char FIO[30];   double s_b, mat, xum, inf, fiz, gr, god; } Zap; int size = sizeof(TZap); FILE *Fz, *Ft; char File_Zap[] = "zapisi.dat"; char File_Rez[] = "rezult.txt"; void Out(TZap);   int main() { int kod, D_f, i = 0, j, kol;   double s_b, mat, xum, inf, fiz, gr, god; long len; TZap st, *mas_Z; Ft = fopen(File_Rez, "w"); while (true) { puts("\n Create - 1\n Add - 2\n View - 3\n Sort - 4\n EXIT - 0"); scanf("%d", &kod); switch (kod) { case 1: if ((Fz = fopen(File_Zap, "wb")) == NULL) { puts("\n Create ERROR!"); //return; } fclose(Fz); printf("\n Create New File %s !\n", File_Zap); break; case 2: Fz = fopen(File_Zap, "ab"); printf("\n F.I.O. - "); fflush(stdin); gets(Zap.FIO); printf(" God rozdeniya - "); fflush(stdin); scanf("%lf", &Zap.god); printf(" Nomer gruppi - "); scanf("%lf", &Zap.gr); printf(" Fizika - "); scanf("%lf", &Zap.fiz); printf(" Matematika - "); scanf("%lf", &Zap.mat); printf(" Informatika - "); scanf("%lf", &Zap.inf); printf(" Xumuya - "); scanf("%lf", &Zap.xum);   Zap.s_b = (Zap.fiz + Zap.mat + Zap.inf + Zap.xum) / 4;   fwrite(&Zap, size, 1, Fz); fclose(Fz); break; case 3: if ((Fz = fopen(File_Zap, "rb")) == NULL) { puts("\n Open ERROR!"); //return; } // printf("\n\t —-----------------— Informations —-------------------\n"); printf("\n\t FIO , god ,nomer gr, fiz , mat , inf , xum ,sredball\n"); // fprintf(Ft, "\n\t —-----------------— Informations —-------------------"); while (1) { if (!fread(&Zap, size, 1, Fz)) break; Out(Zap); } fclose(Fz); break; case 4: Fz = fopen(File_Zap, "rb"); D_f = fileno(Fz); len = filelength(D_f); kol = len / size; mas_Z = new TZap[kol]; // for (i = 0; i < kol; i++) fread((mas_Z + i), size, 1, Fz); fclose(Fz); printf("\n\t---— S O R T —---\n"); fprintf(Ft, "\n\t---— S O R T —---\n"); for (i = 0; i < kol - 1; i++) if ((mas_Z[i].FIO[0] == 'В') && (mas_Z[i].FIO[0] == 'Г') && (mas_Z[i].FIO[0] == 'Д')) //&& ((mas_Z[i].mat == 8) || (mas_Z[i].mat == 9))) //888 { } for (i = 0; i < kol; i++) Out(mas_Z[i]);   delete[]mas_Z; break; case 0: fclose(Ft); //888 //return; }     } }     void Out(TZap z) { printf("\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); fprintf(Ft, "\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); }

  1. Добрый вечер! Дан массив M*N. Необходимо отсортировать ее по строкам так, чтобы вначале шли все положительные элементы, отсортированные по убыванию, а затем все остальные, отсортированные по возрастанию (если в строке имеются нули - переставить их в конец строки). Вывести получившуюся матрицу. У меня проблема с перестановкой нулей. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 #include     int main()     {   int N, M,t, i,j,k, mas[10][10]={0}, q;         printf("VVEDITE N,M \n");     scanf("%d%d", &N,&M);     printf("VVEDITE MASSIV \n");       for (i=0; i < N; i++)        for (j=0; j < M; j++)            scanf ("%d", &mas[i][j]);       for(k = 0; k < N; k++){     for(i = 0 ; i < M; i++){         for(j = i + 1; j < M; j++){               if((mas[k][i] < mas[k][j]) && (mas[k][i]!=0)){                       t = mas[k][i];                     mas[k][i] = mas[k][j];                     mas[k][j] = t;               }         }     } }   if (mas[i][j]<0) {     } {   for(k = 0; k < N; k++){         for(i = 0 ; i < M; i++){             for(j = i + 1; j < M; j++){                   if(mas[k][i] < mas[k][j]) {                       t = mas[k][i];                     mas[k][i] = mas[k][j];                     mas[k][j] = t;               }         }     } } } for(i = 0 ; i < M; i++)     {         for(j = 0; j < M; j++)             if (mas[i][j]==0)         {                 for ( q = j; q < N-1 ; q++)                 {                     mas[i][q] = mas[i][q + 1];                 }                 mas[N-1][M-1] = 0;           }     }   for (i=0; i < N; i++)        {for (j=0; j < M; j++)               printf ("%d\t", mas[i][j]);        printf (" \n");}   getch();}

  1. I need help,guys Нужно написать программу, которая выделяет из строки заданное количество слов, начиная со слова с заданным номером. Строка, количество слов, номер первого слова передаются в функцию в качестве параметров. При реализации функции запрещается пользоваться функциями стандартной библиотеки языка C. Под термином «слово» понимается любая последовательность символов, ограниченная любым количеством пробелов и/или символом начала/конца строки. С меня большущее спасибо.

  1. Строка, содержащая произвольный текст, состоит не более чем из 255 символов. Написать, какие буквы и сколько раз встречаются в этом тексте. Ответ должен приводиться в грамматически правильной форме, например а — 25 раз, v — 3 раза и т. д

  1. Нужно написать рекурсивную функцию (программу) которая будет искать минимальный элемент в массиве.

  1. Помогите пожалуйста составить программу, которая печатает на экране квадратную матрицу, размерность которой вводит пользователь с клавиатуры. 1 1 . . . . 1 2 2 . . . 2 3 3 3 . 3 . . . . . n . . . 0

  1. Приветствую, ув. программисты, помогите пожалуйста с программкой. Задание: Разработать программу обработки строки символов в соответствии с заданным вариантом(Найти самое короткое слово). Считать, что строка оканчивается точкой, слова разделены пробелами. В программе предусмотреть ввод и вывод исходных данных и результатов