#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
cout.precision(2);
int razgovor = 1; //Требуется для разговора с пользователем
while (razgovor != false)
{
int r, n;
float y[100]; //максимальное допустимое число
while (1)
{
cout << "Введите вектор не ниже 0 и не больше 100: ";
cin >> r;
if ((r > 0) && (r < 100)) break;
else cout << "Повторите ввод" << endl;
}
//Проверка условия
cout << "Введите сумму чисел: " << endl;
for (n = 0; n < r; n++)
{
cout << "y[" << n + 1 << "] = ";
cin >> y[n];
}
//Производится ввод определённого количества чисел
system("cls");
cout << "Исходный вектор: " << endl;
for (n = 0; n < r; n++)
{
cout << fixed << y[n] << " ";
}
//fixed - ставит определённое количество знаков после запятой
for (n = 0; n < r; n++)
{
if
{
cout << endl << "Положительных элементов больше" << endl; break;
}
else
{
cout << endl << "Отрицательных элементов больше" << endl; break;
cout << endl << "Одинаковое количество отр и пол эл " << endl; break;
}
}
cout << "Желаете ли вы продолжить работу с другими данными?(1 да 0 выход)" << endl;
cin >> razgovor;
system("cls");
//Происходит разговор с пользователем о дальнейшей работе или её прекращения
}
system("pause>nul");
return 0;
//Конец цикла
}
Итак, мне нужно чтобы программа определяла каких элементов больше положительных или отрицательных. Но, как не крути у меня не получается реализовать правильное условие так, что оставил пока-что так. Если знаете как помочь, то буду благодарен
C/C++
Создание программы на вычисление большего количества положительных или отрицательных элементов в среде c++
Я правильно понял, что у вас есть некие числа в большом количестве и надо узнать, каких из них больше - положительных или отрицательных?
Если да, то вам ВООБЩЕ не нужен какой-либо массив для их хранения и вся программа будет очень простой и сможет переваривать гигантские объемы данных. Алгоритм такой
Заводим знаковую переменную (лучше типа long long int, чтобы мы могли обрабатывать очень длинные последовательности без опасения переполнения) и инициализируем ее нулем.
Затем в цикле:
1. Считываем строку с очередным числом из STDIN или иного файла, выделяем из нее переменную
2. Преобразуем ее в число, обрабатываем ошибки переполнения, мусора и т. п.
3. Если число больше нуля то увеличиваем знаковую переменную на 1, если равно нулю то ничего не делаем, а если меньше нуля то уменьшаем знаковую переменную на 1
4. Переходим к следующей итерации цикла
По завершении входных данных все что нам нужно - это посмотреть, какого знака будет знаковая переменная.
Если да, то вам ВООБЩЕ не нужен какой-либо массив для их хранения и вся программа будет очень простой и сможет переваривать гигантские объемы данных. Алгоритм такой
Заводим знаковую переменную (лучше типа long long int, чтобы мы могли обрабатывать очень длинные последовательности без опасения переполнения) и инициализируем ее нулем.
Затем в цикле:
1. Считываем строку с очередным числом из STDIN или иного файла, выделяем из нее переменную
2. Преобразуем ее в число, обрабатываем ошибки переполнения, мусора и т. п.
3. Если число больше нуля то увеличиваем знаковую переменную на 1, если равно нулю то ничего не делаем, а если меньше нуля то уменьшаем знаковую переменную на 1
4. Переходим к следующей итерации цикла
По завершении входных данных все что нам нужно - это посмотреть, какого знака будет знаковая переменная.
Юра Хомчуков
Вообще неких чисел нет. По сути мне нужно просто получается что ? К примеру, я, ввожу 6 чисел(-1,2,3,-4,5,3) и тут видно, что положительных чисел больше и программа должна после их осмотра вывести на экран "Положительных чисел больше) или если отрицательных больше то "Отрицательных чисел больше". Ну и 3 вариант ответа "Отрицательных и положительных чисел равное количество", только не уверен реален ли 3 вариант. А, то что вы написали это мне не нужно, мы можно сказать не изучали этого и работает только с массивами и векторами. Уж не помню был ли long long, но STDIN не припоминаю.
Перед циклом проверки добавляете новую переменную int sum, инициализируете её нулем. В условии записываете
if (y[n] > 0) ++sum;
else if (y[n] < 0) --sum;
Если после цикла sum положительная, то положительных элементов больше, если отрицательная - больше отрицательных. Выводить это все нужно естественно после цикла проверки, а не в самом цикле
if (y[n] > 0) ++sum;
else if (y[n] < 0) --sum;
Если после цикла sum положительная, то положительных элементов больше, если отрицательная - больше отрицательных. Выводить это все нужно естественно после цикла проверки, а не в самом цикле
Юра Хомчуков
Что то у меня не получается. Он мне только положительные пишет к else даже не переходит
Сергей Одарченко
И какой в итоге получился цикл с вычислениями?
Похожие вопросы
- Написать программу на C/C++. Найти количество отрицательных элементов под побочной диагональю.
- Ошибка с русскими символами в языке C++ программе xcode. Пропадает если указать большее количество элементов в строке.
- Написать функцию, определяющую количество положительных, отрицательных и нулевых элементов передаваемого ей массива.
- Не могу разобраться. Функция удаления отрицательных элементов вектора
- Составить программу для вычисления значения выражения. C++
- Циклы C++. Создание программ с циклическими конструкциями.
- Вычислить модуль суммы всех отрицательных элементов, сумму всех положительных и разницу между значениями этих сумм
- Код работает некорректно. Язык Си. Нахождение максимального отрицательного элемента матрицы и замена его числом.
- Как удалить элемент массива в C++
- Хочу создать программу на С++, но не знаю как правильно искать знания для создания программы.