Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C- dzielenie programu na pliki nagłówkowe, 'bool'

Ostatnio zmodyfikowano 2018-12-16 16:12
Autor Wiadomość
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":
C/C++
#include <string.h>
#include <stdio.h>
#include "funs.h"

bool palindrom( char napis[] )
//treść programu zwracająca 1, gdy ciąg znaków jest palindromem; 0 gdy nim nie jest

Następnie utworzyłem plik "funkcja.c":

C/C++
#include "funs.h"
void funkcja( bool )
palindrom( "kajak" );


Plik "main.c":
C/C++
#include "funs.h":
int main( void ) {
    funkcja();
    return 0;

I plik funs.h
C/C++
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ę :)
P-173257
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.
P-173258
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
P-173259
YooSy
» 2018-12-16 03:21:19
C/C++
#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"
.

» Kurs C++Dzielenie kodu na kilka plików źródłowych lekcja

Domyś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.
P-173260
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..?

C/C++
#include "funs.h"
void funkcja( bool )
palindrom( "kajak" );
Tutaj brakuje średnika.
Prędzej nawiasów klamrowych.
P-173262
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
C/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
P-173263
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.
P-173265
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!
P-173266
« 1 »
  Strona 1 z 1