Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
11 / 0 / 0
Регистрация: 09.04.2018
Сообщений: 48
1

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

21.04.2018, 12:15. Показов 1831. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот мой код:
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
#include <stdlib.h>
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
    char string[100]; // строка целых чисел
    setlocale(LC_ALL, "rus");
    cout << "Введите строку чисел(числа отделяются друг от друга запятой): ";
    cin >> string;
 
    int index = 0; // индекс символа в строке
    int sum = 0;
 
    while (string[index] != '\0') //  пока не конец строки
    {
        if ((string[index] != ',') && (string[index]/1==string[index]) && (string[index]/string[index]==1)) // если текущий символ не запятая
        {
            sum += atoi((string + index)); // суммируем число
            while (string[index] != ',')
            index++; // увеличиваем индекс до тех пор пока не встретим запятую
        }
        else // текущий символ запятая
            index++; // инкремент индекса
    }
 
    cout << "Сумма чисел = " << sum << endl;
    return 0;
}
открывает окно, ввожу числа, но потом программа перестает работать. Укажите пожалуйста на ошибку!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2018, 12:15
Ответы с готовыми решениями:

Найти сумму простых чисел в строке
Ребят,очень нужно сделать,помогите пожалуйста Дана строка до точки, группа символов в которой...

Найти сумму простых чисел в строке.
Например: vbdfgdfsf2fsggbvb fgdf3fdgf 234fg gdfgd199 Результат:204 Вот код, который я написал (но...

Массив целых чисел состоит из n элементов, найти сумму простых чисел, входящих в него
массив целых чисел состоит из n элементов, найти сумму простых чисел, входящих в него.

Найти сумму простых чисел от 1 до А
Найти сумму простых чисел от 1 до А. Пожалуйста поясните алгоритм.. program hjk; var...

12
 Аватар для LegionK
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
21.04.2018, 12:56 2
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
#include <iostream>
#include <cmath>
#include <vector>
 
using namespace std;
 
bool isprime(int n){
    if(n == 1)return false;
    for (int i = 2; i<=sqrt(n); i++)
        if (n % i == 0)
            return false;
    return true;
}
 
int main(int argc, char *argv[])
{
    int sum(0);
    string s,temp;
    vector<int>v;
    getline(cin,s);
 
    temp = s;
    temp.erase(temp.find(','));
    v.push_back(stoi(temp));
 
    while(s.find(',') != s.npos){
        temp = s;
        temp.erase(0,temp.find(',')+1);
        if(temp.find(',') == temp.npos){
            v.push_back(stoi(temp));
            break;
        }
        temp.erase(temp.find(','),temp.length());
        v.push_back(stoi(temp));
        s.erase(0,s.find(',')+1);
    }
    for(int i = 0;i<v.size();++i){
        if(isprime(v.at(i)))sum+=v.at(i);
    }
    cout << sum << "\n";
    cout << endl;
    return 0;
}
Судя по комментариям, нужно числа запятыми отделять
1
11 / 0 / 0
Регистрация: 09.04.2018
Сообщений: 48
21.04.2018, 13:05  [ТС] 3
не работает
Миниатюры
Найти сумму простых чисел в строке  
0
 Аватар для LegionK
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
21.04.2018, 13:31 4
myrlika,Не работало бы - не кидал)
Миниатюры
Найти сумму простых чисел в строке  
0
Объявлятель переменных
 Аватар для SpBerkut
1220 / 406 / 320
Регистрация: 24.09.2011
Сообщений: 1,274
21.04.2018, 13:36 5
Ошибка у Вас была при поиске запятой. Вот тут:
C++
1
while (string[index] != ',') index++; // увеличиваем индекс до тех пор пока не встретим запятую
В поисках этой запятой вы выходили за границы массива.

Я не понял, что Вы имели в виду, когда писали про простые числа? Ваш код пытался суммировать всё подряд.
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
#include <stdlib.h>
#include <string.h>
#include <iostream>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    char string[100];
    cin >> string;
 
    int index = 0;
    int sum = 0;
    
    while (index < strlen(string))
    {
        sum += atoi(string+index);
        while ((string[index] != ',') && (index < strlen(string)))
            index++;
        index++;
    }
 
    cout << "Сумма чисел = " << sum << endl;
 
    return 0;
}
0
2 / 2 / 6
Регистрация: 20.04.2018
Сообщений: 12
21.04.2018, 15:02 6
Лучший ответ Сообщение было отмечено myrlika как решение

Решение

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
#include <cstdlib>
#include <iostream>
 
bool is_prime(int n)
{
    if(n < 2) return false;
    for(int i = 2; i*i <= n; ++i)
        if(n % i == 0) return false;
    return true;
}
 
bool is_digit(char c)
{
    return c >= '0' && c <= '9';
}
 
int main()
{
    char str[100];
    std::cin.getline(str, 100);
 
    int n, sum = 0;
 
    for(char* pc = str; *pc != 0 && (pc-str) < 100; ++pc)
    {
        if(is_digit(*pc))
        {
            n = 0;
            for(; is_digit(*pc); ++pc)
                n = n * 10 + (*pc - '0');
 
            if(is_prime(n))
                sum += n;
 
            while(is_digit(*pc))
                ++pc;
        }
    }
 
    std::cout << "Сумма чисел: " << sum;
 
    return 0;
}
Думаю, тут не требуется делать сложную программу, вот простой вариант, фактически складывает все простые числа отделенные чем угодно друг от друга.
1
 Аватар для Новичок
1682 / 1095 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
21.04.2018, 15:14 7
Цитата Сообщение от Олегсандер Посмотреть сообщение
bool is_digit(char c)
В стандартной библиотеке уже есть функция isdigit(хедер cctype кажется).
0
0 / 0 / 0
Регистрация: 21.04.2018
Сообщений: 30
21.04.2018, 15:35 8
А если нужно из текста выделить отдельно слова, то как это реализовать? Просто ищем до пробела, вносим в массив/строку слово или как? И как после/до этого подсчитать количество символов (без пробелов) в тексте? просто подкиньте мысль, а то я не понимаю как это реализовать.
0
 Аватар для LegionK
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
21.04.2018, 17:07 9
Devestagion, дай полное задание, пожалуйста, а лучше создай новую тему
0
11 / 0 / 0
Регистрация: 09.04.2018
Сообщений: 48
22.04.2018, 19:18  [ТС] 10
А не могли бы вы немного объяснить? Просто не совсем вс понятно. bool is digit, pc - это для чего?

Добавлено через 4 минуты
Цитата Сообщение от Олегсандер Посмотреть сообщение
Думаю, тут не требуется делать сложную программу, вот простой вариант, фактически складывает все простые числа отделенные чем угодно друг от друга.
А не могли бы вы немного объяснить? не совсем понятно что такое bool is digit и что такое pc?
0
2 / 2 / 6
Регистрация: 20.04.2018
Сообщений: 12
22.04.2018, 19:29 11
Лучший ответ Сообщение было отмечено myrlika как решение

Решение

myrlika,
Ну bool is_digit это функция проверяющая, является ли символ цифрой
pc - указатель на символ, тут требуется для прохода по массиву, в принципе если от этого вам будет легче можно написать цикл так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int i=0; str[i] !=  0 && i < 100; ++i)
{
        if(is_digit(str[i]))
        {
            n = 0;
            for(; is_digit(str[i]); ++i)
                n = n * 10 + (str[i] - '0');
 
            if(is_prime(n))
                sum += n;
        }
}
0
11 / 0 / 0
Регистрация: 09.04.2018
Сообщений: 48
22.04.2018, 19:46  [ТС] 12
спасибо, вы очень помогли!
0
11 / 0 / 0
Регистрация: 09.04.2018
Сообщений: 48
30.04.2018, 12:52  [ТС] 13
а как реализовать эту программу до точки?
то есть я ввожу числа, и как только в конце строки появляется точка программа выводит сумму
0
30.04.2018, 12:52
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2018, 12:52
Помогаю со студенческими работами здесь

Найти сумму простых чисел
АССЕМБЛЕР в поле байт, начиная с адреса 0200 по 021E найти сумму простых чисел. использовать...

Найти сумму простых чисел
помогите, пожалуйста мне срочно нужна задание: дан массив целых чисел A. Найти сумму простых чисел.

Найти сумму простых чисел
Здравствуйте. Нашел код по вычислению простых чисел, помогите найти их сумму. int p, l; ...

Найти сумму простых чисел от 1 до а
HELP ME!!!! предложить самый оптимальный алгоритм определения, является ли n простым числом....


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как клонировать определенную ветку в Git
bytestream 24.01.2025
Одной из ключевых функций Git является возможность клонирования веток, что позволяет создавать локальные копии удаленных репозиториев и работать с определенными версиями проекта. Этот механизм. . .
Как в цикле обойти строки DataFrame в Pandas Python
bytestream 24.01.2025
DataFrame представляет собой одну из основных структур данных в библиотеке Python Pandas, которая организует информацию в виде двумерной таблицы с строками и столбцами. Эта структура данных особенно. . .
Как получить имя текущей ветки в Git
bytestream 24.01.2025
При работе с Git часто возникает необходимость определить имя текущей ветки, в которой ведется разработка. Знание текущей ветки является критически важным аспектом для эффективного управления. . .
Как отсортировать массив объектов по значению поля объекта в JavaScript
bytestream 24.01.2025
При разработке веб-приложений на JavaScript разработчики часто сталкиваются с необходимостью работать с массивами объектов. Эти структуры данных представляют собой упорядоченные наборы элементов, где. . .
Ошибка "src refspec master does not match any" при пуше коммита в Git
bytestream 24.01.2025
При работе с системой контроля версий Git разработчики нередко сталкиваются с различными ошибками, одной из которых является сообщение "src refspec master does not match any". Эта ошибка возникает. . .
Как округлить не более двух цифр после запятой в JavaScript
bytestream 24.01.2025
При работе с числами в JavaScript разработчики часто сталкиваются с необходимостью округления десятичных значений до определенного количества знаков после запятой. Это особенно важно при работе с. . .
Как сделать UPDATE из SELECT в SQL Server
hw_wired 24.01.2025
В современных системах управления базами данных операции обновления и выборки данных являются фундаментальными инструментами для работы с информацией. SQL Server предоставляет мощные команды UPDATE и. . .
Как вставить элемент в массив на указанный индекс в JavaScript
hw_wired 24.01.2025
Массивы являются одной из фундаментальных структур данных в JavaScript, предоставляющей разработчикам мощный инструмент для хранения и управления упорядоченными наборами данных. Они позволяют хранить. . .
Чем отличаются HashMap и Hashtable в Java
hw_wired 24.01.2025
В мире разработки на Java существует множество инструментов для работы с коллекциями данных, и среди них особое место занимают структуры данных для хранения пар ключ-значение. HashMap и Hashtable. . .
Как конвертировать видео в GIF
hw_wired 24.01.2025
В современном мире анимированные изображения стали неотъемлемой частью цифровой коммуникации. Формат GIF (Graphics Interchange Format) представляет собой особый тип файлов, который позволяет. . .
Как скопировать текст в буфер обмена на JavaScript во всех браузерах
hw_wired 24.01.2025
Копирование текста в буфер обмена стало неотъемлемой частью современных веб-приложений, значительно улучшающей пользовательский опыт и упрощающей работу с контентом. В эпоху активного обмена. . .
Как скрыть клавиатуру на Android
hw_wired 24.01.2025
При разработке Android-приложений часто возникает необходимость управлять видимостью экранной клавиатуры для улучшения пользовательского опыта. Одним из наиболее эффективных способов контроля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru