Funkce vracející více instancí

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Dominatorcze 18. 3. 2018 19:54

Zdravím,
Potřeboval bych pomoct s jedním problémem. Ve škole jsme dostali úkol napsat strukturu, jejíž instance maximum a minimum - obě mají za úkol dostat velikost a pozici buď největšího nebo nejmenšího čísla, přičemž mám napsat JEDNU funkci, která bude hodnoty těchto instatncí vracet. Zatím zvládnu ve funkci najdi vrátit jen maximum. Nevím ale jak vrátit maximum i minimum a s tím chci poradit. Prosím bez ukazatelů, jelikož ty jsme ještě nebrali a jde to udělat i bez nich. Ačkoli to nebude efektivní.

Kód k lepšímu porozumění:

Kód: Vybrat vše
#include "stdafx.h"
#include <iostream>

using namespace std;


struct vysledek {
   int pozice;
   int velikost;
};

const int VEL = 3;
typedef int pole[VEL];
pole cisilka;

vysledek najdi(pole vstup) {
   vysledek maximum = { 0,-32000 };//toto je inicializace struktury
   vysledek minimum = { 0,32000 };

   for (int x = 0; x < VEL; x++) {
      cin >> vstup[x];
   }

   for (int i = 0; i<VEL; i++) {
      if (vstup[i]>maximum.velikost) {
         cout << "nasel jsem nove maximum" << endl;
         maximum.velikost = vstup[i];
         maximum.pozice = i;
      }
      else {
         cout << "hledame dal" << endl;
      }
   }   


   return maximum;
   
}



int main()
{

   vysledek data;
   data = najdi(cisilka);
   cout << "pozice max hodnoty:   " << data.pozice << endl << "hodnota:   " << data.velikost << endl;

   system("pause");

   return 0;
}
Dominatorcze
Kolemjdoucí

Odeslat příspěvekod Wikan 18. 3. 2018 20:22

Nevrátíš konkrétní hodnotu ale právě tu strukturu obsahující příslušné hodnoty.
A mám dojem, že pojem "instance" chápeš špatně.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Dominatorcze 18. 3. 2018 21:49

Zkoušel jsem a asi jsem na to došel.
Kód: Vybrat vše
#include <iostream>

using namespace std;


struct vysledek {
   int poziceMax = 0;
   int poziceMin = 0;
   int maximum = -32000;
   int minimum = 32000;
};

typedef int pole[3];
pole cisilka;

vysledek najdi(pole vstup) {

   vysledek vypocet;

   for (int x = 1; x < 4; x++) {
      cin >> vstup[x];

      if (vstup[x] > vypocet.maximum) {
         vypocet.maximum=vstup[x];
         vypocet.poziceMax = x;
      }
      if (vstup[x] < vypocet.minimum) {
         vypocet.minimum = vstup[x];
         vypocet.poziceMin = x;
      }
   }


   return vypocet;
}





int main()
{

   vysledek data;
   data = najdi(cisilka);

   cout << "nejvetsi cislo je: " << data.maximum<<"  "<< "a jeho pozice je: " << data.poziceMax << endl;
   cout << "nejmensi cislo je: " << data.minimum << "  " << "a jeho pozice je: " << data.poziceMin << endl;

   system("pause");

   return 0;
}
Dominatorcze
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník