StuFfii Temat założony przez niniejszego użytkownika |
C- dzielenie programu na pliki nagłówkowe, 'bool' » 2018-12-16 01:57:31 Cześć, mam taki problem ponieważ ostatnio opuściłem trochę za dużo zajęć na studiach i za bardzo nie ogarniam co się dzieje :| Zadanie jest następujące: "Napisz funkcję bool palindrom(char napis[]), której argumentem jest łańcuch znaków a wartością true, gdy argument jest palindromem i false w przeciwnym przypadku. Napisz funkcję int main(void) do przetestowania poprawności działania funkcji palindrom." Stworzyłem sobie plik "palindrom.c": #include <string.h> #include <stdio.h> #include "funs.h"
bool palindrom( char napis[] )
Następnie utworzyłem plik "funkcja.c": #include "funs.h" void funkcja( bool ) palindrom( "kajak" );
Plik "main.c": #include "funs.h": int main( void ) { funkcja(); return 0;
I plik funs.h void funkcja( bool ); bool palindrom( char napis[] );
Moje pytania są następujące: Cały czas wyrzuca mi "unknown type name 'bool'. Domyślam się, że program nie interpretuje mi bool jako funkcje tylko jako zmienną, a nie jako funkcję, ale niestety nie wiem jak pogodzić treść polecenia z działającym programem :/ Może ktoś mnie trochę nakierować, jak to ogarnąć? Z góry dziękuję :) |
|
YooSy |
» 2018-12-16 02:36:03 Po dzielić kod na pliki dla tak prostego przypadku. Zbyt skomplikowany ten podział. Nazwy plików różnią się od tych includowanuch. |
|
StuFfii Temat założony przez niniejszego użytkownika |
» 2018-12-16 02:43:43 Każda funkcja musi być w osobnym pliku, takie jest wymaganie w tym zadaniu. A w przykładzie do tego zadania miałem podobny podział zrobiony. Były osobne funkcje (każda w innym pliku) g() i h(), one były zamknięte razem w funkcji f(), która była zaimplementowana w main'ie, więc zrobiłem podobnie |
|
YooSy |
» 2018-12-16 03:21:19 #include "funs.h" void funkcja( bool ) palindrom( "kajak" ); |
Tutaj brakuje średnika. Jeśli masz utworzone pliki funkcja.c i funkcja.h, to w miejscu wywołania includujesz #include "funkcja.h" , a nie #include "funs.h" . Dzielenie kodu na kilka plików źródłowychDomyślam się, że program nie interpretuje mi bool jako funkcje tylko jako zmienną, |
To jest typ prosty i nic ponadto. Edit: Czy na pewno są utworzone wszystkie pliki nagłówkowe? Podaj całą treść błędu. |
|
pekfos |
» 2018-12-16 11:13:40 W języku C nie ma typu bool jako słowo kluczowe, jest _Bool. Żeby mieć bool, musisz dołączyć <stdbool.h>. Lub pisać w C++. Najlepiej upewnij się, że masz to pisać w C. Czasem na studiach prowadzącym ciężko zrezygnować z ułatwień C++, ale tradycja (?) każe uczyć C, więc uczą takiego "C w C++", czyli pisania kodu który nie jest ani zgodny z C, ani nie jest dobrym kodem C++. Jeśli masz utworzone pliki funkcja.c i funkcja.h, to w miejscu wywołania |
Po co ma pisać osobne pliki nagłówkowe na każdą deklarację funkcji..? #include "funs.h" void funkcja( bool ) palindrom( "kajak" ); | Tutaj brakuje średnika. |
Prędzej nawiasów klamrowych. |
|
StuFfii Temat założony przez niniejszego użytkownika |
» 2018-12-16 14:47:42 Wprowadziłem zestaw poprawek, które mi poleciliście i... prawie działa. Został tylko jeden błąd w pliku funkcja.c #include "funs.h" #include <stdbool.h>
void funkcja( bool ) { pailndrom( "kajak" ); }
Wyrzuca mi błąd przy void funkcja(bool) "parametr name omitted". A co do języka, niestety, ale musi być C :/ Trochę mi to sprawi problemów, bo całkiem nieźle ogarniam C++ i ten przeskok na tradycję generuje mi sporo problemów |
|
pekfos |
» 2018-12-16 15:44:16 Wyrzuca mi błąd przy void funkcja(bool) "parametr name omitted". |
Albo nadaj nazwę temu argumentowi, albo go wywal. |
|
StuFfii Temat założony przez niniejszego użytkownika |
» 2018-12-16 16:12:39 Dobra, udało się! Pozmieniałem jeszcze trochę składnie w main'ie, żeby nie drukował wartości dla 'Kajak" tylko dla podanego słowa i wszystko śmiga :) Dzięki za pomoc! |
|
« 1 » |