• 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
307 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,259 wizyt
pytanie zadane 29 lipca 2017 w C i C++ przez KubaW Nowicjusz (120 p.)
0 głosów
1 odpowiedź 436 wizyt
pytanie zadane 9 października 2018 w C i C++ przez Gadzic Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 558 wizyt
pytanie zadane 14 stycznia 2018 w C i C++ przez Maciej3206 Użytkownik (570 p.)

93,190 zapytań

142,205 odpowiedzi

322,032 komentarzy

62,518 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2817p. - dia-Chann
  2. 2769p. - Łukasz Piwowar
  3. 2759p. - Łukasz Eckert
  4. 2738p. - CC PL
  5. 2704p. - Tomasz Bielak
  6. 2678p. - Łukasz Siedlecki
  7. 2666p. - rucin93
  8. 2485p. - Marcin Putra
  9. 2418p. - Michal Drewniak
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2239p. - Michał Telesz
  13. 2156p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
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!

...