1

Тема: Порівняти числа, і видати найбільше.

Короче, тут має порівнюватись вік внесених тварин, і написати хто найстарший. Ламаб голову вже 2 години!

#include<iostream>
#include<string>
#include<cmath>
using namespace std;

class Animal
{
private:
  string Name;
  int Age;
  float Price;
public:
  Animal(){}
  Animal(string n, int a, float p) 
  {
    Name = n;
    Age = a;
    Price = p;
  }
  Animal(Animal& g)
  {
    Name = g.Name;
    Age = g.Age;
    Price = g.Price;
  }

  string getName()
  {
    return Name;
  }
  int getAge()
  {
    return Age;
  }
  float getPrice()
  {
    return Price;
  }

  void input()
  {
    cout << "Enter animal" << endl;
    cin >> Name;
    cout << "Enter age of the animal" << endl;
    cin >> Age;
    cout << "Enter price" << endl;
    cin >> Price;

  }

  void output()
  {
    cout <<"It is " << Name << endl;
    cout <<"Age "<< Age << endl;
    cout <<"Price "<<Price << "usd" << endl;
  }

  void theoldest() {
      
     
      //тут має порівнюватись вік усіх внесених тварин, і видати найстаршу!

  }
};

int main()
{
    Animal old;
    int n;
  cout << "Enter amount of animals= ";
  cin >> n;
  cout << endl;
  Animal*t = new Animal[n];
  for (int i = 0; i < n; i++)
  {
    t[i].input();
  }
  cout << endl;
  for (int i = 0; i < n; i++)
  {
    t[i].output();
  }
  old.theoldest();

 //вивід того найстаршого

  system("pause");
  return 0;
}

2

Re: Порівняти числа, і видати найбільше.

Цікаво, яким це чином можна вчити класи та не знати, як шукати максимум? Це якась новітня методика викладання — класи перед базовими алгоритмами, чи ви знаєте, як шукати максимум, але заплуталися з класами?

3

Re: Порівняти числа, і видати найбільше.

По-перше прибери методи input/output з класу. Це моветон. Ба більше, це навіть не збільшить кількість коду.
По-друге, тобі потрібно знайти індекс елементу масиву, в якому найстарша тварина. Нехай спочатку це буде індекс max_index = 0. В циклі порівнюй вік A[max_index] та A[k]. Якщо вік A[k] більше за вік A[max_index], то max_index = k.

На останок, найліпше рішення створити клас Animals, який буде містити масив (або вектор з STL) тварин, й ще методи для обробки цього масиву.

4

Re: Порівняти числа, і видати найбільше.

Та тут і масив не потрібен, але я не розумію, як такий код узагалі міг виникнути. Або я чогось не розумію, або автор питання. І в обох випадках краще усунути непорозуміння перед відповіддю, бо, цілком можливо, це буде відповідь не на те питання.

5

Re: Порівняти числа, і видати найбільше.

Та тут і масив не потрібен

пропагувати nonscalable код в 2019?

6

Re: Порівняти числа, і видати найбільше.

ur_naz написав:

Та тут і масив не потрібен

пропагувати nonscalable код в 2019?

WHAT? Ви спершу пропарсьте своїм зав'язаним на масиви кодом 10 гігабайтів даних, а потім розповідайте мені про немаштабованість. Потокова обробка проробить хоч терабайт.

7

Re: Порівняти числа, і видати найбільше.

ur_naz написав:

Та тут і масив не потрібен

пропагувати nonscalable код в 2019?

*FACEPALM*

8 Востаннє редагувалося ur_naz (16.12.2019 13:10:13)

Re: Порівняти числа, і видати найбільше.

Потокова обробка проробить хоч терабайт.

ок ось вам терабайт даних на віддаленому сервері і функція, що їх обробляє. Ця функція вводиться користувачем. Десь посередині процесу користувач помічає, що увів невірну функцію, помилився в однім числі, чи знак не той поставив. Ваші дії?

9

Re: Порівняти числа, і видати найбільше.

ur_naz написав:

Потокова обробка проробить хоч терабайт.

ок ось вам терабайт даних на віддаленому сервері і функція, що їх обробляє. Ця функція вводиться користувачем. Десь посередині процесу користувач помічає, що увів невірну функцію, помилився в однім числі, чи знак не той поставив. Ваші дії?

Якщо сервер активно завантажує дані повторно, то потрібне кешування. Але явно не на рівні самої програми обробки, цим має займатися підсистема, що їх завантажує - якщо є куди, хай кешує, немає - завантажує наново.
А ви зі своїм масивом при обмеженні в 256М на процес як розв'язуватимете таку проблему?

10

Re: Порівняти числа, і видати найбільше.

сервер ще й падає час від часу...

11

Re: Порівняти числа, і видати найбільше.

ur_naz написав:

сервер ще й падає час від часу...

Так, масив від цього прямо рятує. Мені вже починати про наркоманів згадувати?

12

Re: Порівняти числа, і видати найбільше.

як це масив не врятує? масив можна зберегти на диск і продовжити в будь який час після відновлення сервера. але тут не сервер, а консоль. тож якщо якісь дані не вірно введені, вам треба заново усе заводити, а якщо є контейнер, то можна дані редагувати.
Якби ви читали уважніше, то побачили мою рекомендацію зробити ще один клас-обгортку. і тоді не важливо, чи то масив чи вектор, чи динамічний список.

Доречі, що ви будете робити якщо у вас 2 або більше асинхронних потоки. Чекати?

13

Re: Порівняти числа, і видати найбільше.

Я вже реально хочу подивитися на те, як ви розв'язуєте задачу на пошук максимуму серед (невідомої кількості) введених чисел зі зберіганням масиву на диск та в кілька потоків.

Подякували: 0x9111A, leofun012

14

Re: Порівняти числа, і видати найбільше.

А якщо ви таке напишете, то додам ще кілька умов на кшталт "дані передаються ненадійним каналом, тому потрібні контрольні суми та підписи" та "числа можуть бути довільної довжини".

15

Re: Порівняти числа, і видати найбільше.

каала, уявіть собі Word без документов

16

Re: Порівняти числа, і видати найбільше.

ur_naz написав:

каала, уявіть собі Word без документов

Щось ви рознервувалися, навіть мій нік без помилок написати не вийшло.
Ну добре.

уявьяю...

https://replace.org.ua/uploads/images/931/f7720588b544198c36b1ea9c7c6f6abf.png

17

Re: Порівняти числа, і видати найбільше.

ur_naz написав:

Доречі, що ви будете робити якщо у вас 2 або більше асинхронних потоки. Чекати?

Ну та, я, ви та будь-хто буде чекати, якщо йому ці дані будуть потрібні.
В нас впав сервер, який передавав життєво необхідні дані, що робити?
Прибити всі потоки крім того, що буде намагатися відновити з'єднання з сервером через тайм-аут.
MMORPG сервери як роблять?

18

Re: Порівняти числа, і видати найбільше.

Зрештою так, мультипотік нам може і не допомогти, якщо сервер працює в одноканалі, але..

19

Re: Порівняти числа, і видати найбільше.

от вам ще ввідні:
є два сервера з яких треба взяти 10^9 цілих і скласти і відправити на третій сервер. Відомо що обидва сервери мають різні швидкості передачі даних, причому поточна швидкість кожного змінюється випадково. треба скласти алгорітм, що мінімізує витрати часу.
Завдання підвищеного рівня: сервери видають дані хаотично, але у вигляди пари число,індекс

20

Re: Порівняти числа, і видати найбільше.

ur_naz написав:

от вам ще ввідні:
є два сервера з яких треба взяти 10^9 цілих і скласти і відправити на третій сервер. Відомо що обидва сервери мають різні швидкості передачі даних, причому поточна швидкість кожного змінюється випадково. треба скласти алгорітм, що мінімізує витрати часу.
Завдання підвищеного рівня: сервери видають дані хаотично, але у вигляди пари число,індекс

І як моя фантазія про Word без документів допоможе при цьому? І взагалі - тут ми обговорюємо конкретну задачу. Тут є розділ, присвячений алгоритмам, залюбки поговорю про це там.

Подякували: wander1