• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Szukanie 3 maksymalnych wartości w tablicy

Object Storage Arubacloud
0 głosów
571 wizyt
pytanie zadane 24 stycznia 2017 w C i C++ przez vega Użytkownik (510 p.)

Cześć, chce znaleźć w tablicy 3 największe watości, wiem jak odnaleźć tą najwiekszą, jednak nie wiem jak zabrać się za pozostałe

podsyłam fragment kodu

int m=tab[0];
    for(int i=1; i<ile; i++)
    {
            if (tab[i]>m) m=tab[i];

    }

 

komentarz 24 stycznia 2017 przez Benek Szeryf (91,010 p.)

Wyklucz element m i zrób to samo. Następnie wyklucz elementy m oraz m1 i raz jeszcze zrób to samo. Otrzymasz m, m1, m2.

 

4 odpowiedzi

+1 głos
odpowiedź 24 stycznia 2017 przez JAKUBW Nałogowiec (33,470 p.)

Najlepiej nie będzie posortować wszystko, bo zabiera to dużo mocy obliczeniowej.

Niestety nie umiem wytłumaczyć tego kodu zrozum to sam:

#include <iostream> //wpisywanie
#include <time.h> //losowanie
#include <stdlib.h> //losowanie
#include <stdexcept> //bledy

using std::cout;
using std::endl;
using std::cin;


void znajdz(int *tab,const std::size_t rozmiar, int &max1, int &max2, int &max3)
{
   if(rozmiar < 3)//jezeli tablica jest mnijesza od 3 elementow to daj blad
      throw std::length_error("Rozmar tablicy musi byc wiekszy od 3!");

   max1 = -2147483648;//daj najmniejsze mozliwe wartosci
   max2 = -2147483648;//daj najmniejsze mozliwe wartosci
   max3 = -2147483648;//daj najmniejsze mozliwe wartosci

   for(std::size_t i = 0;i<rozmiar;i++)
   {
      //cout<<*tab<<endl; //wypisz wartosc jesli chcesz
      if(max1 < *tab){
         max3 = max2;
         max2 = max1;
         max1 = *tab;
      }
      else if(max2 < *tab){
            max3 = max2;
            max2 = *tab;
      }
      else if(max3 < *tab)
         max3 = *tab;

      tab++; //przesun wskaznik na nastepna liczbe
   }
}

int main()
{
   srand(time(NULL));
   const std::size_t rozmiar = 10;
   int tablica[rozmiar];

   for(std::size_t i = 0;i<rozmiar;i++)
      tablica[i] = rand()%100;//wpisz jakies smieci

   int max1,max2,max3;//zmienne na wyniki


   znajdz(&(tablica[0]),rozmiar,max1,max2,max3);//przypisz zmiennym wartosci
   //pierwszy argument to wskaznik na pierwszy element w tablicy

   cout<<"Najwieksze: "<<max1<<" : "<<max2<<" : "<<max3<<endl;//wypisz wynik
   return 0;
}

 

komentarz 24 stycznia 2017 przez 10kw10 Pasjonat (22,880 p.)

czym sie rozni przekazywanie tablicy

void funkcja(int tab[]);

od

void funkcja(int *tab);

jesli w obu przypadkach wywoluje ja sie tak samo

funkcja(tablica);

 

komentarz 24 stycznia 2017 przez JAKUBW Nałogowiec (33,470 p.)
W sumie to sam nie wiem, raczej tylko zapisem. Ten pierwszy oznacza tablicę, a drugi po prostu wskaźnik. Więc powinno się używać twojej 1 wersji gdy pracujemy na tablicach, ale jak kto woli.
+1 głos
odpowiedź 24 stycznia 2017 przez Pajdas Mądrala (5,930 p.)
Zapoznaj się sortowaniem bąbelkowym i wykonaj je trzy razy tzn. że uporządkujesz trzy pierwsze liczy.
+1 głos
odpowiedź 24 stycznia 2017 przez unknown Nałogowiec (39,560 p.)
0 głosów
odpowiedź 24 stycznia 2017 przez 10kw10 Pasjonat (22,880 p.)
Najlepiej jak tablice posortujesz od najwiekszej i wypiszesz tylko 3 pierwsze liczby

Podobne pytania

0 głosów
1 odpowiedź 93 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez roxy32l Początkujący (470 p.)
0 głosów
1 odpowiedź 733 wizyt
pytanie zadane 7 maja 2020 w C i C++ przez Anahan89 Obywatel (1,320 p.)
0 głosów
0 odpowiedzi 129 wizyt
pytanie zadane 13 grudnia 2019 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)

92,568 zapytań

141,421 odpowiedzi

319,626 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...