Тема: Допоможіть написати програму.
Задане ціле n > 0 та послідовність з n дійсних чисел, серед яких є хоча би
одне від’ємне число. Знайти величину найбільшого серед від’ємних чисел цієї
послідовності. (Додаткова вимога: масивів не використовувати).
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Допоможіть написати програму.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Задане ціле n > 0 та послідовність з n дійсних чисел, серед яких є хоча би
одне від’ємне число. Знайти величину найбільшого серед від’ємних чисел цієї
послідовності. (Додаткова вимога: масивів не використовувати).
(Додаткова вимога: масивів не використовувати)
А вказівнити та рядки можна?
Я 2 години шукав в інтернеті інформацію про те, як хоча б задати послідовність, але безрезультатно. В підручниках теж не можу знайти інформацію.
char c[] = "01234...";Чим Вам не послідовність?
Ну добре, змахує на масив, тоді так
char* c = "01...";Мені вдалось, напевно, задати послідовність. А як тепер прописати, щоб воно вибирало від'ємні числа з неї? Ось код:
Chemist-e, а вам не соромно? Ні, школота школотою, але й знущатися... негарно.
Sviatoslav1997: мається на увазі, що користувач буде вводити послідовно n і числа послідовності. Як саме вони будуть представлені в вашій програмі - зовсім інше питання; до речі, вам прямо сказали масивів не використовувати. Скажімо так - для цієї програми цілком достатньо тримати в пам'яті одночасно (тобто, мати такі змінні):
- кількість елементів послідовності n;
- поточний член послідовності (скажімо, a);
- поточний мінімум (найбільший з уведених на даний момент - наприклад, amax).
Можна ще утримувати номер поточного елемента (i), але це вже справа смаку.
А потім вводите елементи по одному, якщо підходить - заносите в amax. Наприкінці виводите amax.
Цікава заява. Не поділитеся, як побітовою арифметикою знайти максимум серед набору чисел (припустимо, знак вхопити з першого біту можна)?
Ну і зовсім не потрібна бітова арифметика для цієї задачі, цілком можливо без уявлення про неї її розв'язати.
Вибачте, але heap - це, схоже, те, що у вас в голові.
Ще раз: я не питав, як перший (знаковий) біт перехоплювати, хоч зауважу, що стандарт C++ не визначає, що саме перший біт має бути знаковим, тому краще все ж порівнювати з 0. Я питав, як за допомогою бітових операцій максимум шукати. Прошу.
Якби вас у універі ще вчили:
1) Читати правила;
2) Ставити теги code;
3) Відповідати на питання, які вам поставили;
4) Не казати, що "якщо комусь невідома побітова арифметика, то не варто продовжувати", доки не вивчите хоча б ввід і вивід даних;
5) Шукати максимум;
6) Застосовувати бульбашковий алгоритм за призначенням;
7) Не користуватися вказівниками там, де вони, по суті, не потрібні -
отоді можна було б про щось говорити.
А поки що:
- код не користується бітовою арифметикою;
- код не шукає максимум.
Сідай, два.
Тоді цікаво від гуру почути,що таке побітова арифметика,в мене помилки то є,але я запропонував свою думку.
Тоді цікаво від гуру почути,що таке побітова арифметика,в мене помилки то є,але я запропонував свою думку.
Вам же кілька разів вже написали - що не побітова, а бітова. (укр. вікі)
Тут якесь самовпевнене хамло трохи вище вважало, що не варто щось пояснювати людям, які не знають, що таке бітова арифметика. Не бачу сенсу ставити планку нижче за нього.
Даю підказку, треба використовувати або стек або чергу
Можливо так?
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n, i = 1;
double buf, max;
cout << "Enter n: ";
cin >> n;
cin >> buf;
while(!(buf < 0) && i <= n) {
cin >> buf;
i++;
}
// Оскільки за умовою є хоча б одне від'ємне число, то ми не перевіряємо чи i==n
max = buf;
for(; i <= n; i++) {
if(buf < 0 && abs(buf) > abs(max))
max = buf;
}
cout << "Max: " << max;
return 0;
}Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися