Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.02.2020
Сообщений: 17

Найти сумму чисел, записанных в строке

29.04.2020, 18:55. Показов 1382. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
1). Написать функцию создания текстового файла, содержащего строки, в которых будут находиться слова и числа, отделенные друг от друга пробелами.
2). Написать функцию обработки файла, выполнив для каждой строки файла задание: Найти сумму чисел, записанных в строке.
3). Вывести на экран все строки файла с результатом их обработки и пояснительным текстом.

Не работает код, не понимаю ошибки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <string>
 
 
using namespace std;
void sozd_file()
{
    char st[100];
    FILE* ft; // описание
    char NF[15];
    cout << "Ввод имени файла : "; cin >> NF;
    fopen_s(&ft, NF, "wt");
 
    cout << "Введите строки, \".\" является признаком окончания файла" << endl;
    int fl = 1;
    gets_s(st);
    while (fl)
    {
        gets_s(st); // cin
        if (strlen(st) > 0 && st[strlen(st) - 1] == '.')
        {
            fl = 0;
        }
        fprintf(ft, "%s\n", st);
    }
    fclose(ft);
}
 
int mySum(char* st) {
    int sum = 0;
    int index = 0;
    for (size_t i = 0; i < strlen(st); i++) {
        if (st[i] != ',' && (i == 0 || st[i - 1] == ' ')) {
            sum += atoi(st + index);
        }
        if (st[i] == ' ') index = i + 1;
    }
    return sum;
}
 
int main()
{
    setlocale(LC_ALL, "RUS");
    sozd_file();
    char* st = new char[100];
    FILE* ft;
    char NF[15];
    cout << "\n Ввод имени файла : "; cin >> NF;
    fopen_s(&ft, NF, "rt");
 
    while ((fgets(st, 100, ft)))
    {
        cout << "\nСтрока -> " << st;
        cin.getline(st, 100);
        cout << "Сумма чисел: " << mySum(st) << endl;
        return EXIT_SUCCESS;
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2020, 18:55
Ответы с готовыми решениями:

Найти сумму чисел, записанных в строке
Прога должна выводить суму чисел записанных в строке, но считает количество цифер, как исправить? #include &lt;iostream&gt; #include...

Напечатать сумму всех семеричных чисел, записанных в строке
Программе на вход подается последовательность символов заканчивающихся символом '.' Идущие подряд последовательности цифр в семеричной...

Найти суммы чисел, записанных в строке, между нулями
Дана строка чисел например: 1 2 4 0 4 4 5 0 32 21 35 0 3 0. Нужно найти суммы чисел между нулями. Но в С++ я новичек и не знаю как сие...

6
Модератор
 Аватар для long399
2882 / 1837 / 933
Регистрация: 16.10.2013
Сообщений: 5,242
Записей в блоге: 15
29.04.2020, 19:52
polina09,

1) приведен неполный код;
2) если вы пишите на C++, то зачем в коде использовать функции и переменные будто для C ? Массивы символов заменить строками лучше. Для работы с файлами лучше бы перейти на файловые потоки ifstream/ofstream.
3) пишите, что конкретно не работает, мы же тут не гадать собрались. Вам так быстрее помогут.
0
0 / 0 / 0
Регистрация: 26.02.2020
Сообщений: 17
30.04.2020, 00:15  [ТС]
Не работает функция mySum , не ищет сумму чисел, пишет просто 0. И на экран выводит только первую строку из всех, записанных в файл.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,226
30.04.2020, 01:33
Цитата Сообщение от polina09 Посмотреть сообщение
в которых будут находиться слова и числа, отделенные друг от друга пробелами.
А в строке "5 123колян сиплый" - где слова и где числа. "123колян" - это слово или число?

Цитата Сообщение от polina09 Посмотреть сообщение
И на экран выводит только первую строку из всех, записанных в файл.
Ну так разумеется! Вы же завершаете свою программу сразу же после чтения и обработки первой строки

C++
1
return EXIT_SUCCESS;
Зачем вы это сделали?

Цитата Сообщение от polina09 Посмотреть сообщение
C++
1
if (st[i] != ',' && ...
В условии задачи ни слова не сказано о запятых. Почему в коде программы вдруг появилась какая-то специальная обработка для символа ','?
0
0 / 0 / 0
Регистрация: 26.02.2020
Сообщений: 17
30.04.2020, 01:45  [ТС]
Вариант 123колян не подходит по условию: числа и слова, отделены пробелами.

Подчистила код: строки выводит все, но функцию mySum так и не читает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
 
void File()
{
    char s[100];
    FILE* ft = stdout; // описание
    char NF[15];
    cout << "Ввод имени файла: ";
    cin >> NF;
    fopen_s(&ft, NF, "wt");
    cout << "Введите строки, \".\" является признаком окончания файла" << endl;
    int fl = 1;
    gets_s(s);
    while (fl)
    {
        gets_s(s); // cin
        if (strlen(s) > 0 && s[strlen(s) - 1] == '.')
        {
            fl = 0;
        }
        fprintf(ft, "%s\n", s);
    }
    fclose(ft);
}
int mySum(char* s) {
    int sum = 0;
    int index = 0;
    for (size_t i = 0; i < strlen(s); i++) {
        if (s[i] != ',' && (i == 0 || s[i - 1] == ' ')) {
            sum += atoi(s + index);
        }
        if (s[i] == ' ') index = i + 1;
    }
    return sum;
}
 
int main()
{
    setlocale(LC_ALL, "RUS");
    File();
    char* s = new char[100];
    FILE* ft; // описание
    char NF[15];
    cout << "\n Ввод имени файла: ";
    cin >> NF;
    fopen_s(&ft, NF, "rt");
    while (fgets(s, 100, ft))
 
    {
        cout << "Строка: " << s;
        
        cout << "Сумма чисел: " << endl;
            mySum(s);
    }
    cin.get();
    return 0;
}
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,226
30.04.2020, 02:41
Цитата Сообщение от polina09 Посмотреть сообщение
но функцию mySum так и не читает
Не понял. Что значит "так и не читает"?

Вы в своем коде вызываете эту функцию, но игнорируете результаты ее работы. Причем в первом варианте кода все было правильно, а сейчас вы зачем-то вы стали игнорировать mySum.

1. Зачем вы вдруг выкинули из кода обработку результатов mySum?
2. Раз уж вы их выкинули, то почему вас тогда удивляет, что "mySum так и не читает"?
0
0 / 0 / 0
Регистрация: 26.02.2020
Сообщений: 17
30.04.2020, 03:21  [ТС]
Поняла, спасибо, работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2020, 03:21
Помогаю со студенческими работами здесь

Найти сумму чисел записанных в файл
В файле test.in записано целые числа. Найти их сумму. Результат запишите в test.out . Для работы с файлами используйте функции fstream

Найти сумму чисел, записанных в строке
Дана строка, состоящая из наборов цифр, разделенных пробелами. Найти сумму чисел, записанных в строке. Количество символов в строке не...

Найти сумму трех чисел, записанных в строке, с помощью цикла for
Три целых числа вводятся в одной строке через пробелы найти их сумму с помощью цикла for обращаясь к индексам. Помогите плз

Найти сумму цифр чисел, записанных в файл
Задача Дан файл, в котором через пробел записаны натуральные числа. Вывести на экран суммы цифр каждого числа. Решение ...

Найти сумму чисел, записанных в виде строки
Помогите пожалуйста, в строке записаны вещественные числа, которые разделены пробелами. Найти сумму этих чисел. В общем есть часть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru