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

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

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

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

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

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

Условие: Дан вещественный массив A[N], в котором не повторяются значение элементов. Вычислить среднее арифметическое элементов массива, расположенных между максимальным и минимальным элементами массива А.

Программный код:
Код:
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
using namespace std;
 
void main()
{
setlocale(LC_ALL, "Rus");
int n;
cout<<"Введите количество элементов N: ";
cin>>n;
double a[100];
double t;
cout<<"Введите элементы массива A: ";
for (int i = 0; i < n; i++)
{
cin>>t;
for (int j=0; j < i; j++)
if (a[j] == t)
{
cout<<"Ошибка"<<endl;
}
a[i] = t;
}
double min = a[0];
double max = a[0];
int i1 = 0, i2 = 0;
for (int i = 0; i < n; i++)
{
if (a[i] < min)
{
min = a[i];
i1 = i;
}
if (a[i] > max)
{
max = a[i];
i2 = i;
}
}
if (i1 + 1 == i2)
{
cout<<"Среднего арифметического нет"<<endl;
}
else
{
double s = 0;
if (i1<i2)
{
for (int i=i1+1; i<=i2-1; i++)
s+=a[i];
s = s/(i2 - i1 - 1);
}
else
{
for (int i=i2+1; i<=i1-1; i++)
s+=a[i];
s = s/(i1 - i2 - 1);
}
cout<<"Средне арифметическое s= "<<s<<endl;
}
system ("pause"); }

Помогите, пожалуйста! Когда я записываю одинаковые значения элементов, он пишет , как и должно быть "ошибка", но следует дальше циклу и считает среднее арифметическое, когда должен идти в начало цикла. Как исправить??
УКАЗАТЕЛИ ИСПОЛЬЗОВАТЬ НЕЛЬЗЯ

Последний раз редактировалось Stilet; 21.05.2014 в 18:12.
Евгения Е вне форума Ответить с цитированием
Старый 21.05.2014, 18:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Первое что пришло в голову:
Код:
for (int j=0; j < i; j++)
if (a[j] == t)
{
 cout<<"Ошибка"<<endl; i--;
} else {
 a[i] = t;
}
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.05.2014, 18:23   #3
Евгения Е
Пользователь
 
Регистрация: 21.05.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Первое что пришло в голову:
Код:
for (int j=0; j < i; j++)
if (a[j] == t)
{
 cout<<"Ошибка"<<endl; i--;
} else {
 a[i] = t;
}
}
Виталий, получается у меня если 2 одинаковые цифры стоят в конце, тогда выдает как надо ошибку и среднее арифметическое не считает. Но если 2 одинаковые цифры стоят в начале, то считает среднее арифметическое (((
Евгения Е вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти одномерный массив элементы которого равны минимальным значениям в строках исходной матрицы и одномерный массив элементы... Richik123 Microsoft Office Excel 1 16.10.2013 15:45
массив с циклом newgeniy Паскаль, Turbo Pascal, PascalABC.NET 3 22.02.2013 18:53
Двумерный массив с вложенным циклом Kirilln Помощь студентам 0 04.11.2012 18:36
Заполнить массив циклом Krasi PHP 15 21.07.2010 18:55
Задача на массив с циклом Superlotles Помощь студентам 1 17.10.2009 16:46