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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2012, 16:48   #1
Ольга198812
Новичок
Джуниор
 
Регистрация: 20.03.2012
Сообщений: 6
По умолчанию Программа с одномерными массивами.

В массиве (5;-16;7;9;6;3;-8;4;0;-12;15;2) найти максимальны и минимальный элементы. Расположить элементы стоящие между ними в порядке убывания и затем найти сумму элементов, имеющих четные индексы и делящиеся на три без остатка.
Заранее огромнейшее спасибо!
Ольга198812 вне форума Ответить с цитированием
Старый 21.03.2012, 17:56   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
В массиве (5;-16;7;9;6;3;-8;4;0;-12;15;2) найти максимальны и минимальный элементы. Расположить элементы стоящие между ними в порядке убывания и затем найти сумму элементов, имеющих четные индексы и делящиеся на три без остатка.
Заранее огромнейшее спасибо!
раз на чём писать не известно пишу на чём хочу))
как то так

Код:
#include <iostream> 
#include <cmath> 
using namespace std; 
 
int main() 
{ 
  int mas_[12] = {5,-16,7,9,6,3,-8,4,0,-12,15,2}, min_, max_, temp, start_, end_;
  min_ = max_ = mas_[0];
  for (int i = 1; i < 12; i++)
  {
  if (mas_[min_] > mas_[i]) min_ = i;
  if (mas_[max_] < mas_[i]) max_ = i;
  }
  if (max_ > min_) 
  {
  start_ = min_;
  end_ = max_;
  }
  else
  {
  start_ = max_;
  end_ = min_;
  }
   for (int i = start_ + 1; i < end_; i++)
		for (int j = start_ + 1; j < end_-i; j++)
           if (mas_[j+1] > mas_[j])
		   {
		   temp = mas_[j+1]; mas_[j+1] = mas_[j]; mas_[j] = temp;
		   }
		   temp = 0;
  for (int i = 0; i < 12; i++)
  {
  if (!(i%2) && !(mas_[i]%3))
  temp += mas_[i]; 
  cout << "mas_[" << i << "] = " << mas_[i] << "\n";
  }
  cout << "\nsum = " << temp;
  return 0; 
}
vovk вне форума Ответить с цитированием
Старый 21.03.2012, 19:55   #3
Ольга198812
Новичок
Джуниор
 
Регистрация: 20.03.2012
Сообщений: 6
По умолчанию

Извиняюсь, на паскале писать)
Ольга198812 вне форума Ответить с цитированием
Старый 21.03.2012, 20:03   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

На паскале мне не интерстно,
покажите наработки = помогу запросто.
vovk вне форума Ответить с цитированием
Старый 21.03.2012, 20:06   #5
Ольга198812
Новичок
Джуниор
 
Регистрация: 20.03.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
На паскале мне не интерстно,
покажите наработки = помогу запросто.
У меня есть только начало, дальше не могу разобраться...
Код:
program lab3;
const n=12;
var i,j,k,p: integer;
max,buf:real;
x:array[1..n] of real;
f: text;
begin
k:=0;
assign(f,'mass3.pas');
reset(f);
for i:=1 to n do
read(f,x[i]);

Последний раз редактировалось ACE Valery; 21.03.2012 в 21:28.
Ольга198812 вне форума Ответить с цитированием
Старый 21.03.2012, 20:21   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

паскаль то какой?
vovk вне форума Ответить с цитированием
Старый 21.03.2012, 20:34   #7
Ольга198812
Новичок
Джуниор
 
Регистрация: 20.03.2012
Сообщений: 6
По умолчанию

паскаль - ABC
Ольга198812 вне форума Ответить с цитированием
Старый 21.03.2012, 20:56   #8
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

У ABC какие то свои хитросплетения, ну да ладно
кстати зачем вам тип real для элементов массива, если заранее известно, что все элементы целочисленные?

дальше всё просто, после того как заполнили массив,
приступаем к поиску минимального и максимального элемента, ищем одновременно и тот и другой за 1 проход,
для начала будем считать, что первый элемент и минимальный, и максимальный о чём и сообщим переменным, k индексом минимального элемента, p максимального

Код:
k:=1;
p:=1;
for i:=2 to n do // надеюсь понятно почему со 2 элемента начали
begin
if (x[i] < x[k]) k:=i;  //если элемент массива с индексом i меньше элемента массива с индексом k , 
//начинаем считать его минимальным, и присваиваем k индес этого элемента, то биш i
if (x[i] > x[p]) p:=i; //по аналогии с минимальным
end;
так теперь я отдыхаю, а вы продолжайте ))

Последний раз редактировалось Stilet; 21.03.2012 в 21:49.
vovk вне форума Ответить с цитированием
Старый 21.03.2012, 21:18   #9
Ольга198812
Новичок
Джуниор
 
Регистрация: 20.03.2012
Сообщений: 6
По умолчанию

Спасибо! но непонятно, почему со второго начали, почему?
Ольга198812 вне форума Ответить с цитированием
Старый 21.03.2012, 21:32   #10
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

А зачем нам 1 элемент проверять? мы же изначально решили, что какой то элемент нужно назначить минимальным, и какой то максимальным, чтобы с ними сверять,
Ну а раз так, то назначили 1 элемент, а если его уже назначили, то зачем его значение с самим собой сравнивать, и так ясно что они равны ))

всё я спать, мысли разбегаются, пальцы заплетаются.
vovk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с одномерными массивами SiNgLeR C++ Builder 5 18.12.2011 16:56
Работа с одномерными массивами С++ chainiksi Помощь студентам 4 21.11.2011 15:12
операции с одномерными массивами chainiksi Общие вопросы C/C++ 2 15.11.2011 17:19
программа на паскале с одномерными массивами Loga Помощь студентам 27 14.01.2010 11:12