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

Pomocy - program nie dziala tak jak powinien

Object Storage Arubacloud
0 głosów
155 wizyt
pytanie zadane 23 sierpnia 2018 w Nasze projekty przez tomeq35 Nowicjusz (220 p.)

Witam, mam problem z moim programem co prawda znalazłem podobny problem na forum lecz nie był on rozwiązany do końca. Mój program nie działa poprawnie, proszę o pomoc i ewentualne wskazówki jak można go inaczej (lepiej) napisać. 

Zadanie:

Program wczytuje dane z klawiatury do tablicy typu double, a następnie sprawdza:

  1. czy te liczby są uporządkowane rosnąco lub malejąco,
  2. czy elementy tablicy mają symetryczną zawartość (tj. pierwszy element równy ostatniemu, drugi przedostatniemu, itd.)
  3. czy w tablicy występuje chociaż jedno powtórzenie wartości

   #include <iostream>

    using namespace std;
   
    int main()
{
    const int rozmiar = 5;
    double tablica [rozmiar];

    cout<<"Podaj dane do tablicy: "<<endl;
    for(int i=0; i<rozmiar; i++)
    {
        cin>>tablica[i];
    }
    cout<<endl;
    for (int i =0;i<rozmiar;i++)
    cout<<tablica[i]<<endl;

    for(int i=0; i<rozmiar; i++)
        if(tablica[i]<tablica[i+1])
        {
            cout<<"Uporzadkowane rosnaco"<<endl;
        }
        else if(tablica[i]>tablica[i+1])
            cout<<"Uporzadkowane malejaco"<<endl;

    for(int i=0; i<rozmiar; i++)
    {
        if(tablica[i]==tablica[rozmiar-1-i])
            cout<<"Jest symetryczna";

        else
            cout<<"Jest niesymetryczna";
    }

// jak zrealizować sprawdzanie czy się powtórzyły ???

    return 0;
}

komentarz 24 sierpnia 2018 przez tomeq35 Nowicjusz (220 p.)
Niestety, nie mogę sobie poradzić z tym problemem ktoś pomoże?

2 odpowiedzi

0 głosów
odpowiedź 23 sierpnia 2018 przez Redwe Nowicjusz (180 p.)
Program ma sprawdzać czy cała tablica jest uporządkowana malejąco lub rosnąco, czy każda para elementów ma być sprawdzana osobno np.
1 2 3 4 3 = tablica nie jest posortowana
czy może tak:
1 2 3 4 3 = 1<2, 2<3, 3<4, 4>3 ?
komentarz 23 sierpnia 2018 przez tomeq35 Nowicjusz (220 p.)
Program ma sprawdzać czy cała tablica jest uporządkowana malejąco lub rosnąco.
komentarz 23 sierpnia 2018 przez Redwe Nowicjusz (180 p.)
Wolisz żebym podał przykładowy kod z rozwiązaniem czy może wskazówki do Twojego kodu żebyś sam pogłówkował?
Lub to i to.
komentarz 23 sierpnia 2018 przez tomeq35 Nowicjusz (220 p.)
Możesz podać oba bo i tak brak mi pomysłów w chwili obecnej.
0 głosów
odpowiedź 23 sierpnia 2018 przez Redwe Nowicjusz (180 p.)
Przepraszam za zbyt długie komentarze jak wkleisz kod do edytora bez zawijania wierszy powinno być bardziej czytelne.
Co do sprawdzania powtórek najłatwiejsza będzie chyba pętla w pętli chętnie podpowiem co do tego tylko musisz mi napisać czy program ma wypisywać liczby które się powtórzyły i ile razy się powtórzyły czy po prostu że jakaś powtórka wystąpiła.

Jeżeli masz jakieś pytania lub nie możesz czegoś zrozumieć pisz, moje zdolności do wytłumaczenia czegoś są bardzo małe więc nie zniechęcaj się jeśli nie zrozumiesz jakiegoś komentarza w kodzie pewnie źle go sformułowałem.

Co do Twojego kodu nie miałeś żadnego licznika w forach więc każdy for sprawdzał czy jedna para
np Tablica[0] i Tablica[1] są od siebie większe lub mniejsze i to wypisywał.

#include <iostream>

    using namespace std;

    int main()
{
    const int rozmiar = 5;
    int spr = 0,spr2=0,spr3=0;
    double tablica [rozmiar];

    cout<<"Podaj dane do tablicy: "<<endl;

    for(int i=0; i<rozmiar; i++)
    {
        cin>>tablica[i];
    }
    cout<<endl;

    //For wykonuje się rozmiar-1 ponieważ sprawdza najpierw tablica[0] z tablica[1], pozniej tablica[1] z tablica[2], tablica[2] z tablica[3] oraz tablica[3] z tablica[4] gdyby nie było -1 sprawdziło by tablica[4] z tablica[5] który nie istnieje.
    for(int i=0; i<rozmiar-1; i++)
    {
        if(tablica[i]<tablica[i+1])
        {
            spr++; //spr to licznik który za każdym razem dodaje +1 do siebie jeżeli liczba tablica[i] byla mniejsza od liczby tablica[i+1] czyli jeżeli spr będzie wynosić 4(sprawdzaliśmy 4 razy nie 5) to cała tablica jest uporządkowana rosnąco.
        }
        else if(tablica[i]>tablica[i+1])
        {
            spr2--; // podobnie jak na górze jednak w drugą stronę.
        }
    }

    // w 5 elementowej talibcy np 3 2 1 2 3 musimy sprawdzic 2 razy czy liczby tablica[0] i tablica[rozmiar-1] oraz tablica[1] i tablica[rozmiar-2] sa takie samy liczba w srodku nas nie interesuje przy nieparzystej ilosci liczb w tablicy
    for(int i=0; i<((rozmiar)/2); i++) // rozmiar musimy podzielic przez dwa jest to int wiec przy dzieleniu 5/2 wyjdzie nam 2. Dlaczego tak? Ponieważ przy tablicy 3 elementowej sprawdzac bedziemy tylko raz pierwszy z ostatnim elementem w tablicy 4 elementowej pierwszy i ostatni element oraz drugi i przed ostatni element itp.
    {
      if(tablica[i]==tablica[rozmiar-i-1]) spr3++; // jezeli
    }

    if(spr==4)cout<<"Tablica jest uporzadkowana rosnaco"<<endl;
    else if(spr2==-4)cout<<"Tablica jest uporzadkowana malejaco"<<endl;
    else if(spr3==2)cout<<"Tablica jest symetryczna"<<endl;
    else cout<<"Tablica nie jest uporzadkowana"<<endl;
// jak zrealizować sprawdzanie czy się powtórzyły ???

    return 0;
}
komentarz 23 sierpnia 2018 przez tomeq35 Nowicjusz (220 p.)
Dzięki za odpowiedz, musze to przemyśleć :)

Podobne pytania

–3 głosów
4 odpowiedzi 462 wizyt
pytanie zadane 23 kwietnia 2016 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 7 czerwca 2022 w Assembler przez JanekCode Nowicjusz (120 p.)
0 głosów
3 odpowiedzi 257 wizyt

92,565 zapytań

141,416 odpowiedzi

319,597 komentarzy

61,948 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!

...