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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2015, 17:37   #1
AgitoLeviafan
Пользователь
 
Регистрация: 21.11.2015
Сообщений: 20
По умолчанию Помогите найти ошибку

Если минимальный стоит перед максимальным то он считает кол-во ,а если наоборот то выводит почему то 0,по отдельности части программы работают,в чем ошибка?

Код:
#include<iostream>
using namespace std;
int main(){
const int n=15;
int x[n],i,nmin=0,nmax=0,k=0,p=0;
for(i=0;i<n;i++) {
	cout<<"x["<<i<<"]:";
	cin>>x[i];}
//	nmin=0;
//	nmax=0;
	for(i=0;i<n;i++){
	if(x[i]<x[nmin])nmin=i;}
//	cout<<"nomer min el ="<<nmin<<"ego znachenie"<<x[nmin]<<endl;
    for(i=0;i<n;i++){
	if(x[i]>x[nmax])nmax=i;}
	
	
	
  //  if(x[nmax]>x[nmin]){
//	for(i=nmax+1;x[i]>x[nmin];i++)
//	if(x[i]<0)
//	p++;}
    if(x[nmin]<x[nmax]){
	for(i=nmin+1;x[i]<x[nmax];i++)
	if(x[i]<0)
	p++;}
	
	else if(x[nmin]>x[nmax]){
	for(i=nmin+1;x[i]>x[nmax];i++)
	if(x[i]<0)
	p++;}
	
	cout<<p;
//	cout<<"Kol-vo otric elementov mezhdu max i min:"<<;
	system("pause");
    return 0;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 12.12.2015 в 17:50.
AgitoLeviafan вне форума Ответить с цитированием
Старый 12.12.2015, 18:26   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Вместо:

Код:
    if(x[nmin]<x[nmax]){
	for(i=nmin+1;x[i]<x[nmax];i++)
	if(x[i]<0)
	p++;}
	
	else if(x[nmin]>x[nmax]){
	for(i=nmin+1;x[i]>x[nmax];i++)
	if(x[i]<0)
	p++;}

Пиши:


Код:
    p = nmax - nmin;
    if (p < 0)  p *= -1;
    if (p > 0)  p--;



************************* UPDATE *************************

Вы хоть задание пишите, я не доглядел, что нужно выводить количество Отрицательных элементов.

Примерно так:
Код:
if (nmin>nmax) {
     int temp = nmin;
     nmin = nmax;
     nmax = temp;
}
for(i=nmin+1;i<nmax;i++) {
    if (x[i]<0) p++;
}
И этот вариант не предусматривает ситуаций с наличием в массиве повторяющихся элементов....
Skype: CODERua

Последний раз редактировалось [CODER]; 12.12.2015 в 19:54.
[CODER] вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти седловые точки в матрице(помогите найти ошибку) - pascal tdsotm Помощь студентам 0 20.11.2014 18:57
С++ Помогите найти ошибку Епифан Суровый Помощь студентам 2 08.05.2014 07:24
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10
помогите найти ошибку lg12 Помощь студентам 6 18.08.2009 18:26