Błędy na wesoło czyli mała zagadka.

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Błędy na wesoło czyli mała zagadka.

Post autor: ethanak »

W związku z takim jednym dowcipem (wtajemniczeni wiedzą o co chodzi) proponuję znalezienie błędu w programie. Zawodowców proszę o niepodawanie rozwiązania :)

Założenia: programowi podajemy jako parametr nazwę katalogu. Program po stwierdzeniu czy to naprawdę katalog robi "coś" (w tym momencie nieważne co), jeśli nie - wypisuje komunikat błędu i kończy pracę sygnalizując błąd.

Błąd należy znaleźć wyłącznie czytając kod ew. kompilując program, bez jego uruchamiania.

Kod: Zaznacz cały

#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

int test_dir(char *path)
{
   struct stat st;
   if (stat(path,&st) || !S_ISDIR(st.st_mode)) {
     return 0;
   }
   return -1;
}

int main(int argc,char *argv[])
{
   if (argc != 2) {
     fprintf(stderr,"%s: %s\n",argv[0],strerror(EINVAL));
     exit(1);
   }
   if (!test_dir(argv[1])) {
     perror(argv[1]);
     exit(1);
   }
   printf("Dobra, to jest katalog\n");
   /* i tu reszta kodu */
   return 0;
}
Nie chciałem śmiecić w wątku o dowcipach a dla niektórych zagadka może być ciekawa :)
Chris1507
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 156
Rejestracja: 02 maja 2011, 20:55
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Błędy na wesoło czyli mała zagadka.

Post autor: Chris1507 »

ethanak pisze:Program, po stwierdzeniu czy to naprawdę katalog, robi "coś" (w tym momencie nieważne co), jeśli nie - wypisuje komunikat błędu i kończy pracę sygnalizując błąd.
Wstaw te 2 przecinki, bo się ciężko czyta.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Błędy na wesoło czyli mała zagadka.

Post autor: ethanak »

jasne... a w tańcu jajca ci nie przeszkadzają? masz problem ze zrozumieniem kodu czy chcesz się doczepić do przecinka bez którego chyba tylko ty nie rozumiesz pytania?
ech... odkurzam sygnaturkę na twoją cześć.
Кто жопой родился, чижиком не помрёт
Chris1507
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 156
Rejestracja: 02 maja 2011, 20:55
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Błędy na wesoło czyli mała zagadka.

Post autor: Chris1507 »

Nie piszę w C++.

Nie, chcę Ci pokazać, że w zależności jak przeczytasz, tak zdanie może mieć inne znaczenie. Wstaw sobie przecinki w zdanie: "rozstrzelać nie wolno wypuścić"; ma tylko jedno znaczenie?
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Błędy na wesoło czyli mała zagadka.

Post autor: ethanak »

pokaż tę dwuznaczność bo jakoś jej nie widzę.
tak przy okazji - to nie jest C++ ...
Chris1507
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 156
Rejestracja: 02 maja 2011, 20:55
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Błędy na wesoło czyli mała zagadka.

Post autor: Chris1507 »

W tym ("rozstrzelać nie wolno wypuścić") zdaniu nie widzisz dwuznaczności?

Kompilator C++ skompilował ten kod.
Awatar użytkownika
enedil
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1352
Rejestracja: 08 wrz 2012, 16:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: i3
Architektura: x86_64
Kontakt:

Re: Błędy na wesoło czyli mała zagadka.

Post autor: enedil »

Chris1507 pisze: Kompilator C++ skompilował ten kod.
Kompilator C++ jest kompatybilny wstecz (kompiluje też C), ale wszystkie elementy kodu pochodzą tylko z C.
Dobrze jest, psiakrew, a kto powie, że nie, to go w mordę!

~moderatorzy
Awatar użytkownika
drag65
Piegowaty Guziec
Piegowaty Guziec
Posty: 26
Rejestracja: 23 wrz 2012, 08:59
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Unity
Architektura: x86

Re: Błędy na wesoło czyli mała zagadka.

Post autor: drag65 »

" rozstrzelac,nie wolno wypuscic"
albo
"rozstrzelac nie wolno,wypuscic"
:):):):)
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Błędy na wesoło czyli mała zagadka.

Post autor: ethanak »

Chris1507 pisze:W tym ("rozstrzelać nie wolno wypuścić") zdaniu nie widzisz dwuznaczności?
Nie widzę dwuznaczności w zacytowanym przez Ciebie moim zdaniu, nawet wyrwanym z kontekstu. Albo pokaż, gdzie należy wstawić dokładnie dwa przecinki, aby zmienić znaczenie zdania (zachowując oczywiście kontekst) - albo przyznaj się że po prostu potrollować sobie chciałeś.
Kompilator C++ skompilował ten kod.
Już się dalej nie ośmieszaj.

(edit - po chwili namysłu)

Czy mi się wydaje czy gdzieś po drodze zgubiła się moja zagadka? ;)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości