Программа не выводит ответ - C (СИ) (151461)
Формулировка задачи:
программа не выводит ответ, после ввода "." и нажатия на ентер
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale>
#include <conio.h>
int main() {
setlocale(LC_ALL, "Russian"); // русский шрифт в консоли
char A[30][8]; // массив слов
const char CAlpha[] = "BCDFGHJKLMNPQRSTVWXZ"; // массив символов являющихся согласными
int i = 0; // переменная цикла
int n = 30; // максимально возможное кол-во слов
printf("Введите последовательность слов:\n");
do
{
scanf_s("%s", A[i]); // в цикле считываем по словам
i++;
} while (i - 1>n || A[i - 1][strlen(A[i - 1]) - 1] != '.'); // пока кол-во слов не достигнет 30 или точка не будет последним символом слова
A[i - 1][strlen(A[i - 1]) - 1] = '\0'; //удаляем точку и не учитываем последнее слово, т.к.оно кончается точкой
n = i - 1; // сохраняем в n фактическое кол-во слов
for (i = 0; i<n; i++) // в цикле по словам
{
if (strchr(CAlpha, toupper(A[i][0])) && // ищет вхождение первого символа слова в массив CAlpha
strchr(CAlpha, toupper(A[i][strlen(A[i]) - 1]))) // ищет вхождение последнего символа слова в массив CAlpha
{
printf("-> %s\n", A[i]); // если слово удовлетворяет условиям выше, выводим его на экран
}
}
_getch();
return 0;
}Решение задачи: «Программа не выводит ответ»
textual
Листинг программы
for (;;) {
scanf_s("%s", A[i]); // вводим очередное слово
if (A[i][strlen(A[i])-1] == '.' ) { ++i; break; } // выходим если на конце слова .
if (++i >= n) break; // выходим, если кол-во слов превысило либо равно n
}
Объяснение кода листинга программы
- Объявлен цикл
for (;;), то есть программа будет выполняться бесконечно, пока не будет прервана. - В каждой итерации цикла программа запрашивает у пользователя ввод строки с помощью функции scanf_s и сохраняет ее в массиве A[i].
- Проверяется, является ли последний символ введенной строки точкой ('.'). Если да, то переменная i увеличивается на 1, чтобы пропустить точку при обработке строки, и цикл продолжается. Если нет, то цикл завершается.
- Если количество введенных слов превышает или равно n, то цикл также завершается.