Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VN
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 90
#1

Не могу разобраться в условии задачи. - C++

08.01.2012, 20:48. Просмотров 1032. Ответов 10
Метки нет (Все метки)

Написать программу, которая находит сумму чисел во введённой строке
Замечание
Программа рассматривает непрерывные последовательности цифр в строке как числа и обрабатывает их
как единое целое. В программе предусмотреть
ограничение на максимальное число разрядов


"Написать программу, которая находит сумму чисел во введённой строке"
Вот эту часть преподователь выполнил сам и оставил нам в качестве примера.

Не совсем понятно замечание:
"Программа рассматривает непрерывные последовательности цифр в строке как числа и обрабатывает их как единое целое."
Здесь я так понимаю от меня треубуется если пользователь ввел строку: 098kjhkjh7 7kjhkj что бы ссумировалось только 098?
Но больше всего не понятно вот это:
"В программе предусмотреть ограничение на максимальное число разрядов" - как это понимать? типа что бы сумма не привышала диапазона типа Int например? или как?

спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2012, 20:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу разобраться в условии задачи. (C++):

Разобраться с алгоритмом задачи - C++
Помогите разобраться с алгоритмом, как работает программа. Я понимаю что здесь 38 перестановок. Но мне нужно знать как именно работает эта...

Помогите разобраться с сутью задачи. - C++
Книга: Стивен Прата "Язык программирования С++. Лекции и упражнения. Учебник." 2005г. Глава 8. Посвящена работе с функциями. Попалась...

Не могу разобраться с С++ - C++
Всем Привет, так я кодеру в Делфи. Не давно нашел что мне нужно но оy написан на С. Вот и начался у меня проблемы с кодами. Вот часть...

не могу разобраться.. - C++
Вывести на экран все натуральные числа из диапазона от A до B, в записи которых цифра 7 встречается ровно N раз. При отсутствии чисел с...

Не могу разобраться с класами - C++
На днях приобрел книжку Г. Шилдт Там есть пример #include "stdafx.h" #include <iostream> using namespace std; class...

Не могу разобраться с сортировками - C++
Преподаватель дал задание написать алгоритмы. Я написал и мне все казалось верным, но в самой обыкновенной сортировке пузырьком у меня...

10
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
08.01.2012, 20:51 #2
VN, чтобы суммировалось из строки:
df78jdfj88
78 и 88, а не 7 + 8 + 8 + 8

Добавлено через 41 секунду
Цитата Сообщение от VN Посмотреть сообщение
В программе предусмотреть ограничение на максимальное число разрядов
скорее всего именно это и имеется ввиду, и наверное не считая нули в начале числа. Как допустим последовательность 06936 должна читаться как 6936
0
VN
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 90
08.01.2012, 20:57  [ТС] #3
Цитата Сообщение от dimcoder Посмотреть сообщение
78 и 88, а не 7 + 8 + 8 + 8
может все таки 7+8+8+8 ?
А то получается мне не сумму надо найти а их последовательность. Хотя в условии говорится про сумму.
Цитата Сообщение от VN Посмотреть сообщение
Написать программу, которая находит сумму чисел во введённой строке
про нули не совсем понятно. Они вроде при суммировании и так не считаются
0
CJS
49 / 49 / 4
Регистрация: 17.07.2011
Сообщений: 380
08.01.2012, 21:02 #4
Цитата Сообщение от VN Посмотреть сообщение
Написать программу, которая находит сумму чисел во введённой строке
Замечание
Программа рассматривает непрерывные последовательности цифр в строке как числа и обрабатывает их
как единое целое. В программе предусмотреть
ограничение на максимальное число разрядов


"Написать программу, которая находит сумму чисел во введённой строке"
Вот эту часть преподователь выполнил сам и оставил нам в качестве примера.

Не совсем понятно замечание:
"Программа рассматривает непрерывные последовательности цифр в строке как числа и обрабатывает их как единое целое."
Здесь я так понимаю от меня треубуется если пользователь ввел строку: 098kjhkjh7 7kjhkj что бы ссумировалось только 098?
Но больше всего не понятно вот это:
"В программе предусмотреть ограничение на максимальное число разрядов" - как это понимать? типа что бы сумма не привышала диапазона типа Int например? или как?

спасибо
В примере который Вы привели нужно вот что просуммировать: 98+7+7

А на счет разрядов имеется в виду что если введенное число будет слишком большим, то взять несколько первых цифр и все(а вот сколько брать первых цифр, это уже зависит от того, какое ограничение Вы введете). например если мы взяли ограничение равное 6 и идет строка: aaaaaaaa444ssssssss78ddddd89345969765964935 , то нужно вот что суммировать: 444+78+893459(это первые 6 цифр)
1
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
08.01.2012, 21:03 #5
Цитата Сообщение от VN Посмотреть сообщение
может все таки 7+8+8+8 ?
Нет:
Цитата Сообщение от VN Посмотреть сообщение
непрерывные последовательности цифр

Цитата Сообщение от VN Посмотреть сообщение
Они вроде при суммировании и так не считаются
Я говорю про чтение последовательности. Допустим вы прочли последовательность 000034, вам сразу не следует проверять это число на разряды. Сначала вы должны отбросить нули и получить 34.
1
CJS
49 / 49 / 4
Регистрация: 17.07.2011
Сообщений: 380
08.01.2012, 21:06 #6
VN, цифры это : 0,1,2,3,4,5,6,7,8,9 - как на телефоне.
а числа, это несколько цифр подряд(они больше 9 , потому-что все что до 9 - это цифра, состоит из одного элемента) . Числа: 123 , 6666666, 10 , 11 , 604738939 ....
0
VN
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 90
08.01.2012, 21:16  [ТС] #7
Цитата Сообщение от CJS Посмотреть сообщение
цифры это : 0,1,2,3,4,5,6,7,8,9 ...
а числа, это несколько цифр подряд
На сколько я знаю цифры относятся к символам и рассматриваются только как символы
а числа к значениям для измерения чего либо например.

Добавлено через 7 минут
Цитата Сообщение от CJS Посмотреть сообщение
(а вот сколько брать первых цифр, это уже зависит от того, какое ограничение Вы введете)
Что за ограничение. Откуда его брать?
Цитата Сообщение от dimcoder Посмотреть сообщение
Допустим вы прочли последовательность 000034, вам сразу не следует проверять это число на разряды. Сначала вы должны отбросить нули и получить 34.
что значит проверить на разряды? как это отбросить нули?

Пока только с суммой вроде разобрался

полчуается например если строка jh054;lkjl6 5 430lk
то к 54 + 6 +5 + 430 ?
0
CJS
49 / 49 / 4
Регистрация: 17.07.2011
Сообщений: 380
08.01.2012, 21:19 #8
Цитата Сообщение от VN Посмотреть сообщение
На сколько я знаю цифры относятся к символам и рассматриваются только как символы
а числа к значениям для измерения чего либо например.

аааааа)))) ну это вопрос другой )))))))
да , там они как символы будут рассматриваться, потому Вам нужно из последовательности символов(идущих подряд цифр) , сделать число ... это можно так: (цифра*10+следующая цира)*10+следующая цифра ....
например если идет последовательность: dddfff756kkkggfds , то :

берем ((7*10)+5)*10+6=756.

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


Что за ограничение. Откуда его брать?
Так это произвольно - хотите ставьте ограничение 6 цифр, хотите 5. Поставьте 5 цифр и преподу скажете что поставили 5 цифр ограничение.

там используется таблица ASCII : http://biocyborg.narod.ru/rev/ascii.htm

например код 1 (единицы) равен 49 ... соответственно чтобы получить единицу здесь, то нужно от кода отнять 48. и так чтобы любую цифру получить, нужно от кода отнять 48 и будет та цифра.
0
VN
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 90
08.01.2012, 21:23  [ТС] #9
пример от преподователя он показывает уже как получить из цифры (символа) значение.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# include  <stdio.h>
       
 
int main()
 {        
char  str[80],i=0;
int sum=0;                                         // сумма цифр
puts("Enter  a string:");
fgets(str,80,stdin);
while(str[i]  &&  str[i]!='\n')                 // пока  не  встретим   \0  или  \n
{
if(str[i]>='0'  &&  str[i]<='9')               // символ является цифрой
sum+=str[i]-'0';                              // прибавляем значение  цифры
i++;                                         // переходим к  следующему  символу
}
 
printf("Sum=%d\n",sum);
return 0;
}
по сути он нам эту задачу почти сделал....надо только понять что делать с условием.
т.е задачу я хочу сам решить, вот только не могу понять что от меня требуется
0
CJS
49 / 49 / 4
Регистрация: 17.07.2011
Сообщений: 380
08.01.2012, 22:43 #10
Цитата Сообщение от VN Посмотреть сообщение
пример от преподователя он показывает уже как получить из цифры (символа) значение.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# include  <stdio.h>
     #include <conio.h> // добавьте это чтобы можно было вызвать функцию getch();  
 
int main()
 {        
char  str[80],i=0;
int sum=0;                                         // сумма цифр
puts("Enter  a string:");
fgets(str,80,stdin);
while(str[i]  &&  str[i]!='\n')                 // пока  не  встретим   \0  или  \n
{
if(str[i]>='0'  &&  str[i]<='9')               // символ является цифрой
sum+=str[i]-'0';                              // прибавляем значение  цифры
i++;                                         // переходим к  следующему  символу
}
 
printf("Sum=%d\n",sum);
return 0;
}
по сути он нам эту задачу почти сделал....надо только понять что делать с условием.
т.е задачу я хочу сам решить, вот только не могу понять что от меня требуется
Полистайте книгу авторов Керниган и Ритчи "Язык программирования С". она не емкая, Вы прямо по названию глав и подглав будете находить то, что интересует.
Здесь прокомментил что может сразу на глаза там не попадется.
Кстати , знак && - это логическое "И".

[C]
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# include  <stdio.h>
       
 
int main()
 {        
char  str[80],i=0;         
int sum=0;                                         // сумма цифр
puts("Enter  a string:");                // выводит сообщение в двойных кавычках на монитор
fgets(str,80,stdin);                         // в переменную str помещает все , что введете                    
while(str[i]  &&  str[i]!='\n')                 // пока  не  встретим   \0  или  \n , то будет ввод
{
if(str[i]>='0'  &&  str[i]<='9')               // символ является цифрой
sum+=str[i]-'0';                              // прибавляем значение  цифры
i++;                                         // переходим к  следующему  символу
}
 
printf("Sum=%d\n",sum); 
getch();     // это чтобы результат вычислений остался на экроне до нажатия клавиши какой-нить         
return 0;
}

А вобще прога просто плюсует между собой стоящие подряд цифры ...
0
VN
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 90
08.01.2012, 23:20  [ТС] #11
я знаю что такое &&
getch мне не нужен(хотя раньше пользовался им). Сейчас использую в компиляторе (MVS2010) ctrl+F5 либо F10 (отладка) и окно не закрывается.
поэтому не приходится извращаться с getch;

Ритчи месяца 3 назад открыл,испугался и закрыл. Слишком много технического языка и определений.Но это уже другая тема...
0
08.01.2012, 23:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2012, 23:20
Привет! Вот еще темы с ответами:

Не могу разобраться в потоках - C++
Есть программа которая считывает строку с файла и переводит в Азбуку Морзе,вроде бы всеправильнонаписано но почему то не выполняется...

Не могу разобраться. Сортировка! - C++
#include&lt;stdio.h&gt; #define N 1000 int main() { int n, i, j; int a; scanf(&quot;%d&quot;, &amp;n); //для чего нужна эта...

не могу разобраться с процессом - C++
незнал куда написать необходимо разобраться с процессом прикрепленным ниже а именно принцип работы. При работе с дизасемблером(я еще...

Не могу разобраться в коде - C++
Здравствуйте, нашел код на форуме, он выводит файл в hex виде #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; #include...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.