IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Запись в другой массив, Си
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Задан целочисленный массив а из 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]);

}

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Есть подозрение, что вот это у тебя выполняет не совсем то, что ты задумала:
for( i = 0,j=0; i < NUM, j<NUM ; i++,j++) // <--- 
...
Как ты думаешь, чему равен результат выражения i < NUM, j < NUM ?

А насчет одного элемента -
for (j=0; j < NUM; ++j); // <--- Здесь точка с запятой не нужна совсем


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 1.06.2007 17:28) *

Есть подозрение, что вот это у тебя выполняет не совсем то, что ты задумала:
for( i = 0,j=0; i < NUM, j<NUM ; i++,j++) // <--- 
...



Как я понимаю, тут должно быть && вместо , .
А ещё такой вопрос: у меня размерности первого и второго массивов совпадают при описании массивов , но во втором массиве не всегда будет 20 элементов...наверно поэтому он дополняется совершенно посторонними числами...а как этого избежать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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];
}
(набирал прямо здесь, только чтобы показать идею)
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.09.2020 1:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name