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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 21:31   #1
kidkilla
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 14
По умолчанию массивы в с++

вывести 2 минимальных числа
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int i;
int mass[30];
int min1,min2,min3;
void main ()
{
	//int n=30;
	//int mass[30];
	srand(time(NULL));
    for(i=0;i<30;i++)
 {
  mass[i]=rand()%90+10;
  printf("%d\n",mass[i]);
 }
	printf("------------------------\n");
		
	min1=mass[0];
	for(i=1;i<=30;i++)
	{
	{
		if (min1>mass[i])
		min1=mass[i];
	}
	
	min2=mass[i];

	for(i=1;i<=30;i++)
	{
		if(min2>mass[i])
			if (min2>min1)
		min2=mass[i];
	}
	}

	printf("First minimal integer=%d\n",min1);	
	printf("Second minimal integer=%d\n",min2);	
		
}
вопрос. где ошибка и как ее устранить
kidkilla вне форума Ответить с цитированием
Старый 28.05.2011, 21:59   #2
skgwazap
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 40
По умолчанию

Для чего у Вас после второго цикла две { ?
Получается, что третий цикл вложен во второй, и вместо 2 проходов по массиву получаем 30. Это во-первых.
Во-вторых, у Вас объявлен массив из 30 элементов,значит максимальный индекс, по которому можно обратиться в массиве это 29, а Вы пишете i<=30

Код:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int i;
int mass[10];
int min1,min2,min3;
void main ()
{
	//int n=30;
	//int mass[30];
	srand(time(NULL));
    for(i=0;i<10;i++)
 {
  mass[i]=rand()%90+10;
  printf("%d\n",mass[i]);
 }
	printf("------------------------\n");
		
	min1=mass[0];
	for(int i=0;i<10;i++)
	{
		if (min1>mass[i])
		min1=mass[i];
	}
	
	min2=mass[0];

	for(int i=1;i<10;i++)
	{
		if(min1!=mass[i] && min2>mass[i])
		min2=mass[i];
	}

	printf("First minimal integer=%d\n",min1);	
	printf("Second minimal integer=%d\n",min2);	
	getch();
}
изменил размер на 10, чтоб удобнее было
skgwazap вне форума Ответить с цитированием
Старый 28.05.2011, 22:13   #3
kidkilla
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 14
По умолчанию

тогда еще один вопрос
при поиске третьего минимального
Код:
	min3=mass[0];
	for(int i=0;i<30;i++)
		{
		if(min1!=mass[i] && min3>mass[i])
                         if (min3>min2)
		min3=mass[i];
	}
чего не хватает? или что лишнее
kidkilla вне форума Ответить с цитированием
Старый 28.05.2011, 23:53   #4
skgwazap
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 40
По умолчанию

Код:
	for(int i=1;i<30;i++)
	{
		if(min1!=mass[i] && min2!=mass[i] && min3>mass[i])
		min3=mass[i];
	}
skgwazap вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы Dimasht Помощь студентам 3 30.11.2010 20:29
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09
С++, Массивы, динамические массивы. -Sunshine- Помощь студентам 1 19.04.2010 02:17
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
массивы в С++ Chaynik011091 Помощь студентам 51 24.06.2009 14:54