Минимальное положительное и максимальное отрицательное
Дан массив A из N целых чисел. Найти и вывести минимальное положительное и максимальное отрицательное числа в этом массиве. Input В первой строке вводится целое число N (1<=N<=1000) — количество чисел в массиве A. Во второй строке вводятся N целых положительных чисел — элементы массива A (-10000<=Ai<=10000). Output Требуется вывести через пробел минимальное положительное и максимальное отрицательное числа в этом массиве. Выводить пробел в конце не нужно. Sample Input 7 1 2 -3 4 -5 0 6 Sample Output 1 -3
#include <stdio.h>
int main()
{
int i,n,a[20000],x,y;
scanf("%d", &n);
for (i=0; i<n; i++)
scanf("%d", &a[i]);
x=a[0];y=a[0];
for (i=0; i<n; i++)
{
if(x>a[i]&& a[i]>0) x=a[i];
}
for (i=0; i<n; i++)
{
if(y==a[i]) y=a[i];
}
for (i=0; i<n; i++)
{
if(y>a[i]) y=a[i];
}
for (i=0; i<n; i++)
{
if(y<a[i]&&a[i]<0) y=a[i];
}
printf("%d %d",x,y);
return 0;
}
В чем может быть проблема, если код не работает только на 50%?
Ответы (2 шт):
если "на пальцах":
int plus,minus;
// элементы массива A (-10000<=Ai<=10000)
plus = 10000; // ищем минимальное положительное
minus = -10000; // ищем минимальное отрицательное
for i:= 0 to n-1 do
begin
if a[i] > 0
then if a[i] < plus then plus:= a[i]
else
else if a[i] > minus then minus:= a[i]
end;
извините за мой Дельфийский, но смысл думается понятен ...
Очень наивное решение:
#include <stdio.h>
#include <limits.h>
// Мы уверены в том, что в массиве есть
// и отрицательные, и положительные числа
int main() {
int minus = INT_MIN;
int plus = INT_MAX;
int N, number;
scanf("%d", &N);
for (int i = 0; i < N; ++i) {
scanf("%d", &number);
if (number > 0 && number < plus) {
plus = number;
}
if (number < 0 && number > minus) {
minus = number;
}
}
printf("%d %d", plus, minus);
return 0;
}