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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 20:40   #1
Chopper
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 14
Восклицание В последовательности получить сумму всех членов

Пожалуйста, требуется срочная помощь в решении!

Текст задачи:
Даны натуральное число n, целые числа a, x_1, … , x_n. Если в последовательности x_1, … , x_n есть хотя бы один член, равный a, то получить сумму всех членов, следующих за первым таким членом; в противном случае ответом должно быть число -10.

Требуется решить данную задачу используя все три оператора цикла (for, while, do-while), выполнив одну и ту же часть алгоритма тремя способами.

Уже всю голову сломал, никак не могу сделать. Заранее огромнейшее спасибо!!
Chopper вне форума Ответить с цитированием
Старый 29.11.2012, 21:55   #2
Chopper
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 14
Восклицание

никто не поможет??

хотя бы подскажите где могут быть ошибки! на выходе результаты у циклов разные, хотя должно быть одно и то же число! причем результат цикла while равен двум результатам цикла for(т.е. в два раза больше), а результат do while - трем результатам for!
Код:
// lab_3f.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream> 
#include <ctime> 
using namespace std;
 
int main() 
{ 
	setlocale(LC_ALL, "rus");
    srand((unsigned)time(0)); 
    int a, n, i, j, count=0; 
    int* ARRAY;  
    int SUMMA=0;
 
    cout<<"Введите n: "; 
    cin>>n; 
 
    ARRAY=new int[n]; 
    for(i=0;i<n;i++) 
    { 
        ARRAY[i]=rand()%100; 
        cout<<ARRAY[i]<<" "; 
    } 
    
	cout<<endl; 
    cout<<"Введите a: ";
    cin>>a; 
 //.......................................................................................
    for(i=0;i<n;++i)
	{
        if(ARRAY[i]==a)
		{
            for(j=i+1;j<n;j++)
				SUMMA+=ARRAY[j]; 
            cout<<"Сумма членов последовательности по циклу for: "<<SUMMA<<endl; 
            break;
		}
		else 
            count++;
		if(count==n)
			cout<<-10<<endl;
	}
//.........................................................................................
	while(i<n)
	{
		if(ARRAY[i]==a)
		{
            for(j=i+1;j<n;j++)
				SUMMA+=ARRAY[j]; 
            cout<<"Сумма членов последовательности по циклу while: "<<SUMMA<<endl; 
            break;
		}
		else 
            count++;
    if(count==n) 
        cout<<-10<<endl;
	++i;
	}
//.........................................................................................
	do
	{
		if(ARRAY[i]==a)
		{
            for(j=i+1;j<n;j++)
				SUMMA+=ARRAY[j]; 
            cout<<"Сумма членов последовательности по циклу do while: "<<SUMMA<<endl; 
            break;
		}
		else 
            count++;
    if(count==n) 
        cout<<-10<<endl;
	++i;
	}
	while(i<n);
//.........................................................................................
system("pause");
return 0;
            
}

Последний раз редактировалось Chopper; 29.11.2012 в 22:06.
Chopper вне форума Ответить с цитированием
Старый 29.11.2012, 23:32   #3
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Ваша ошибка в том, что вы не обнуляете SUMMA после каждого цикла. Пусть результат суммы нужных чисел равен числу A. Тогда:
После первого цикла у вас ответ А.
После второго - 2 * A.
После третьего - 3 * A.

Код:
///#include "stdafx.h"
#include <iostream> 
#include <ctime> 
using namespace std;
 
int main() 
{ 
	setlocale(LC_ALL, "rus");
    srand((unsigned)time(0)); 
    int a, n, i, j, count=0; 
    int* ARRAY;  
    int SUMMA=0;
 
    cout<<"Введите n: "; 
    cin>>n; 
 
    ARRAY=new int[n]; 
    for(i=0;i<n;i++) 
    { 
        ARRAY[i]=rand()%100; 
        cout<<ARRAY[i]<<" "; 
    } 
    
	cout<<endl; 
    cout<<"Введите a: ";
    cin>>a; 
 //.......................................................................................
    for(i=0;i<n;++i)
	{
        if(ARRAY[i]==a)
		{
            for(j=i+1;j<n;j++)
				SUMMA+=ARRAY[j]; 
            cout<<"Сумма членов последовательности по циклу for: "<<SUMMA<<endl; 
            break;
		}
		else 
            count++;
		if(count==n)
			cout<<-10<<endl;
	}
	SUMMA = 0;
//.........................................................................................
	while(i<n)
	{
		if(ARRAY[i]==a)
		{
            for(j=i+1;j<n;j++)
				SUMMA+=ARRAY[j]; 
            cout<<"Сумма членов последовательности по циклу while: "<<SUMMA<<endl; 
            break;
		}
		else 
            count++;
    if(count==n) 
        cout<<-10<<endl;
	++i;
	}
	SUMMA = 0;
//.........................................................................................
	do
	{
		if(ARRAY[i]==a)
		{
            for(j=i+1;j<n;j++)
				SUMMA+=ARRAY[j]; 
            cout<<"Сумма членов последовательности по циклу do while: "<<SUMMA<<endl; 
            break;
		}
		else 
            count++;
    if(count==n) 
        cout<<-10<<endl;
	++i;
	}
	while(i<n);
//.........................................................................................
system("pause");
return 0;
            
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 29.11.2012 в 23:36.
kventin_zhuk вне форума Ответить с цитированием
Старый 29.11.2012, 23:43   #4
Chopper
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 14
По умолчанию

Да, буквально полчаса назад это заметил. Но все равно спасибо!
Chopper вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти сумму членов последовательности 3Doleg Паскаль, Turbo Pascal, PascalABC.NET 2 25.11.2012 23:05
Определить количество и сумму членов последовательности Yakov112 Общие вопросы C/C++ 1 21.09.2012 00:40
Вычислить среднее геометрическое всех положительных членов последовательности {Xi},где... Maya Epos Помощь студентам 6 30.03.2011 11:39
Получить число отрицательных членов последовательности (не использовать массивы) Dimati87 Помощь студентам 1 06.03.2009 05:41