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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2013, 16:55   #1
Alexandr-
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 79
По умолчанию Из массива X(N) все положительные элементы записать в массив Y(k)

Язык си.
Из массива X(N) все положительные элементы записать в массив Y(k).
В общем не получается вот эта часть задачи(скорее всего бред пишу), подскажите, как правильно записать.
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main () {
int i,j,N,k; int *X,*Y; 
srand(time(NULL));
X=(int *)malloc(N*sizeof(int));
Y=(int *)malloc(k*sizeof(int));
printf ("vvedite razmer massiva\n");
scanf ("%d",&N);

for (i=0;i<N;i++) {
	X[i] = 5-rand()%N; 
	printf ("%d ",X[i]); }

for (i=0,j=0;i<N;i++) 
	if (X[i]>0) Y[k]=X[i];  
printf ("\nmassiv 2:%d",Y[k]);  

getch (); return 0; }

Последний раз редактировалось Alexandr-; 15.04.2013 в 17:19.
Alexandr- вне форума Ответить с цитированием
Старый 15.04.2013, 17:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
for (int i=0,j=0;i<k;i++)   if (Z[i]>0) Y[j++]=Z[i];
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.04.2013, 17:28   #3
Alexandr-
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 79
По умолчанию

Все равно не выводит (
Alexandr- вне форума Ответить с цитированием
Старый 15.04.2013, 17:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это потому что ты неправильно пишешь код.
Показывай как написал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.04.2013, 18:03   #5
Alexandr-
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 79
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main () {
int i,j,N,k; int *X,*Y; 
srand(time(NULL));
X=(int *)malloc(N*sizeof(int));
Y=(int *)malloc(k*sizeof(int));
printf ("vvedite razmer massiva\n");
scanf ("%d",&N);

for (i=0;i<N;i++) {
	X[i] = 5-rand()%N; 
	printf ("%d ",X[i]); }

for (i=0,j=0;i<N;i++) 
	if (X[i]>0) Y[k++]=X[i];  
printf ("\nmassiv 2:%d",Y[k]);  

getch (); return 0; }
Alexandr- вне форума Ответить с цитированием
Старый 15.04.2013, 18:07   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: Не приводить текст ошибки - дурной тон.
Во-вторых: for (i=0,к=0;i<N;i++)
k нужно инициализировать.
В третьих: printf ("\nmassiv 2:%d",Y[k]); нужно выводить в отдельном цикле.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.04.2013, 18:52   #7
Alexandr-
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 79
По умолчанию

Да ошибка не выводится, просто неправильно работает.
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main () {
int i,N,k; int *X,*Y; 
srand(time(NULL));
X=(int *)malloc(N*sizeof(int));
Y=(int *)malloc(k*sizeof(int));
printf ("vvedite razmer massiva\n");
scanf ("%d",&N);

for (i=0;i<N;i++) {
	X[i] = 5-rand()%N; 
	printf ("%d ",X[i]); }

for (i=0,k=0;i<N;i++) {
	if (X[i]>0) Y[k++]=X[i];} 
for (i=0,k=0;i<N;i++) 
	printf ("\nmassiv 2:%d",Y[k]);  
getch (); return 0; }
Выводит только 1 положительную цифру(10 раз).
Alexandr- вне форума Ответить с цитированием
Старый 15.04.2013, 19:00   #8
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Ё-маё, что там написано и половины не пойму.
Попробую под "свой способ" переделать.
Должно работать везде правильно если не ошибся где-то.

Код:
#include <stdio.h>
#include <iostream>
#include <locale.h>

using namespace std;

int main ()
{
	setlocale(LC_ALL,"Rus");
	int i,j=0,N,k=1,x[512],y[512];
	cout << "Введите размер массива:\n";
	cin >> N;

	cout << "Вводите элементы массива:\n";
	for (i=1;i<=N;i++)
	{
		cin >> x[i];
		if (x[i]>0)
		{
			j++; k++;
			y[j]=x[i];
		}
	}
	
	cout << "\n" << "Массив 2:\n";
	for (i=1;i<k;i++)
		cout << y[i] << " ";
	getch ();
	return 0;
}

Последний раз редактировалось Ghost3; 15.04.2013 в 19:05.
Ghost3 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записать положительные элементы массива X подряд в массив Y. Определить k – количество положительных элементов. Вычислит сумму programmerr Общие вопросы C/C++ 7 16.02.2013 16:40
(Турбо Паскаль)Найти все положительные элементы и переписать их в массив Z Алена_ПИЭ Помощь студентам 0 20.01.2013 16:39
Преобразовать массив W следующим образом: положительные элементы i-ой строки массива W умножить на Xi, i =1,2,..N. sev48fire Помощь студентам 0 08.06.2012 13:50
Сформировать одномерный массив, элементами которого являются все положительные элементы исходного массива... sev48fire Помощь студентам 11 07.06.2012 11:06
Все отрицательные элементы массива А заменить на сумму, а положительные на полусумму предшествующих Lada05 Помощь студентам 1 27.10.2010 15:44