Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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


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

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

спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
451 / 424 / 66
Регистрация: 11.09.2011
Сообщений: 1,124
08.01.2012, 20:51     Не могу разобраться в условии задачи. #2
VN, чтобы суммировалось из строки:
df78jdfj88
78 и 88, а не 7 + 8 + 8 + 8

Добавлено через 41 секунду
Цитата Сообщение от VN Посмотреть сообщение
В программе предусмотреть ограничение на максимальное число разрядов
скорее всего именно это и имеется ввиду, и наверное не считая нули в начале числа. Как допустим последовательность 06936 должна читаться как 6936
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 Посмотреть сообщение
Написать программу, которая находит сумму чисел во введённой строке
про нули не совсем понятно. Они вроде при суммировании и так не считаются
CJS
49 / 49 / 4
Регистрация: 17.07.2011
Сообщений: 379
08.01.2012, 21:02     Не могу разобраться в условии задачи. #4
Цитата Сообщение от VN Посмотреть сообщение
Написать программу, которая находит сумму чисел во введённой строке
Замечание
Программа рассматривает непрерывные последовательности цифр в строке как числа и обрабатывает их
как единое целое. В программе предусмотреть
ограничение на максимальное число разрядов


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

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

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

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

Цитата Сообщение от VN Посмотреть сообщение
Они вроде при суммировании и так не считаются
Я говорю про чтение последовательности. Допустим вы прочли последовательность 000034, вам сразу не следует проверять это число на разряды. Сначала вы должны отбросить нули и получить 34.
CJS
49 / 49 / 4
Регистрация: 17.07.2011
Сообщений: 379
08.01.2012, 21:06     Не могу разобраться в условии задачи. #6
VN, цифры это : 0,1,2,3,4,5,6,7,8,9 - как на телефоне.
а числа, это несколько цифр подряд(они больше 9 , потому-что все что до 9 - это цифра, состоит из одного элемента) . Числа: 123 , 6666666, 10 , 11 , 604738939 ....
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 ?
CJS
49 / 49 / 4
Регистрация: 17.07.2011
Сообщений: 379
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 и будет та цифра.
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;
}
по сути он нам эту задачу почти сделал....надо только понять что делать с условием.
т.е задачу я хочу сам решить, вот только не могу понять что от меня требуется
CJS
49 / 49 / 4
Регистрация: 17.07.2011
Сообщений: 379
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;
}

А вобще прога просто плюсует между собой стоящие подряд цифры ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2012, 23:20     Не могу разобраться в условии задачи.
Еще ссылки по теме:

Не могу разобраться с dynamic_cast C++
C++ Не могу разобраться с кодом
C++ Табуляция, не могу разобраться
Разобраться с алгоритмом задачи C++

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

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

Ритчи месяца 3 назад открыл,испугался и закрыл. Слишком много технического языка и определений.Но это уже другая тема...
Yandex
Объявления
08.01.2012, 23:20     Не могу разобраться в условии задачи.
Ответ Создать тему
Опции темы

Текущее время: 14:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru