Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2009, 20:48   #1
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию поиск суммы последовательных чисел, вводимых с клавиатуры, предшествующих первому введённому нулю

Текст задачи: 'Написать программу поиска суммы последовательных чисел, вводимых с клавиатуры, предшествующих первому введённому нулю. Указание: должен многократно использоваться оператор ввода. Контрольный пример: 1, 2, 3, -4, 5, -2, 0. Результат: 7. '

У меня была данная программка на Pascal'е переделал в C++ что то не работает, число спрашивается только один раз... Помогите найти ошибку...

Код:
#include <iostream.h>
#include <math.h>
#include <conio.h>

void main()
{
int a, sum=0 ,sch=0;
clrscr();
do {
cout << "Vvedite chislo: " << endl;
cin >> a;
sch++;
if (sch==abs(a)) sum=sum+a;
}
while (a==0);
cout << "Rezultat = " << sum;
cin.get();
cin.get();
}
hen вне форума Ответить с цитированием
Старый 22.04.2009, 20:51   #2
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

Все намного проще
Код:
int main()
{
 int a, sum=0;
 while (a!=0)
 { cin>>a;
   sum+=a;
}
cout<<sum;   
}
Цитата:
Контрольный пример: 1, 2, 3, -4, 5, -2, 0. Результат: 7. '
А с чего вы взяли что в этом примере результат будет 7? Вообще-то - 5.
Кто бы ты ни был - не думай о себе слишком (с)

Последний раз редактировалось DM_bite; 22.04.2009 в 20:54.
DM_bite вне форума Ответить с цитированием
Старый 22.04.2009, 20:56   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Оно и видно, что с паскаля переделывали
Код:
#include <iostream.h>
#include <math.h>
#include <conio.h>

int main()
{
int a, sum=0 ,sch=0;
do {
cout << "Vvedite chislo: " << endl;
cin >> a;
sch++;
if (sch==abs(a)) sum=sum+a;
}
while (a!=0);
cout << "Rezultat = " << sum << endl;
getch();
}
repeat-until в do-while )
Цитата:
Сообщение от DM_bite
Все намного проще
Да нет, не все ) Проверьте на приведенном контрольном примере.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 22.04.2009, 20:57   #4
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

Цитата:
Написать программу поиска суммы последовательных чисел, вводимых с клавиатуры, предшествующих первому введённому нулю.
Все, нашел ошибку.
Исправленный вариант:
Код:
int main()
{
 int a, sum=0, mod=0;
 while (a!=0)
 { cin>>a;   
   mod++;
   if (mod ==abs(a))
   {sum+=a;}
}
cout<<sum;  
}
Цитата:
Проверил. Ваш вариант выдает ответ 5, а нужно 7.
Я признал, то что я не прав. и выложил исправленный вариант.
Кто бы ты ни был - не думай о себе слишком (с)

Последний раз редактировалось DM_bite; 22.04.2009 в 21:06.
DM_bite вне форума Ответить с цитированием
Старый 22.04.2009, 21:00   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от DM_bite
я что-то пропустил?
Пропустили )
Цитата:
Написать программу поиска суммы последовательных чисел, вводимых с клавиатуры, предшествующих первому введённому нулю.
Совмещая это с кодом ТС, можно сделать вывод, что нужна сумма последовательных чисел (1,2,3...10,11). При этом числа берутся по модулю.

То есть сумма чисел (1,2,3, 10000, 0) будет равна 6.

Цитата:
Проверьте на этом контрольном примере.
Проверил. Ваш вариант выдает ответ 5, а нужно 7.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 22.04.2009 в 21:03.
Sazary вне форума Ответить с цитированием
Старый 22.04.2009, 21:18   #6
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

Sazary, огромное спасибо, ваш вариант то что нужно
hen вне форума Ответить с цитированием
Старый 22.04.2009, 22:28   #7
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

такой еще вопрос возник, у меня множество различных модификаций с этой программой, вот одна из них: ' Написать программу поиска произведения последовательных чисел, вводимых с клавиатуры, предшествующих первому введённому нулю. Указание: должен многократно использоваться оператор ввода. Контрольный пример: 1, 2, 3, -4, 5, -2, 0. Результат: 240. '

Код:
#include <iostream.h>
#include <math.h>
#include <conio.h>

int main()
{
int a, sum=1 ,sch=0;
do {
cout << "Vvedite chislo: " << endl;
cin >> a;
sch++;
if (sch==a) sum=sum*a;
}
while (a!=0);
clrscr();
cout << "Rezultat = " << sum << endl;
getch();
}
почему то программа отбрасывает '-4; -2', вроде условий отброса отрицательных чисел нет, в чём же заключается ошибка???
hen вне форума Ответить с цитированием
Старый 22.04.2009, 22:48   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

hen Если проводить аналогию с предыдущей задачей, то ответ должен быть -120.
-2 не вписывается в ряд (1,2,3,-4,5).
А ошибка была тут:
Код:
#include <iostream.h>
#include <math.h>
#include <conio.h>

int main()
{
int a, sum=1 ,sch=0;
do {
cout << "Vvedite chislo: " << endl;
cin >> a;
sch++;
if (sch==abs(a)) sum=sum*a;
}
while (a!=0);

cout << "Rezultat = " << sum << endl;
getch();
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 22.04.2009, 23:03   #9
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

Sazary, спасибо большое, что откликнулись, с проблемой разобрался, когда текст набирал допустил ошибку в первой программе 'последовательных чисел' а в этой 'последовательности чисел'

вот рабочий код может кому пригодится в дальнейшем

Код:
#include <iostream.h>
#include <math.h>
#include <conio.h>

int main()
{
int a, sum=1 ,sch=0;
do {
cout << "Vvedite chislo: " << endl;
cin >> a;
sch++;
if ((a>0)||(a<0)) sum=sum*a;
}
while (a!=0);
clrscr();
cout << "Rezultat = " << sum << endl;
getch();
}
hen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск элементов в матрице, не равных нулю ciaonataha Общие вопросы C/C++ 37 29.03.2009 21:29
Дана последовательность с n целых чисел. Найти количество елементов, кратных ее первому елементу Alex1991 Помощь студентам 3 10.03.2009 09:02
вычисление функции по 2-м параметрам вводимых с клавиатуры Sashko Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2008 16:03
Поиск по первому столбцу в Delphi Xeon332 Помощь студентам 2 09.11.2008 05:12
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53