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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2010, 10:07   #1
1mposs1ble
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 12
По умолчанию прога работает но с недочетом

Есть массив разбит на 3 части мин и макс элементами, посчитать сумму каждой из частей.
Проблема в том что прога всегда считает первые 2 суммы, а в третьей ошибается, причем может ошибиться на любое число..
Заранее спасибо!



Код:
//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
//---------------------------------------------------------------------------
#include "stdio.h"
#include <iostream> 
#include <conio.h>
using namespace std;
const n = 10; 
//---------------------------------------------------------------------------

int nmax(int mss[n])
{
 int max,k1=1;
 max=mss[1];
 for (int j=1;j<=n;j++)
 if (mss[j]>max)
{
  max=mss[j];
  k1=j;
}
 return k1;
}
int nmin(int mss[n])
{
 int min,k1=1;
 min=mss[1];
 for (int j=1;j<=n;j++)
 if (mss[j]<min)
{
  min=mss[j];
  k1=j;
}
 return k1;
}

int summ(int mss[n],int x,int y)
{
 int sum=0;
 for (int i=x;i<=y;i++)
  sum+=mss[i];
 return sum;
}
int main()
{
cout << "vvedite massiv\n";
int j,mass[n],a,b;
for (j=1; j<=n; j++)
 cin >> mass[j];
a=nmax(mass);
b=nmin(mass);
if (a>b)
 {
  if (b>1)
   cout << "summa 1 ravna " << summ(mass,1,b-1) << "\n";
  else
   cout << "summa 1 ravna 0" << "\n";
  cout << "summa 2 ravna " << summ(mass,b+1,a-1) << "\n";
  if (a<n)
   cout << "summa 3 ravna " << summ(mass,a+1,n) << "\n";
  else
   cout << "summa 3 ravna 0" << "\n";
 }
else
 {
  if (a>1)
   cout << "summa 1 ravna " << summ(mass,1,a-1) << "\n";
  else
   cout << "summa 1 ravna 0" << "\n";
  cout << "summa 2 ravna " << summ(mass,a+1,b-1) << "\n";
  if (nmin(mass)<n)
   cout << "summa 3 ravna " << summ(mass,b+1,n) << "\n";
  else
   cout << "summa 3 ravna 0" << "\n";
 }
getch();
return 0;
}
//---------------------------------------------------------------------------

Последний раз редактировалось Stilet; 25.03.2010 в 07:35.
1mposs1ble вне форума Ответить с цитированием
Старый 24.03.2010, 10:33   #2
skrudjmagdak
Пользователь
 
Регистрация: 02.12.2009
Сообщений: 33
По умолчанию

Помойму у тебя ошибка в цикле. Ты инициализируешь массив:
int mass[n]; где n - размер массива. например 5. Значит у тебя будет массив с 5ю элементами, но цикл нужно задавать не с 1 до 5, а с нуля до 4х т.е. for(j=0;j<=n-1;j++)

т.е. когда у тебя цикл доходит до n, то ты выходишь за твой массив, а там может находится все что хочешь

А разбит на три части это (например) между началом и максимальным, максимальным и минимальным, минимальным и концом?

Последний раз редактировалось Stilet; 25.03.2010 в 07:39.
skrudjmagdak вне форума Ответить с цитированием
Старый 24.03.2010, 15:51   #3
1mposs1ble
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 12
По умолчанию

да
на каком месте будет стоять макс и мин неважно( т.е. кто из них раньше)
1mposs1ble вне форума Ответить с цитированием
Старый 25.03.2010, 07:26   #4
skrudjmagdak
Пользователь
 
Регистрация: 02.12.2009
Сообщений: 33
По умолчанию

Прога работает или еще нет? В 3-х местах цикл нужно изменить. Вроде так все нормально.
skrudjmagdak вне форума Ответить с цитированием
Старый 25.03.2010, 07:40   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
т.е. for(j=0;j<=n-1;j++)
Вообще-то любители Си привыкли писать for(j=0;j<n;j++)
Это не ошибка, но рекомендую всетки привыкать к негласным стандартам
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2010, 07:55   #6
skrudjmagdak
Пользователь
 
Регистрация: 02.12.2009
Сообщений: 33
По умолчанию

Я объясняю новичку. И чтоб он понял откуда взялся это минус 1. Потому что я так тоже путался, знаю посебе. А сейчас пишу как принто. Так что нечего придераться.
skrudjmagdak вне форума Ответить с цитированием
Старый 25.03.2010, 12:16   #7
1mposs1ble
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 12
По умолчанию

да, спасибо!
Все заработало)
1mposs1ble вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прога не работает как надо - код С NightManiak Помощь студентам 2 21.01.2010 08:15
Рекурсия. Не корректно работает прога Driver_09 Помощь студентам 0 23.12.2009 20:02
Прога не работает RockForr Общие вопросы Delphi 5 18.05.2009 16:56