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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2011, 22:41   #1
sp.caster
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 60
По умолчанию наименьший положительный элемент

Дана последовательность N целых чисел. Найти наименьший положительный элемент этой последовательности.

Входные данные
Вы вводите количество чисел N, и N целых чисел - элементов этой последовательности. Количество чисел не превышает 10000, каждый элемент последовательности не превышает по абсолютной величине 1000.
Выходные данные
Вывести на экран искомый элемент. Если в последовательности нет положительных элементов - вывести 0.

Пример входных и выходных данных:

Входной файл (test.in)
7 -4 4 -7 3 0 8 2

Выходной файл (test.out)
2

Моя программа:
Код:
#include <iostream>
#include <cmath>

using namespace std;


int main()
{
	int i, N=1, min=1, mas[10000];
	freopen("test.in", "r", stdin);
	freopen("test.out", "w", stdout);
	scanf("%d %d", &N, &mas[N]);
	for (i=1; i<=N; i++)
	{
		if (mas[i]>0)
			if (mas[i]<min)
			min=mas[i];		
	}	
	printf("%d", min);
}

Проблема: Не правильно считает, в выходном файле пишет " 1 " . Я так понимаю, это из-за заданного min=1, но если значение min не приравнивать ни к чему, программа при запуске ругается на что-то. Да и нужно еще добавить условие к программе, что если положительных элементов нет, чтобы вывело " 0 ", а где его дописать, не знаю. Если после второго if написать else, по логике вещей так и нужно, то else присваивается к последнему if, а нужно к первому. Как то так...
sp.caster вне форума Ответить с цитированием
Старый 07.05.2011, 00:33   #2
Violettpu
Новичок
Джуниор
 
Регистрация: 06.05.2011
Сообщений: 2
По умолчанию

Во первых, в результате точно будет 1, т.к с начала вы делали присваивание min = 1. 1 - Навсегда наименьшее положительное число. И так, вам надо менять значение присваивания : min = 1001 ( т.к "каждый элемент последовательности не превышает по абсолютной величине 1000"). Если положительных элементов нет, значение min не будет изменять и равно 1001.
Во вторых, вы не читали все значения в входном файле, а только N - кол. элементов и первое значение последовательности!
Вот такая работает...
Код:
#include <iostream>

using namespace std;

int main()
{
	int i, N, min=1001, mas[10000];
	freopen("test.in", "r", stdin);
	freopen("test.out", "w", stdout);
	scanf("%d", &N);
	for (i=0; i<N; i++)
	{
		scanf("%d",&mas[i]);
		if (mas[i]>0)
			if (mas[i]<min)
			min = mas[i];		
	}	
	if (min == 1001) printf("0");
	else
	printf("%d", min);
}
Ну, подождите и обсуждаем! Если в этом случае не надо сохранять значения последовательности, т.е не надо массив mas!
Вот такая лучше
Код:
#include <iostream>

using namespace std;

int main()
{
	int i, N, k, min=1001;
	freopen("test.in", "r", stdin);
	freopen("test.out", "w", stdout);
	scanf("%d", &N);
	for (i=1; i<=N; i++)
	{
		scanf("%d",&k);
		if (k>0)
			if (k<min)
				min=k;
	}	
	if (min == 1001) printf("0");
	else
	printf("%d", min);
}

Последний раз редактировалось Violettpu; 07.05.2011 в 00:43.
Violettpu вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти наименьший отрицательный элемент выше побочной диагонали и наименьший положительный ниже (Pascal) Tifa Помощь студентам 10 28.01.2011 08:23
Надо найти наименьший по МОДУлю Элемент Kembell13 Помощь студентам 1 29.12.2010 20:54
одномерные массивы(C++) - Найти максимальный положительный элемент и вычислить сумму элементов массива Scarletred Помощь студентам 2 03.04.2010 03:08
наименьший элемент каждой четной строки матрицы Siluet Помощь студентам 1 29.12.2009 20:57
Удалить первый положительный элемент после максимального pavel42 Помощь студентам 3 25.05.2009 15:30