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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2013, 00:49   #1
Konsyello
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 26
По умолчанию Помогите устранить ошибку в готовом коде

Условие:Даны действительные числа A[1],A[2],A[3],...,A[n]. Найти сумму чисел этой последовательности, расположенных между максимальным и минимальным числами (в сумму включить и оба этих числа).
Код:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define N 10
int main()
{
    int sum = 0,
        i,
        mass[N],
        imax=0,
        imin=0;
    int i1,i2;

    printf("\n Vvedite 10 chisel: ");
    for(i = 0; i < N; i++)
        scanf_s("%i", &mass[i]);
    printf("\n Ishodnaya stroka : ");
    for(i = 0; i <N; i++)
        printf("%d ", mass[i]);

    imin = imax = 0;
	
  for(i = 0; i <N; i++)
    {
        if(mass[imin] > mass[i])
        {
         imin=i;
        }

		else (mass[imax] < mass[i]);
        {
         imax=0;
        }
    }
	
	sum=0;
	for(i=0;i< N ;i++);
				if(imin<imax)
				{
					i1=imin;
					i2=imax;
				}
				else
				{
					i1=imax;
					i2=imin;
				}
				i=i1;
				for(i=i1;i<=i2;i++)
					sum+=mass[i];
				printf("\n Sum between max & min:%i", sum);

				return 0;
}
Проблема в том, что в результате сумма высчитывается неверно((
Konsyello вне форума Ответить с цитированием
Старый 08.11.2013, 01:27   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Не проверял:
Код:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define N 10

int 
main()
{
    int sum = 0, i, mass[N], imax = 0, imin = 0;
    printf("Vvedite 10 chisel:\n");
    for (i = 0; i < N; ++i)
        scanf_s("%i", &mass[i]);
    printf("\nIshodnaya stroka:\n");
    for (i = 0; i < N; ++i)
        printf("%d ", mass[i]);
    printf("\n");
    for (i = 1; i < N; ++i)
        if (mass[i] < mass[imin])
            imin = i;
        else if (mass[i] > mass[imax])
            imax = i;
    if (imin > imax) {
        i = imin;
        imin = imax;
        imax = i;
    }
    for(i = imin; i <= imax; ++i)
        sum += mass[i];
    printf("\nSum between max & min: %i", sum);
    return 0;
}
Основная ошибка:
Код:
else (mass[imax] < mass[i]);
{
    imax=0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.11.2013, 10:47   #3
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Если скажем есть минимальное(максимальное) число,которое встречается дважды,трижды и т.д.
сумма должна считать с первого вхождения мин(макс) числа?

0 3 3 3 3 3 3 0 2 1000
сумма 1002 или 1020?
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 08.11.2013, 22:59   #4
Konsyello
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 26
По умолчанию Спасибо) Программа работает отлично!

Не могли бы вы помочь и с этой задачей.
Условие: Даны действительные числа A[1],A[2],A[3],...,A[n].Получить новую последовательность, выбросив из исходной все члены созначением max(A[1],A[2],A[3],...,A[n]).
Мои нароботки:
Код:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define N 10

int main()
{
	int mass[N];
	int max=mass[0];
	int i=0;
	int i1;

	 printf("Vvedite 10 chisel:\n");

        for (i = 0; i < N; ++i)
        scanf_s("%i", &mass[i]);
        printf("\nIshodnaya stroka:\n");

           for (i = 0; i < N; ++i)
           printf("%d ", mass[i]);
           printf("\n");

	       max=mass[0];

	          for(i=0;i<N;i++);
	          {
		         if(max<mass[i])
			     max=mass[i];
	          }
	    
		         for(i1=0;i1<N;i1++);
	             {  if(max=mass[i])
	               {
                    for(i1=0;i<N-1;i1++);
		               mass[i1]=mass[i1+1];
				        N--;
	               }	
		         }
				        printf("New massiv\n");
                        printf("%d ", mass[i]);
                        printf("\n");

		 return 0;
}
Konsyello вне форума Ответить с цитированием
Старый 08.11.2013, 23:26   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define N 10

int
main()
{
    int count = N, mass[count], max = mass[0], i, tmp;
    printf("Vvedite %d chisel:\n", count);
    for (i = 0; i < count; ++i)
        scanf_s("%i", &mass[i]);
    printf("\nIshodnaya stroka:\n");
    for (i = 0; i < count; ++i)
        printf("%d ", mass[i]);
    printf("\n");
    for(i = 1; i < count; ++i)
        if (max < mass[i])
            max = mass[i];
    for (i = tmp = 0; i < count; ++i)
        if (mass[i] != max)
            mass[tmp++] = mass[i];
    count = tmp;   
    printf("New massiv\n");
    for (i = 0; i < count; ++i)
        printf("%d ", mass[i]);
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно устранить ошибки в коде (C++) Wolf6666 Помощь студентам 0 12.06.2012 16:54
помогите найти ошибку в коде Saka Помощь студентам 6 07.12.2009 11:43
Устранить ошибку в коде Divoha Общие вопросы C/C++ 11 27.06.2009 15:13
помогите найти ошибку в коде xaero93 Помощь студентам 4 20.04.2009 16:05
помогите найти ошибку в коде Joker88 Помощь студентам 1 04.03.2008 12:43