Программа не выводит ответ - 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
    }

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

  1. Объявлен цикл for (;;), то есть программа будет выполняться бесконечно, пока не будет прервана.
  2. В каждой итерации цикла программа запрашивает у пользователя ввод строки с помощью функции scanf_s и сохраняет ее в массиве A[i].
  3. Проверяется, является ли последний символ введенной строки точкой ('.'). Если да, то переменная i увеличивается на 1, чтобы пропустить точку при обработке строки, и цикл продолжается. Если нет, то цикл завершается.
  4. Если количество введенных слов превышает или равно n, то цикл также завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы