Найти ошибку при работе с циклами - 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 #include<conio.h> #include<math.h> #include<stdio.h> int main(void); { int n=4; int m=k=0;     printf("lenght=4")         {do           {k++;               {do                 {                 m++;                 printf(" ");                 }             while (m<(n/2))             printf("22\n");             }             }while(k<4)         }               m=k=0                         {do{k++;                             do{                             m++;                             printf("2");                               }                             while(m<5);                            }while(k<3);}               m=k=0             {do           {k++;               {do                 {                 m++;                 printf(" ");                 }             while (m<(n/2))             printf("22\n");             }             }while(k<4)         } getch(); }Добавлено через 28 секунд ошибку в объявлении выдаёт


textual

Код:

#include <stdio.h>
#include <conio.h>
 
int main()
{
    int i,j,a;
    printf("Enter a : ");
    scanf("%d",&a);
    for(i = 0; i <= a; i++)
    {
        for(j = 0; j <= 2*a; j++)
        {
            if(i <= a/2)//Это верх
            {   
                if(j == a/2 - i || j == a/2 + i)
                    printf("*");
                else
                    printf(" ");
            }
            else//Это низ
            {
                if(j == i - a/2 || j == a - i + a/2)
                    printf("*");
                else
                    printf(" ");
            }
        }
        printf("\n");
    }
    _getch();
    return 0;   
}


Похожие ответы
  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. В строке с условием if ( B[i][j]%2==0) выдает ошибку, подскажите, пожалуйста. как исправить.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 #include #include   int main() {   float A[6], A1[6], B[3][6];   float Sum1B; int i, j, k, param;   param=5;   k=6   // Ввод значений элементов массива A  ;printf ("Vvod A[6]:\n"); for (i=0; i<6; i++ )  scanf ("%f",&A[i]); // Вывод значений элементов массива A printf ("\n\nMassiv A:\n"); for (i=0; i<5; i++ )  printf ("%5.2f ", A[i]) // Вычисление и вывод значений элементов массива B ;printf ("\n\nMassiv B:\n"); for (i=0; i<3; i++)  {   for (j=0; j<6; j++)    {      B[i][j]=i+A[j]+log10(param);      printf ("%5.2f ", B[i][j]);    }  printf ("\n");  } // Вычисление и вывод суммы четных элементов первой строки массива B Sum1B=0;  for (j=0; j<6; j++)   if ( B[i][j]%2==0)   Sum1B+=B[i][j];   printf ("\nSum1B=%5.2f\n", Sum1B); // Вычисление значений массива А1 по условию  if (Sum1B>11)  {   // Постановка элемнтов массива А в А1 в обратном порядке   for (i=0; i<6; i++) A1[i]=A[k-i];  }  else   for (j=0; j<6; j++) A1[i]=B[3][j];   // Вывод значений элементов массива А1 printf ("\nMassiv A1:\n");  for (i=0; i<5; i++)   printf ("%5.2f ", A1[i]);     return 0;      }

  1. Приветствую всех. Долго мучался, как же сформулировать вопрос, и все таки... Есть массив строк(аля char**) в цикле он заполняется(в функцию, где это происходит просто кидают большую строку со '\n'-ами, а в функции в цикле она разбивается на несколько строк). Так вот, в самом цикле все нормально происходит, а вот при выходе на месте первого элемента массива строк красуются несколько(всегда 3) кракозябер, в то время, как с остальными строчками все нормально. Не можете подсказать что либо по этому поводу?? Собственно код функции 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 unsigned int menu(unsigned int mask, char* str){     FILE* flog = fopen("menu.log", "w+");     char **txt = (char**)malloc(sizeof(char*));     int i = 0;     int j = 0;     do{         txt[i] = (char*)malloc(32*sizeof(char));         int k = 0;         k = snprintf(txt[i], 32, "%d. ", i + 1);         txt[i] = (char*)realloc(txt[i], (k + 2)*sizeof(char));         do{             txt[i][k] = str[j]; fprintf(flog, "  j=%i, k=%i, txt[%i][%i]=%c.\n", j, k, i, k, txt[i][k]);             txt[i] = (char*)realloc(txt[i], (k + 2)*sizeof(char));             j++; k++;         }while(str[j - 1] != '\n');         txt[i][k] = '\0';         i++;     }while(str[j] != '\0');       if(mask < 1 || mask >= (1 << i + 1))         return 0;       for (int h = 0; h < i; h++)         fprintf(flog, "txt[%i]=%s\n", h, txt[h]);         int b = 0;     unsigned int l = 0;     for(int l = 1; l < (2 << i); l *= 2, b++){         fprintf(flog, "i=%i, l=%i, (2 << i)=%i, b=%i.\n",i ,l, 2 << i, b);         if(l & mask){             printf("%s", txt[b]);         }     }     fclose(flog);     do{         printf("Выберите действие(Введите число): ");         scanf("%i", &l);     }while(!((mask >> (l - 1)) & 1));         for(int c = 0; c < i; c++)         free(txt[c]);     free(txt);     return l; } p. s. string.h низзя.

  1. Ни как не могу доделать кусочек лабы , буду признателен за помощь ) Даны вещественные числа x , y . Определить принадлежит ли точка с координатами (x;y) заштрихованной плоскости. Картинка к задаче :

  1. При выполнении scanf("%f", &e) программа не реагирует на нажатие любой клавиши.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  #include #include #include   int main() {     float Fx,  ch, zn, x,e;     int i,j;     setlocale(LC_ALL, "rus");     printf("Эта программа предназначена для вычисления y(x) =ln(1+x)=x-x2/2+x3/3-...+(-1)nxn/n (0x>0): ");     scanf("%f\n", &x);     printf("Задайте точность вычисления(e>0): ");     scanf("%f", &e);     ch = 0;     zn = 0; i = -1;     j = 1;     Fx = 0;         do         {               ch = ch * x;             zn++;             Fx = Fx + j*ch / zn;             j = j*i;         } while (fabsf(ch/zn)>e);         printf("\ny(x)= %f",Fx);           _getch(); }

  1. Написать программу вывода элементов одномерного массива при наличии чисел заглушек и с правильным порядком индексации C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #include     int main(){     int a[10] = {-1, 7, 1, 3, 1, -1, 4, -1, 6, 5 };   int  i = 0;               for(i = 0; i < sizeof(a)/ sizeof(*a); ++i)            if (a[i] != -1 )    printf ("a[%d]= %d\n", i, a[i]);    return 0; }Помогите вывести правильную индексацию массива

  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 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include struct sport { char name[10]; int number; int kol; } sp; void input(FILE *); // создание нового файла void print(FILE *); // просмотр файла void app(FILE *); // добавление в файл void del(FILE *); // удаление игрока с наименьшим количеством очков int main(void) {     char c;     FILE *fp;     while (1)     {           puts(" 1 – новый файл");         puts(" 2 – просмотр файла");         puts(" 3 – добавление в файл");         puts(" 4 – удаление игрока с наименьшим количеством очков");         puts(" 0 - выход");         c = getchar();         switch (c)         {         case '1':input(fp); break;// [B]вот тут ошибка[/B]         case '2':print(fp); break;         case '3':app(fp); break;         case '4':del(fp); break;         case '0':return 0;         default: puts("неверный режим");         }     } } void input(FILE *fp) {     char ch;     fp = fopen("file1.dat", "wb"); // открытие бинарного файла для записи       printf("\n Введите информацию о спортсменах \n");     do     {         printf("\n Фамилия: "); scanf("%s", sp.name);         printf(" Номер: "); scanf("%d", &sp.number);         printf(" Количество очков: "); scanf("%d", &sp.kol);         fwrite(&sp, sizeof(sp), 1, fp); // запись в файл одной структуры sp         printf("\n Закончить?  y/n  ");         ch = getchar();     } while (ch != 'y');     fclose(fp); } void print(FILE *fp) {     int i;       fp = fopen("file1.dat", "rb"); // открытие бинарного файла для чтения     i = 1;     fread(&sp, sizeof(sp), 1, fp); // чтение из файла одной структуры sp     while (!feof(fp))     {         printf("\n  %3d спортсмен %-10s номер %d   очков %d", i, sp.name, sp.number, sp.kol);         fread(&sp, sizeof(sp), 1, fp);         i++;     }     getchar(); } void app(FILE *fp) {     char ch;     fp = fopen("file1.dat", "ab"); // открытие бинарного файла для добавления       printf("\n  Введите информацию о спортсменах \n");     do     {         printf("\n Фамилия: "); scanf("%s", sp.name);         printf(" Номер: "); scanf("%d", &sp.number);         printf(" Количество очков: "); scanf("%d", &sp.kol);         fwrite(&sp, sizeof(sp), 1, fp);         printf("Закончить?  y/n  ");         ch = getchar();     } while (ch != 'y');     fclose(fp); } void del(FILE *fp) {     char ch; // [B]ВОТ ТУТ ОШИБКА[/B]     int i, j, n, h;     sport *s, p;       fp = fopen("file1.dat", "rb"); // открытие бинарного файла для чтения     // подсчет числа записей в файле     n = 0;     fseek(fp, 0, 2);     n = ftell(fp) / sizeof(sport);     rewind(fp);     s = (sport *)malloc(n*sizeof(sp));     // заполнение массива     for (i = 0, h = 1; i

  1. Здраствуйте, задано переписать функцию strspn(canst char *s1, const char *s2) так чтоб она искала самый длинный фрагмент строчки s1, содержащий только елементы строчки s2, при этом фрагмент не обязательно расположен в начале строчки. Признаюсь честно я не сильно дружу з си(особенно с указателями), но пришлось вспоминать чтоб сделать задание. Значит выбрал я следующий алгоритм: сравниваем каждый елемент строчки s1 со всеми елементами строчки s2, находя совпадение запускаем рекурсивно функцию подсчета фрагмента одинаковых елементов от оставшейся части строчки s1 и строчки s2. Ошифка возникает при выделении оставшейся части строчки s1 в строке 56 Сперва подумал про возможный выход за пределы, сделал обработчик через if перед переписыванием, но ошибка осталась. (так же уверен что в строке 25 будет такая же ошибка, но програма туда просто не доходит пока) Подскажите что может быть не верно и где исправить или же как оптимизировать даный кусок коду.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 #include "stdafx.h" #include #include #include #include   int temp = 0; int max = 0;   void count(const char *s1, const char *s2) {     temp++;     int i, j;     for (i = 0; i < strlen(s2); i++)     {         if ((s1[0] == s2[i]) && (s2[i] != '\n'))         {             int i1;             char s1_tmp[100];             int k = 0;             if (1 < strlen(s1))             {                 for (i1 = 1; i < strlen(s1); i1++)                 {                     s1_tmp[k] = s1[i1];                     k++;                 }                 count(s1_tmp, s2);             }             else             {                 count((const char*)s1[0], s2);             }         }     }     if (temp > max) max = temp;     temp = 0; }   void StrSpn(const char *s1, const char *s2) {     const char *start = s1;     int i, j;     for (i = 0; i < strlen(s1); i++)     {         for (j = 0; j < strlen(s2); j++)         {                       if ((s1[i] == s2[j]) && (s1[i] != '\n'))             {                 int i1;                 char s1_tmp[100];                 int k = 0;                 if (i + 1 < strlen(s1)) {                     for (i1 = i + 1; i < strlen(s1); i1++)                     {                         s1_tmp[k] = s1[i1];                         k++;                     }                     count(s1_tmp, s2);                 }                 else                 {                     count((const char*)s1[i], s2);                 }             }         }     } }   int main() {     setlocale(LC_ALL, "ukr");     char s[100];     char s1[100];     int i, cur = 0;     printf("Enter first string: ");     fgets(s, 80, stdin);     char sfirst = s[0];     if (sfirst == '\n') {         printf("Error! Empty string!");     }     else     {         printf("Enter second string: ");         fgets(s1, 80, stdin);         char s1first = s1[0];         if (s1first == '\n') {             printf("Error! Empty string!");         }         else         {             StrSpn(s, s1);             printf("Result: %d\n", max);         }     }       system("pause");     return 0; }

  1. Новичок в С. Сижу под линухом. Что-бы освоить аргументы командной строки и i/o файлов в С решил написать программу.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 #include #include #include #include #include   int main(int argc, char *argv[]){     FILE *fp;         if(strcmp(argv[1],"-r")==0){         fp = fopen(argv[2],"r");         if(strcmp(fp,"NULL")){             fprintf(stderr, "Can't open input file %s!\n", argv[2]);             exit(ENOENT);         }         char buff[50];         while(!feof(fp)){             fgets(buff, 50, fp);             printf("%s\n", buff);         }         fclose(fp);         exit(0);     }     if(strcmp(argv[1],"-w")==0){         fp = fopen(argv[2], "w");         if(strcmp(fp,"NULL")){             fprintf(stderr, "Can't open output file %s!\n", argv[2]);             exit(ENOENT);         }         fprintf(fp, argv[3]);         fclose(fp);         exit(0);     }     printf("Use "-r \'inputfile\'" to read file.\n");    printf("Use "-w \'outputfile\' \'inputtext\'" to write into file.\n");    exit(EINVAL);    return 0; }Как итог программа собирается, но при запуске любыми аргументами (и без них) выдаёт Segmentation fault (Exit code 139).

  1. Здравсвтвуйте! Собственно сам вопрос в заголовкке темы, делаю так, но неправильно олучается, скажите, как сделать правильно?C1 2 3 4 5 6 7 8 9 10 11 12 #include int main() {       int N;       printf("N=");       scanf("%d",&N);       int tab[N];       for(int i=0;i