Исправить синтаксические ошибки в коде - C (СИ)
Формулировка задачи:
нужно исправить ошибки(они подчеркнуты красным) см фото
#include <stdio.h> #include <string.h> #include<locale.h> #include <ctype.h> #define N 30 #define M 21 int main() { char str[N][M]; int i, i1 = 0, j, v,y; i = 0; j = 0; setlocale(LC_ALL, "Russian"); printf("Введите предложение\n"); while (1) { v = getchar(); if ((v == '!') || (v == '?') || (v == '.') || (v == '\n')) { str[i][j] = '\0'; i++; y = i; break; } if ((v >= 'a') && (v <= 'z') || (v >= 'A') && (v <= 'Z') || (v == ' ')) { } else { printf("Ошибка:недопустимый символ\n"); return 0; } if (v != ' ') { str[i][j++] = v; } if (j > 21) { printf("Ошибка:слишком длинное слово\n"); return 0; } if (v == ' ') { str[i][j++] = '\0'; i++; j = 0; } if (i > 31) { printf("Ошибка:слишком длинное предложение\n"); return 0; } } printf("Ваше предложение\n"); for (i1 = 0; i1 < y; i1++) { for (j = 0; str[i1][j]; j++) printf("%c", str[i1][j]); printf(" "); } _getch(); bool newWord = true; // это переменная типа булево, принимает значения "Ложь" или "Истина" for (i = 0; i < strlen(str); i++) // цикл по всей длине строки-массива { if (str[i][j] == ' ') // если текущий символ строки равен пробелу newWord = true; // ставим значение "Истина" для переменной newWord if (str[i][j] >= 'A' && str[i][j] <= 'Z') // если текущий символ в верхнем регистре анг. алфавита if (newWord) // если переменная newWord равна "Истина" { str[i][j] = tolower(str[i][j]); // переводим текущий символ в нижний регистр newWord = false; // устанавливаем переменную newWord в значение "Ложь" } } printf("Измененное предложение\n"); for (i1 = 0; i1 < y; i1++) { for (j = 0; str[i1][j]; j++) printf("%c", str[i1][j]); printf(" "); } _getch(); }
Решение задачи: «Исправить синтаксические ошибки в коде»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include<locale.h> #include <ctype.h> #define N 30 #define M 21 #define true 1 #define false 0 int main() { char str[N][M]; int bool; int i, i1 = 0, j, v,y; i = 0; j = 0; setlocale(LC_ALL, "Russian"); printf("??????? ???????????\n"); while (1) { v = getchar(); if ((v == '!') || (v == '?') || (v == '.') || (v == '\n')) { str[i][j] = '\0'; i++; y = i; break; } if ((v >= 'a') && (v <= 'z') || (v >= 'A') && (v <= 'Z') || (v == ' ')) { } else { printf("??????:???????????? ??????\n"); return 0; } if (v != ' ') { str[i][j++] = v; } if (j > 21) { printf("??????:??????? ??????? ?????\n"); return 0; } if (v == ' ') { str[i][j++] = '\0'; i++; j = 0; } if (i > 31) { printf("??????:??????? ??????? ???????????\n"); return 0; } } printf("???? ???????????\n"); for (i1 = 0; i1 < y; i1++) { for (j = 0; str[i1][j]; j++) printf("%c", str[i1][j]); printf(" "); } getch(); // bool = true; // ??? ?????????? ???? ??????, ????????? ???????? "????" ??? "??????" for (i = 0; i < strlen(str); i++) // ???? ?? ???? ????? ??????-??????? { if (str[i][j] == ' ') // ???? ??????? ?????? ?????? ????? ??????? bool = true; // ?????? ???????? "??????" ??? ?????????? newWord if (str[i][j] >= 'A' && str[i][j] <= 'Z') // ???? ??????? ?????? ? ??????? ???????? ???. ???????? if (bool==true) // ???? ?????????? newWord ????? "??????" { str[i][j] = tolower(str[i][j]); // ????????? ??????? ?????? ? ?????? ??????? bool = false; // ????????????? ?????????? newWord ? ???????? "????" } } printf("?????????? ???????????\n"); for (i1 = 0; i1 < y; i1++) { for (j = 0; str[i1][j]; j++) printf("%c", str[i1][j]); printf(" "); } getch(); }
Объяснение кода листинга программы
- В начале кода объявлены массив символов str[N][M], переменные i, i1, j, v, y, bool и функция getchar().
- В цикле while(1) происходит чтение ввода пользователя, если символ является знаком препинания, то строка считается завершенной и выводится на экран.
- Если введенный символ является буквой, пробелом или знаками препинания, то он добавляется в строку.
- Если введенный символ не является пробелом, то вторая строка добавляется в массив.
- Если длина второй строки превышает 21 символ, выводится сообщение об ошибке и программа завершается.
- Если введенный символ является пробелом, то вторая строка добавляется в массив и первая строка переходит к следующей итерации.
- Если длина первой строки превышает 31 символ, выводится сообщение об ошибке и программа завершается.
- После завершения ввода выводится сообщение о количестве введенных строк.
- Для каждой строки выводится количество слов в строке.
- Для каждой строки выводится количество символов в строке.
- В цикле for проверяется каждый символ строки.
- Если символ является заглавной буквой, то он преобразуется в строчную букву.
- Если переменная bool равна true, то текущая строка считается новым словом.
- Если текущая строка является словом, то она преобразуется в нижний регистр.
- Если переменная bool равна true, то текущая строка считается новым словом.
- Выводится сообщение о количестве преобразованных строк.
- Для каждой строки выводится количество символов в строке.
- Ввод пользователя завершается, если введен символ новой строки.
- В цикле for проверяется каждый символ строки.
- Выводится количество символов в строке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д