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

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

29.04.2020, 18:55. Показов 1329. Ответов 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 / 1836 / 933
Регистрация: 16.10.2013
Сообщений: 5,239
Записей в блоге: 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
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
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
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
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
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru