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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2018, 14:15   #1
kirillsor11
Новичок
Джуниор
 
Регистрация: 29.10.2018
Сообщений: 2
По умолчанию Массив

почему у меня не выводит оповещение о том, что в массиве 0 или 1 положительный элементы. как я понял p[i] это кол-во положительных элементов, хотя когда они рядом все отлично. Если сделать так:
Код:
	if (p[i]<=0)
	{
		cout << ("\nВ массиве 0 или 1 положительных элементов ");
	}
то все выводит правильно, а отдельно не получается
Код:
#include<iostream>
using namespace std;
int main()
{
	setlocale(LC_ALL, "RUS");
	int i, n, ibeg = 0, iend = 0, imax, a;
	float max = 0, sum = 0;
	cout << ("Введи размерность массива n="); cin >> n;
	cout << ("Введите элементы массива: ") << endl;
	float*p = new float[n];
	for (i = 0; i < n; i++)cin >> p[i];
	max = p[0];
	for (i = 0; i < n; i++)
		if (abs(p[i]) > abs(max))
		{
			max = p[i];
			imax = i;
		}
	cout << ("\nМаксимальный по модулю элемент массива: ") << max << endl;
	cout << ("Позиция максимального по модулю элемента: ") << imax + 1 << endl;
	for (i = 0; i < n; i++)
		if (p[i] > 0)
		{
			ibeg = i;
			break;
		}
	for (i = ibeg + 1; i < n; i++)
		if (p[i] > 0)
		{
			iend = i;
			break;
		}
	for (i = ibeg + 1; i < iend; i++)sum += p[i];
	cout << ("\nСумма элементов расположенных между 1 и 2 положительными элементами: ") << sum;
	if (p[i]==0)
	{
		cout << ("\nВ массиве 0 положительных элементов ");
	}
	if (p[i]==1)
	{
		cout << ("\nВ массиве 1 положительный элемент");
	}
	if (p[i] > 1 and sum == 0)
	{
		cout << ("\nПоложительные элементы в массиве стоят рядом");
	}
	cout << ("\nПреобразованный массив: ");
	for (i = 0; i < n; i++)
		if (p[i] != 0)
		{
			cout << p[i] << ' ';
		}
	for (i = 0; i < n; i++)
		if (p[i] == 0)
		{
			cout << p[i] << ' ';
		}
	return 0;
}
kirillsor11 вне форума Ответить с цитированием
Старый 29.10.2018, 14:23   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
	if (p[i]==0)
	{
		cout << ("\nВ массиве 0 положительных элементов ");
	}
	if (p[i]==1)
	{
		cout << ("\nВ массиве 1 положительный элемент");
	}
	if (p[i] > 1 and sum == 0)
	{
		cout << ("\nПоложительные элементы в массиве стоят рядом");
	}
Вы осознаете, что здесь p[i] фактически p[iend]. И как вы по одному элементу делаете вывод о наличии положительных элементов в массиве?
p51x вне форума Ответить с цитированием
Старый 29.10.2018, 21:31   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Наверно, скобки {}, заключающие тело цикла, забыл поставить. А взамен - совершенно ненужные в случае одного оператора в if
Код:
 if (p[i]==0)
	{
		cout << ("\nВ массиве 0 положительных элементов ");
	}
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив A размером 3*3. Составить программу, записывающие положительные элементы этого массива A в одномерный массив B, а отрицательные - в одномерный массив C SkaNi Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2017 08:07
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} Nickolai47 Помощь студентам 5 16.12.2012 14:51
С# задан массив 5х5. сформировать массивы А и В. в массив А поместить элементы с четными индексами, в массив В с нечетны Koksa Помощь студентам 0 10.10.2011 11:26
Запись координат в массив в реал тайм, Как записать координаты в массив Dark19 Visual C++ 2 21.06.2011 18:45