Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2023, 19:59   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

macomics, различия в количестве символов из-за опечаток в файле input.txt (по сравнению с примером). ruivit, увеличьте буфер по совету p51x (в последнем коде). А так больше и не знаю, что еще не нравится проверяющей системе.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.02.2023, 20:07   #12
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
различия в количестве символов из-за опечаток в файле input.txt (по сравнению с примером).
Так проанализировав опечатки и получишь различия. Для начала надо привести входной файл в точное соответствие с примером из книжки и получить идентичный результат, чтобы автоматическая проверяющая система эту программу пропустила. А вот после исправления опечаток и станет видно где не правильно идет подсчет.

ADD: ruivit: И еще одно. В задании не зря задан прототип функции объявленный как
Код:
int calcLetters(char *iStr, int *oLowerCnt, int *oUpperCnt, int *oDigitsCnt);
И это прототип функции. А в вашем коде она объявлена сразу как
Код:
int calcLetters(char* iStr, int* oLowerCnt, int* oUpperCnt, int* oDigitsCnt)
Возможно автор добавил в систему проверки поиск этой строки в исходном коде. Значит она должна совпадать в исходнике до буквы.

Последний раз редактировалось macomics; 14.02.2023 в 20:31.
macomics вне форума Ответить с цитированием
Старый 14.02.2023, 21:10   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Сделал практически только косметические правки и послал, выбрав компилятор Visual C++ 2019:
Код:
#include <cstdio>
#include <string>

int calcLetters(char *iStr, int *oLowerCnt, int *oUpperCnt, int *oDigitsCnt)
{
    int len = 0;
    for (int i = 0; iStr[i]; i++, len++)
    {
        if (islower(iStr[i])) (*oLowerCnt)++;
        if (isupper(iStr[i])) (*oUpperCnt)++;
        if (isdigit(iStr[i])) (*oDigitsCnt)++;
    }
    return len;
}

int main()
{
    int ln = 0;
    char s[110];
    FILE *inputF = fopen("input.txt", "r");
    FILE *outputF = fopen("output.txt", "w+");

    while (fgets(s, 110, inputF))
    {
        ln++;
        int len = 0, lowerCnt = 0, upperCnt = 0, digitsCnt = 0;
        len = calcLetters(s, &lowerCnt, &upperCnt, &digitsCnt);
        fprintf(outputF, "Line %d has %d chars: %d are letters (%d lower, %d upper), %d are digits.\n",
            ln, len - 1, lowerCnt + upperCnt, lowerCnt, upperCnt, digitsCnt
        );
    }

    fclose(inputF);
    fclose(outputF);
    return 0;
}
Статус "ACCEPTED!".
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 15.02.2023, 03:40   #14
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Цитата:
Сообщение от ruivit Посмотреть сообщение
Код:
#include <iostream>
#include <string>
Это здесь не нужно.
Цитата:
Сообщение от ruivit Посмотреть сообщение
Код:
    char sr[100];
Здесь по-хорошему должно быть 102, потому что:
* 100 элементов -- content строки.
* 1 элемент -- '\n' (fgets его пишет, почти для всех строк).
* 1 элемент -- '\0' (завершающий нулевой элемент).
Подстава в том, что в последней строке может и не быть '\n'. А вы для всех строк выводите «len - 1». Так что вычитание единицы из len лучше перенести в функцию calcLetters, в конец:
Код:
  if ((len > 0) && (iStr[len - 1] == '\n')) {
    len--; /* '\n' не входит в content */
  }
  return len;
}
Пётр Седов вне форума Ответить с цитированием
Старый 15.02.2023, 16:44   #15
ruivit
Пользователь
 
Регистрация: 14.09.2022
Сообщений: 24
Радость

Всем спасибо за помощь, всё за работало сайт принял.
ruivit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста найти ошибку в коде,не пишите новый лишь помогите найти проблему Shpite Shpinnete Помощь студентам 2 06.02.2023 05:11
Помогите найти ошибку в коде VBA Андрей822 Помощь студентам 1 26.02.2020 23:36
Помогите, пожалуйста, найти ошибку в коде (найти сумму факториалов чётных чисел в заданном диапазоне) kris14 Паскаль, Turbo Pascal, PascalABC.NET 8 25.10.2017 15:42
Помогите найти ошибку в коде vbn1 Общие вопросы C/C++ 4 12.12.2014 20:50
Помогите найти ошибку в коде. Kapustachkin Общие вопросы C/C++ 9 05.11.2014 10:38