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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2014, 11:16   #1
yura1234
Пользователь
 
Регистрация: 13.03.2014
Сообщений: 23
По умолчанию Одномерный массив

Описание задания: Дан одномерный массив целых чисел A(N). Среди всех элементов, кроме первого и последнего, найдите такие, у которых сумма двух соседних элементов наибольшая.
Формат входных данных. [N] [1-й элемент массива A] [2-й элемент массива A] и т.д. Элементы массива – целые числа в диапазоне [0,1000]. N - целое число в диапазоне [4, 20].
Формат выходных данных. [индекс искомого элемента массива A] [пробел] [индекс искомого элемента массива A] и т.д.
Рекомендуемое кол-во циклических операторов (без ввода данных): 2

Не представляю как в этом задании нужно использовать циклические операторы, я вижу решение так: ввод данных и из последнего числа вычесть 1 и сложить с этим числом минус единица, получится наибольшая сумма соседних элементов. Помогите пожалуйста.
yura1234 вне форума Ответить с цитированием
Старый 29.03.2014, 12:21   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Обходите массив с помощью цикла начиная со 2го элемента и заканчивая предпоследним. Для каждого элемента вычисляете сумму предыдущего и следующего элементов. Находите максимальное значение суммы.
Вполне можно уложиться в 2 цикла, хотя можно всё уместить в 1.
Streletz вне форума Ответить с цитированием
Старый 29.03.2014, 19:39   #3
yura1234
Пользователь
 
Регистрация: 13.03.2014
Сообщений: 23
По умолчанию

Правильно ли я выполнил задание?
Код:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>



int _tmain(int argc, _TCHAR* argv[])
{
 int A1, A2, S1, S2, N;
 scanf("%d %d", &A1, &A2);


 if (A1 > 1000 || A1 < 0 || A2 > 1000 || A2 < 0)
	{
		printf("invalid input data");
	    _getch();
	    return 0; 
	}

  
for (N = 0;N <= A2-2; N++)
    {
		S1 = N+1;
	}

for (N = 0;N <= A2-3; N++)
    {
		S2 = N+1;
	}

    printf("%d %d", S1, S2);
	_getch();
}
yura1234 вне форума Ответить с цитированием
Старый 29.03.2014, 21:32   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Код полностью не соответствует заданию. Где сам массив, а также поиск максимума и т.д.?
Вот ввод массива и нахождение максимума суммы соседних элементов:
Код:
        for (int i=0; i<n; i++)
	{
		cout<<"Введите элемент массива"<<endl;
		cin>>massiv[i];
	};
	for (int i=1;i<(n-1);i++)
	{
		summa=massiv[i-1]+massiv[i+1];
		if (summa>summ_max)
		{
			summ_max=summa;
			m_max=i;
		};
	};
Дальше сами.
Streletz вне форума Ответить с цитированием
Старый 30.03.2014, 12:10   #5
yura1234
Пользователь
 
Регистрация: 13.03.2014
Сообщений: 23
По умолчанию

как сделать объявление переменной n от 4 до 20 чтобы далее это число передать для данного массива? я просто краб в программировании((
Код:
for (int i=0; i<n; i++)
	{
		cout<<"Vvedite element massiva"<<endl;
		cin>>massiv[i];
	}
yura1234 вне форума Ответить с цитированием
Старый 30.03.2014, 19:05   #6
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
как сделать объявление переменной n от 4 до 20 чтобы далее это число передать для данного массива?
Согласно заданию, N это число элементов массива и оно задаётся пользователем. Обычный int и не более того.
Проверку N на принадлежность к диапазону можно выполнить с помощью обычного оператора if
yura1234, не хочу Вас обидеть, но Вам лучше почитать хороших книг для начинающих, например Харви Дейтел, Пол Дейтел "Как программировать на С++". После прочтения подобные вопросы, обычно, отпадают сами собой.
Streletz вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив X(N,M).Найти номера столбцов массива,все элементы которых четны. Из полученных значений сформировать одномерный массив. darwin1 Паскаль, Turbo Pascal, PascalABC.NET 3 16.03.2014 13:31
Найти одномерный массив элементы которого равны минимальным значениям в строках исходной матрицы и одномерный массив элементы... Richik123 Microsoft Office Excel 1 16.10.2013 15:45
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} Nickolai47 Помощь студентам 5 16.12.2012 14:51
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54