Не выдаёт результаты - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет. Недавно начал знакомиться с языком Си и входе обучения возникла трудность.. Может кто подсказать ? Я пишу программу:
#include <stdio.h>
 
#define NLINES 1.0               /* Определение старта для линий. Подсчёт строки начинается всегда с 1 */
#define NSPACES 0.0              /* Определение старта для пробелов */
#define NSYMB 0.0                /* Определение старта для символов */
 
main() {
 
double g;
double nl= NLINES;
double nsp= NSPACES;
double ns= NSYMB;
 
printf ("Wellcome to StupidProg\nfor exit press 'x'.\n\n");
 
while ((g=getchar()) != EOF)     /* Подсчёт входного потока с клавиатуры */
{
if (g=='\n')                     /* Вычисление кол-ва линий */
{
++nl;                           
}
if (g== ' ')                     /* Вычисление кол-ва пробелов */
{
++nsp;
}
if (g!=EOF)                      /* Вычисление кол-ва символов */
{
++ns;
}
if (g=='x')                      /* Функция выхода */
{
    return 0;
}
}
printf ("Lines: %.0f\nSpaces: %.0f\nSymbols: %.0f\n", nl, nsp, ns); /* Отображение результатов*/

}
По итогу, она должна посчитать количество строк, пробелов и символов. Пробовал на мобильной версии запустить - всё отлично, но как только сажусь за ПК, в результате ничего не считает.

Решение задачи: «Не выдаёт результаты»

textual
Листинг программы
#include <stdio.h>
 
#define NLINES 1.0               /* Определение старта для линий. Подсчёт строки начинается всегда с 1 */
#define NSPACES 0.0              /* Определение старта для пробелов */
#define NSYMB 0.0                /* Определение старта для символов */
 
main() {
 
    char g;
    int nl= NLINES;
    int nsp= NSPACES;
    int ns= NSYMB;
 
    printf ("Wellcome to StupidProg\nfor exit press 'x'.\n\n");
 
    while ((g=getchar()) != 'x')     /* Подсчёт входного потока с клавиатуры */
    {
        if (g=='\n')                     /* Вычисление кол-ва линий */
        {
            ++nl;                           
        }
        if (g== ' ')                     /* Вычисление кол-ва пробелов */
        {
            ++nsp;
        }
        if (g!=EOF)                      /* Вычисление кол-ва символов */
        {
            ++ns;
        }
 
    }
    printf ("Lines: %.0f\nSpaces: %.0f\nSymbols: %.0f\n", nl, nsp, ns); /* Отображение результатов*/
    return 0;
}

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

  1. Включаем заголовочный файл для использования функций ввода-вывода.
  2. Определяем константы NLINES, NSPACES и NSYMB, которые задают стартовые значения для подсчета количества строк, пробелов и символов соответственно.
  3. В функции main() объявляем переменную типа char g для хранения вводимого символа, а также переменные типа int nl, nsp и ns для подсчета количества строк, пробелов и символов соответственно.
  4. Выводим приветствие и инструкцию по использованию программы.
  5. Запускаем цикл while, который будет выполняться до тех пор, пока не будет введен символ 'x'.
  6. Внутри цикла проверяем, равен ли введенный символ '\n'. Если да, то увеличиваем значение переменной nl на 1.
  7. Проверяем, равен ли введенный символ ' '. Если да, то увеличиваем значение переменной nsp на 1.
  8. Проверяем, не равен ли введенный символ EOF. Если нет, то увеличиваем значение переменной ns на 1.
  9. После окончания цикла выводим количество строк, пробелов и символов на экран.
  10. Возвращаем 0 из функции main(), чтобы указать, что программа успешно завершилась.

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


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

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

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