Tablice, program działa , nauczciel mowi zle!

0

witam,
jestem w 2 klasie LO na profilu mat-inf.
ostatnio na informatyce pisalismy kartkowki, proste zadanka z tablicami.

tresc zadania z pamieci " wprowadzic wartosci do tablicy 8 elemtnowej, i wskazac w ktorym miejscu(indeks) tablicy przypisane jest 0."

int main()
{
    int tab[8], t=-1;
    for(int a=0; a<8; a++)
    {
            cin >> a[tab];
            if(!a[tab])
            t=a;
            }
            if (t!=-1)
            cout <<"\n"<<t<<endl;
            else
            cout  <<"brak miejsc zerowych"<<endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

program sie kompiluje, wszystko działa jak powinno, jednak dostałem 2 :D

argument taki ze sorka nigdy nie widziala czegos takiego jak "a[tab]", i jak robila z jego uzyciem innem programy to nie dzialaly poprawnie.
dzisiaj chcial mi udowdnic ze ma racje, podala tresc innego zadania i kazala uzyc wlasnie "a[tab]". Okazało sie ze jednak działa, w złosci powiedziala ze cos namieszalem bo nie powinno dzialac. i tak sie wszytsko skonczylo...
jednak z własnej ciekawosci chce was zapytac co wy sadzicie o tym kodzie, czy jest on poprawny ? czy mozna tak to uzywac?

z góry dzieki ;)

0

ale z tego co napisales rozumiem ze jest to zupelnie bezsensu, nie dziala i wymysl nie wiem skad.

dla twojej wiadomosci

a[tab] == tab[a]

po prostu tak mi sie napisalo bo jest to bez roznicy

0

aż tak, źle nie jest. Powiedzmy na 3.
Powinno być raczej tak:

bool wczytaj(istream& wejscie, int *tab, int n) {
    for(int i=0; i<n; ++i) {
        if(!(wejscie >> tab[i]) ) {
             return false;
        }
   }
   return true;
}

ind znajdzPierwszeZero(int *tab, int n)
{
        for(int i=0; i<n; ++i) {
            if(tab[i]==0) {
                return i;
            }
        }
        return -1;
}

int main()
{
     const int ile = 8;
     int tab[ile];

     if(wczytaj(cin, tab, ile)) {
          int i = znajdzPierwszeZero(tab, ile);

          if(i>=0) {
              cout << "zero znaleziono na pozycji: " << i<<endl
          } else {
              cout << "nie znaleziono zera w tablicy" << endl;
          }
     } else {
         cout << "problem podczas wczytywania danych" << endl;
         return -1;
     }

     return 0;
}

@up: To, że oba zapisy są równoważne nie znaczy, że można stosować je wymiennie.

// edit: poprawki zgodnie ze sugestią poniżej ;)</cpp>

0

Marku, sprawdź warunek we wczytaj(), bo jest jakiś dziwny... Na pewno chcesz przesunąć w prawo boola o inta?

0

Ja bym tam dla pewności dał

   if(!(wejscie >> tab[i])) {

;)

0

racja tak powinno być operator ! ma wyższy priorytet niż >> :P.

0

Twój zapis jest dozwolony ale strasznie gmatwa kod. ode mnie dostał być 2.

0
mlody991 napisał(a)

nigdy nie widziala czegos takiego jak "a[tab]", i jak robila z jego uzyciem innem programy to nie dzialaly poprawnie.
dzisiaj chcial mi udowdnic ze ma racje, podala tresc innego zadania i kazala uzyc wlasnie "a[tab]". Okazało sie ze jednak działa, w złosci powiedziala ze cos namieszalem bo nie powinno dzialac. i tak sie wszytsko skonczylo...
jednak z własnej ciekawosci chce was zapytac co wy sadzicie o tym kodzie, czy jest on poprawny ? czy mozna tak to uzywac?

Jezeli faktycznie tak powiedziala/napisala, to na drugi raz, chodz na jej zajecia z dyktafonem i durnej babie udowodnij blad. W praktyce jednak sadze, ze pomyliles sie spisujac z tablicy czy cos w tym stylu, poniewaz taki zapis jest naprawde niesamowicie rzadko spotykany i pewnie niedlugo wyleci z jezyka. Obecnie uzywa sie go najczesciej jako... ciekawostki.

Twoj kod nie jest ladny, moglby wygladac duzo lepiej, ale nie jest paskudny, ani nie smierdzi. Jest w 100% poprawny. Mozesz smialo go wziac do niej po godzinach i kazac sobie pokazac, gdzie jest blad ktory moglby powodowac ze on bedzie dzialac nieprawidlowo. Nie uda jej sie, gdyz jest poprawny. A to, ze ona nigdy takiego zapisu nie widziala na oczy -- to jej ból, jej inognorancja. Jesli kobieta ma odrobine rozumu, jak ja pomeczysz albo pokazesz sensownego linka w internecie, przyzna Ci racje i "odzyskasz" normalna ocene.

//edit: niemniej, sam ocen czy jest to osoba sensowna, czy tez po wytknieciu bledu bedzie sie na Tobie mscic przez nastepne pol semestru

0

problem w tym ze klocilem sie z nia juz kilka lekcji i przerw ale ona jest taka ze woli nie miec racji a i tak nie powie ze zle cos oceniła... moim zdaniem normalny czlowiek przyznalby sie do bledu przeciez kazdy ma do tego prawo ;s

1 użytkowników online, w tym zalogowanych: 0, gości: 1