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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2023, 17:04   #1
ruivit
Пользователь
 
Регистрация: 14.09.2022
Сообщений: 24
По умолчанию Помогите найти ошибку в коде.

Есть задания IMG_20230213_205328.jpg

Вот получил такое решение

Код:
#define _CRT_SECURE_NO_WARNINGS
#include<ctype.h>
#include<stdio.h>
#include <iostream>
#include <string>

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

int main()
{
    char sr[100];
    int li = 0;
    FILE* inputFile = fopen("input.txt", "r");
    while (fgets(sr, 100, inputFile))
    {
        li++;
        int len = 0, lowerCnt = 0, upperCnt = 0, digitsCnt = 0;
        len = calcLetters(sr, &lowerCnt, &upperCnt, &digitsCnt);
        printf("Line %d has %d chars: %d are letters(%d lower, %d upper), %d are digits.\n",
            
            li, len - 1, lowerCnt + upperCnt,lowerCnt, upperCnt, digitsCnt);
    }
    return 0;
}
Программа работает и выдаёт такой результат
Screenshot_1.jpg

Но вот сайт NSUts не принемает его пишет мол не работает программа тоесть не даёт положительного результата. Вот голову ломаю в чём беда ведь всё работает... (((
ruivit вне форума Ответить с цитированием
Старый 13.02.2023, 19:29   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Может быть, вы не соблюли выходной формат (на картинке нет примера). Или обязательно нужно печатать в output.txt, а не в консоль. И не забывайте закрывать файл после использования.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 13.02.2023, 20:58   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Начните с того, что читайте строку длиной 100, а не 99.
p51x вне форума Ответить с цитированием
Старый 14.02.2023, 16:53   #4
ruivit
Пользователь
 
Регистрация: 14.09.2022
Сообщений: 24
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Может быть, вы не соблюли выходной формат (на картинке нет примера). Или обязательно нужно печатать в output.txt, а не в консоль. И не забывайте закрывать файл после использования.
пробовал не прокатило (((

Цитата:
Сообщение от p51x Посмотреть сообщение
Начните с того, что читайте строку длиной 100, а не 99.
Пробовал не прошло ((

Код:
#define _CRT_SECURE_NO_WARNINGS
#include<ctype.h>
#include<stdio.h>
#include <iostream>
#include <string>

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

int main()
{
    char sr[101];
    int li = 0;
    FILE* inputFile = fopen("input.txt", "r");
	FILE* outputFile = fopen("output.txt", "w+") ;
    
    while (fgets(sr, 101, inputFile))
    {
        li++;
        int len = 0, lowerCnt = 0, upperCnt = 0, digitsCnt = 0;
        len = calcLetters(sr, &lowerCnt, &upperCnt, &digitsCnt);
   
 				
  		fprintf(outputFile, "Line %d has %d chars: %d are letters(%d lower, %d upper), %d are digits.\n", li, len - 1, lowerCnt + upperCnt,lowerCnt, upperCnt, digitsCnt) ;

    }
    
    fclose(inputFile);
    
    fclose(outputFile);
  
    return 0;
}
Вот такой код загружал в этот сайт. В общим не пропускает его он дескать ошибка но в чём не указывается. ((( В общим что то делаю не так но что вот не ясно.

Последний раз редактировалось BDA; 14.02.2023 в 17:01.
ruivit вне форума Ответить с цитированием
Старый 14.02.2023, 16:57   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Покажите их пример входных и выходных данных. Там точно нет пробела после letters?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.02.2023, 17:03   #6
ruivit
Пользователь
 
Регистрация: 14.09.2022
Сообщений: 24
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Покажите их пример входных и выходных данных. Там точно нет пробела после letters?
IMG_20230214_210003.jpg Вот пример
ruivit вне форума Ответить с цитированием
Старый 14.02.2023, 17:46   #7
ruivit
Пользователь
 
Регистрация: 14.09.2022
Сообщений: 24
По умолчанию

Screenshot_1.png В общим получаются такие значения всё совпадает только вот не как сайт не принимает (((
ruivit вне форума Ответить с цитированием
Старый 14.02.2023, 17:51   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Формат выходных данных не совпадает - где у вас пробел после слова letters?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.02.2023, 17:59   #9
ruivit
Пользователь
 
Регистрация: 14.09.2022
Сообщений: 24
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Формат выходных данных не совпадает - где у вас пробел после слова letters?
Сейчас только что пробовал с пробелом в общим не принял сайт ((( Вот код программы .
Код:
#define _CRT_SECURE_NO_WARNINGS
#include<ctype.h>
#include<stdio.h>
#include <iostream>
#include <string>

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

int main()
{
    char sr[100];
    int li = 0;
    FILE* inputFile = fopen("input.txt", "r");
	FILE* outputFile = fopen("output.txt", "w+") ;
    
    while (fgets(sr, 100, inputFile))
    {
        li++;
        int len = 0, lowerCnt = 0, upperCnt = 0, digitsCnt = 0;
        len = calcLetters(sr, &lowerCnt, &upperCnt, &digitsCnt);
   		
  		fprintf(outputFile, "Line %d has %d chars: %d are letters (%d lower, %d upper), %d are digits.\n", li, len - 1, lowerCnt + upperCnt,lowerCnt, upperCnt, digitsCnt) ;
    
    }
    
    fclose(inputFile);
    
    fclose(outputFile);
  
    return 0;
}
ruivit вне форума Ответить с цитированием
Старый 14.02.2023, 19:34   #10
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

У вас в выводе отсутствует пробел после слова letters и скобкой (

Во всяком случае на картинке с блокнотом отображающим output.txt
Хотя в приведенном коде эта опечатка уже устранена

Дальше я бы проверил количество символов в строках
В примере из лабораторной {30, 32, 26, 12, 31, 13, 30, 1} у вас на картинке {29, 32, 25, 12, 29, 13, 30, 1}. Вычитаем {1, 0, 1, 0, 2, 0, 0, 0}

Блок символов {24, 22, 18, 7, 21, 6, 19, 0} у вас {23, 22, 18, 7, 21, 6, 19, 0} вычитаем {1, 0, 0, 0, 0, 0, 0, 0}
{23, 22, 17, 7, 20, 6, 19, 0} {22, 22, 17, 7, 20, 6, 19, 0} {1, 0, 0, 0, 0, 0, 0, 0}
{1, 0, 1, 0, 1, 0, 0, 0} {1, 0, 1, 0, 1, 0, 0, 0} {0, 0, 0, 0, 0, 0, 0, 0}
{0, 0, 0, 0, 0, 1, 1, 0} {0, 0, 0, 0, 0, 1, 1, 0} {0, 0, 0, 0, 0, 0, 0, 0}

Последний раз редактировалось macomics; 14.02.2023 в 19:51.
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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