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

Symetria Tablic C++

VPS Starter Arubacloud
0 głosów
288 wizyt
pytanie zadane 4 marca 2021 w C i C++ przez zetC Nowicjusz (170 p.)

Witam forumowiczów, nie daje mi spokoju jedna rzecz w pewnym zadaniu. Mianowicie chodzi o ten mały wycinek kodu: if (tab[i] == tab[n-1-i]) cały czas nie mogę dojść do logiki tego zadania... Załóżmy, że wprowadzamy takie liczby: 1, 2, 3, 4, 3, 2, 1 - wtedy tablica jest symetryczna tylko skąd to się bierze. Program pobiera wartość tab[0] czyli 1 == i teraz 6 element tablicy czyli: 2 odjąć wartość i w tym przypadku to 0 i=0 w 1 iteracji no i wychodzi 1==2 a to nieprawda. surprise

A oto kod:

#include <iostream>

using namespace std;

int main()
{
    const int n = 7;
double tab[n];
bool symetryczna = false;


cout << "Podaj elementy tablicy: " << endl;
for (int i = 0; i < n; i++)
{
cout << "tab[" << i << "]= ";
cin >> tab[i];
} 
cout << endl;

 for (int i = 0; i < n; i++)
{
if (tab[i] == tab[n-1-i])
{
symetryczna = true;
}
else
{
symetryczna = false;
break;
}
}
if (symetryczna == true)
{
cout << "Twoja tablica jest symetryczna." << endl;
}


    return 0;
}

 

1 odpowiedź

+2 głosów
odpowiedź 4 marca 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
wybrane 7 marca 2021 przez zetC
 
Najlepsza
Podstawy się kłaniają ;)

Dla tablicy siedmioelementowej mamy indeksy od 0 do 6, przy czym indeks zerowy oznacza pierwszy element tablicy, a indeks szósty oznacza siódmy element tablicy.
Stąd tab[0] -> pierwszy element tablicy, tab[7 - 1 - 0] = tab[6] -> siódmy element tablicy
komentarz 5 marca 2021 przez zetC Nowicjusz (170 p.)
Tak, ale na jakiej zasadzie to działa jak sobie to rozpisałem na kartce to cały czas nie mogę dojść prawdy.

tab[0]=1    tab[1]=2    tab[2]=3    tab[3]=4    tab[4]=3    tab[5]=2    tab[6]=1

Teraz podstawiając pod warunek: if(tab[i] == tab[n-1-i]) wychodzi w 1 poprawnie zawsze ale przy 2, 3 itd robi się coś dziwnego mianowicie

2 == (zawsze 6 element tablicy czyli wartosc 1) 1 odjąć 1 indeks czyli 1 co daje 2 == 0 (???)

3 == 1 - 2    3 ==  -1

przy tab[4]

3 == 1 - 5    3 == -4

Skoro warunek się nie zgadza to dlaczego pętla wykonuje się poprawnie?
komentarz 5 marca 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
Wow, skąd Ty te wartości wytrzasnąłeś.

W Twoim przypadku mamy kolejne porównania:

tab[0] == tab[6]

tab[1] == tab[5]

I tak dalej. Ja nie wiem, czemu Ty od wartości ostatniego elementu tablicy odejmujesz jakieś wartości (bo chyba właśnie to robisz). Porównujemy elementy tablic. Pierwszy z ostatnim, drugi z przedostatnim i tak dalej. Wygląda na to, że Ty w swoim rozumowaniu przeprowadzasz operację odejmowania nie na indeksie, a na wartości ostatniego elementu w tablicy. A to nie działa tak, że jeśli tab[n] = 1, to tab[n - 1] = 1 - 1

Ponadto szósty element tablicy to tab[5], czyli w tym przypadku wartość to 2.
komentarz 5 marca 2021 przez Whiskey_Taster Pasjonat (15,610 p.)

Tutaj masz link do poradnika odnośnie tablic, bo nie jestem w stanie z telefonu jakoś ładniej tego napisać w formie kodu, żeby Ci uświadomić różnicę 

Podobne pytania

+1 głos
2 odpowiedzi 863 wizyt
pytanie zadane 3 grudnia 2020 w C i C++ przez Wodnica Nowicjusz (160 p.)
+1 głos
1 odpowiedź 386 wizyt
pytanie zadane 23 stycznia 2022 w C i C++ przez Doge Gaduła (3,420 p.)
0 głosów
1 odpowiedź 1,078 wizyt
pytanie zadane 25 października 2020 w C i C++ przez hicodyn Początkujący (420 p.)

92,768 zapytań

141,693 odpowiedzi

320,510 komentarzy

62,106 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

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!

...