Задан целочисленный массив а из 20 элементов. Из этого массива переписать в массив b подряд все положительные элементы и определить наименьший из них.
Почему у меня не выводится массив b (точнее выводится только один элемент в любом случае)?
#include <STDIO.H>
#include <CONIO.H>
#define NUM 20
void main()
{
clrscr();
int a[NUM], b[NUM];
int i,j;
printf ("\nVvedite 20 chelih 4isel :\n" );
for (i = 0; i < NUM; i++)
{
printf ("%d element massiva --> ", i);
scanf ("%d", &a[i]);
}
for( i = 0,j=0; i < NUM, j<NUM ; i++,j++)
{
if ( a[i] > 0 )
b[j] = a[i];
}
int min = b[0];
for (j = 0; j < NUM; j++)
{
if( b[j] < min)
min = b[j];
}
printf("Min element massiva b = %d", min);
printf ("\nmassiv a \n");
for(i = 0; i < NUM; ++i)
printf("%3d", a[i]);
printf ("\n masssiv b");
for (j=0; j < NUM; ++j);
printf ("%3d",b[j]);
}
Есть подозрение, что вот это у тебя выполняет не совсем то, что ты задумала:
for( i = 0,j=0; i < NUM, j<NUM ; i++,j++) // <---Как ты думаешь, чему равен результат выражения i < NUM, j < NUM ?
...
for (j=0; j < NUM; ++j); // <--- Здесь точка с запятой не нужна совсем
for( i = 0,j=0; i < NUM, j<NUM ; i++,j++) // <---
...
for(i = 0, j=0; i < NUM; i++) {(набирал прямо здесь, только чтобы показать идею)
if( a[i] > 0 ) b[j++] = a[i];
}
int min = b[0]; // <-- Кстати, в чистом С этого делать ЗДЕСЬ нельзя, будет ошибка при компиляции
for (k = 1; k < j; k++) {
if( b[k] < min) min = b[k];
}