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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2018, 15:27   #1
Kogard
 
Регистрация: 12.11.2018
Сообщений: 7
По умолчанию [C++] Массив Х содержит 40 действительных чисел. Переписать в массив Y положительные элементы массива Х с четными номерами и отсортировать его по возрастанию.

Подскажите в чем загвоздка, вроде все работает только в массив Y добавляет еще и нечетные значения.
Вот код:
Код:
#include <stdio.h>
#include <iostream>
#include <algorithm>


using namespace std; 

int main() 
{ 
int X[40], Y[20]; 
int n = 0; 
int k = 0; 


for (int i = 1; i < 40; i++) 
{ 
X[i] = -25 + (rand() % 50); 
cout « "X[" « i « "]: " « X[i] « "\n"; 
} 
for (int i = 0; i <= 40; i++) 
{ 
if (X[i] > 0 && X[i]/2) 
{ 
Y[k] = X[i]; 
k++; 
} 
} 
sort(Y, Y + 20); 
for (int i = 1; i < 20; i++) 
{ 
cout « "Y[" « i « "]: " « Y[i] « "\n"; 
} 
system("pause"); 
return 0; 
}
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 12.11.2018 в 15:34.
Kogard вне форума Ответить с цитированием
Старый 12.11.2018, 15:33   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

1. Вам же индексы нужны четные, а не сами значения
2. Разберитесь с индексами массивов - почему они у вас с 1 в большинстве случаев нумеруются? Почему 40 включается?
3. Для проверки на четность надо проверять остаток от деления, т.к. 41 / 2 = 20 > 0 -> условие выполнено.
p51x вне форума Ответить с цитированием
Старый 12.11.2018, 15:36   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Очень странно, что программа вообще запускается. Для операторов ввода/вывода используются сдвоенные знаки больше/меньше, а у вас кавычки.
Вадим Мошев вне форума Ответить с цитированием
Старый 12.11.2018, 15:42   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Да это скорее всего так скопировалось из блокнота.
p51x вне форума Ответить с цитированием
Старый 12.11.2018, 16:10   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

А в блокнот это как попало?
Вадим Мошев вне форума Ответить с цитированием
Старый 16.11.2018, 10:40   #6
Kogard
 
Регистрация: 12.11.2018
Сообщений: 7
По умолчанию

Немного подредактировал код.
Код:
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	int X[40], Y[20];
	int n = 0;
	int k = 0;

	for (int i = 0; i < 40; i++)
	{
		X[i] = -25 + (rand() % 50);
		cout << "X[" << i << "]: " << X[i] << "\n";
	}
	for (int i = 0; i < 40; i++) 
{
		if (X[i] % 2 == 0)
		{
			Y[k] = X[i];
			k++;
		}
	}

	sort(Y, Y + 20);
	for (int i = 0; i < 20; i++) {
		if (Y[i] > 0)
			cout << "Y[" << i << "]: " << Y[i] << "\n";
	}	
	
	system("pause");
	return 0;
}
Все работает, почти как нужно, но маленький вопрос. Как сделать что бы массив Y нумеровался от 0 и до числа которое будет найдено?
Изображения
Тип файла: png 1.png (7.5 Кб, 39 просмотров)
Kogard вне форума Ответить с цитированием
Старый 16.11.2018, 13:13   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Массив по любому нумеруется от 0. Другое дело, что начальные элементы массива Y после сортировки, видимо, будут <= 0 и потому не отображаются. Чтоб убедиться в этом, достаточно убрать из последнего цикла [I]if (Y > 0) и просмотреть весь массив.

Последний раз редактировалось digitalis; 16.11.2018 в 13:16.
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задан массив из k чисел. Отсортировать элементы массива по возрастанию. На С ZERO186 Помощь студентам 1 11.06.2018 10:22
Массив Х содержит 40 действительных чисел. Переписать в массив Y положительные элементы массива Х с четными номерами и отсортировать его по возрастанию. Kiruxa_UA Помощь студентам 2 22.10.2017 17:24
код из Паскаля в Delphi (Дан целочисленный массив A. Переписать в новый массив В элементы с порядковыми номерами, кратными трём ALEXandr20333 Помощь студентам 8 27.02.2014 11:27
Сформировать массив а[1..12], упорядоченный по возрастанию. Если он содержит заданное число, удалить его из массива schibeki Паскаль, Turbo Pascal, PascalABC.NET 3 30.01.2014 21:43
Переписать в массив C(n) положительные элементы массива b(n) делённые на 2 . Со сдвигом (сжатием) массива. SnS Lazarus, Free Pascal, CodeTyphon 4 29.09.2013 00:21