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

zadanie,losowanie bez powtorzen

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
306 wizyt
pytanie zadane 20 czerwca 2018 w C i C++ przez Nowacx02 Obywatel (1,060 p.)

Witam robię zadanie z kursu programowania na cpp0x które brzmi następująco:

"1. Napisz program, który wczyta 3 liczby podane przez użytkownika do tablicy, a następnie wylosuje 2 z nich bez powtórzeń. Wynik wypisz na ekran. Postaraj się napisać ten program w oparciu o funkcje"

Na razie napisałem taki kod który o dziwo działa i mam pytanie czy da się to zrobić jakoś lepiej? Bo wiem że ten mój sposób to tak na skróty i w praktyce nieprzydatny a nie mogłem wpaść na inny pomysł.

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>

using namespace std;


int main()
{
    int tablica[3];
    cout << "Podaj 3 liczby: " << endl;
    int i=0;
    while(i<3)
        {
        cin>>tablica[i];
        i++;
        }
    srand(time(NULL));
    int losulosu1=rand()%3+1;
    int losulosu2=rand()%3+1;
    while (losulosu1==losulosu2)
       losulosu2=rand()%3+1;


    switch(losulosu1)
    {
    case 1: cout<<"Wylosowana liczba: "<<tablica[0]<<endl; break;
    case 2: cout<<"Wylosowana liczba: "<<tablica[1]<<endl; break;
    case 3: cout<<"Wylosowana liczba: "<<tablica[2]<<endl; break;
    }
    switch(losulosu2)
    {
    case 1: cout<<"Wylosowana liczba: "<<tablica[0]<<endl; break;
    case 2: cout<<"Wylosowana liczba: "<<tablica[1]<<endl; break;
    case 3: cout<<"Wylosowana liczba: "<<tablica[2]<<endl; break;
    }


    return 0;
}

 

komentarz 20 czerwca 2018 przez ziemjok Gaduła (4,160 p.)
ten switch w ogóle niepotrzebny jest

szybciej by było wypisać zawartość używając poleceń: tablica[losulosu1] i tablica[losulosu2]
komentarz 20 czerwca 2018 przez Nowacx02 Obywatel (1,060 p.)
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>

using namespace std;





int main()
{
    int tablica[3];
    cout << "Podaj 3 liczby: " << endl;
    int i=0;
    while(i<3)
        {
        cin>>tablica[i];
        i++;
        }
    srand(time(NULL));
    int losulosu1=rand()%3+1;
    int losulosu2=rand()%3+1;
    while (losulosu1==losulosu2)
       losulosu2=rand()%3+1;

    cout<<"Wylosowana liczba: "<<tablica[losulosu1];
    cout<<"Wylosowana liczba: "<<tablica[losulosu2];



    return 0;
}

 

komentarz 20 czerwca 2018 przez Nowacx02 Obywatel (1,060 p.)
Tak?
komentarz 20 czerwca 2018 przez ziemjok Gaduła (4,160 p.)
tak, tylko w tej drugiej dodanej linii losolosu2 powinno byc
komentarz 20 czerwca 2018 przez Nowacx02 Obywatel (1,060 p.)
Ok dzięki

1 odpowiedź

0 głosów
odpowiedź 20 czerwca 2018 przez k222 Nałogowiec (30,150 p.)
Wczytywanie elementów tablicy zwykle robi się for'em, tak jak ty zrobiłeś wygląda to strasznie dziwnie - jest poprawne ale for zmieściłby się w 2 linijkach i byłby czytelniejszy, poza tym te switche są kompletnie niepotrzebne, tylko przeszkadzają, po prostu zamiast losować liczbę 1,2 albo 3 wylosuj 0,1 albo 2 - czyli indeks tablicy a potem to wypisz - zajmie 2 linijki. Samo losowanie jest ok i nie ma za bardzo co kombinować z innymi metodami unikania powtórzeń dla 3 liczb.

Podobne pytania

0 głosów
2 odpowiedzi 1,254 wizyt
pytanie zadane 29 lipca 2017 w C i C++ przez KubaW Nowicjusz (120 p.)
0 głosów
1 odpowiedź 434 wizyt
pytanie zadane 9 października 2018 w C i C++ przez Gadzic Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 546 wizyt
pytanie zadane 14 stycznia 2018 w C i C++ przez Maciej3206 Użytkownik (570 p.)

93,164 zapytań

142,175 odpowiedzi

321,925 komentarzy

62,491 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 453p. - Marcin Putra
  2. 453p. - dia-Chann
  3. 447p. - Łukasz Piwowar
  4. 443p. - CC PL
  5. 431p. - Łukasz Eckert
  6. 428p. - rafalszastok
  7. 423p. - Michal Drewniak
  8. 423p. - Adrian Wieprzkowicz
  9. 418p. - rucin93
  10. 415p. - Mikbac
  11. 410p. - Piotr Aleksandrowicz
  12. 408p. - ksalekk
  13. 402p. - Mariusz Fornal
  14. 401p. - Dawid128
  15. 392p. - ikarek-one
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...