Gdzie jest błąd?

Mam taki kod w „C”

#include<conio.h>
#include
using namespace std;
int main()
{
string p;
int n;
cout<<“Podaj imie”;
cin>>p;
n=p.length();
cout<<"Liczba liter twojego imienia to "<<n<<endl;
cout<<"Podaj nazwisko ";
cin>>p;
n=p.length();
cout<<"Liczba liter twojego nazwiska to "<<n<<endl;
getch ();
return 0;
}

Gdzie jest błąd?
Program nie można skompilować, ponieważ jest błąd.

spróbuj

#include <conio.h>
#include <iostream.h>
using namespace std;
int main()
{
    string p;
    int n;
    cout<<"Podaj imie";
    cin>>p;
    n=p.length();
    cout<<"Liczba liter twojego imienia to "<<n<<endl;
    cout<<"Podaj nazwisko ";
    cin>>p;
    n=p.length();
    cout<<"Liczba liter twojego nazwiska to "<<n<<endl;
    getch ();
    return 0;
}

Podgląd zmian:

-#include <iostream>
+#include <iostream.h>

http://cpp0x.pl/forum/temat/?id=1421 - możliwe że to 11 letni bug w Code::Blocks

Nie znam się, ale się wypowiem. Pisałem kiedyś jakąś prostą gierkę i ta różnica mnie “.h” zniszczyła. A nie było takiego mądrego do podpowiedzi :slight_smile:

Trop dobry, ale nie w tym raczej rzecz. iostream to nie jest biblioteka z C, a z C++. Jeśli kompilujesz to kompilatorem dla C to siłą rzeczy nie będzie jej znał. Natomiast jeśli kompilujesz ją kompilatorem C++ i dodatkowo jej używasz to nie masz programu w czystym C, a co najwyżej częściowo napisanego w C.
Oczywiście można kompilatorem do C++ skompilować program w czystym C, ale trzeba zrezygnować z tego co oferują biblioteki C++ i dobrze dorzucić odpowiednie flagi kompilacji.

Mała uwaga, kod który wkleiłeś nie jest kompletny i gdyby nie to co napisał @krystian3w to osobiście raczej bym go zlał bo nie chciałoby mi się zgadywać czego tam brakuje.

Chciałem troszeczkę załapać C/C++ i ściągnąłem prosty przykład z:
http://gotowekodyprogramow.blogspot.com/
A już na początku mnie to zniechęciło.
Tam są przykłady z C++… przynajmniej tak tam pisze. :grinning:

Zainstalowałem „CodeBlocks” i myślałem, że to zadziała a tu… klops.

W kodzie wkradł się błąd:
Na początku jest tak:
#include <cstdlib>
#include <iostream>
#include <string>
#include <ctype.h>

Za radą Krystina zrobiłem tak…
#include <cstdlib>
#include <iostream.h>
#include <string>
#include <ctype.h>

i dalej ten sam błąd mi wyskakuje.

Ale dalej C::B nie wykrywa bibliotek C++ dla kodu w języku C?

src

Możliwe, że znalazłeś zły kurs jak chcesz zacząć od C (nie C++ / C#).

http://janek.ae.krakow.pl/~wiluszt/zajecia/c/ansic/.30.html
http://janek.ae.krakow.pl/~wiluszt/zajecia/c/ansic/krok_1/index.html
http://janek.ae.krakow.pl/~wiluszt/zajecia/c/ansic/krok_2/index.html

tamten ma problem z tłem, trzeba je sobie wywalić z:

  • devtools (niewygodne) lub skryptozakładką (też “niewygodne”).

  • Stylusem:

    body { background-image: none !important; }
    
  • w Firefox dodać obrazek do zablokowanych (albo coś mi się pomieszało z bardzo starym Adblock Plus, który integrował aż w pop-up “informacje o stronie” - zakładka “media”…)

  • uBO/AdGuard (jakby to była reklama w tle):

    janek.ae.krakow.pl##body:style(background-image:none !important;)

    lub kompatybilne z ABP/Adblock:

    ||janek.ae.krakow.pl^*/Tlo.gif


Jak widać na początek bibliotek mniej i printf zamiast cout.

Raczej

body { background-image: none !important; }

1 polubienie

Pewnie projekt masz w C a kod w CPP, stwórz nowy projekt w C++, wklej kod (ten pierwotny) i spróbuj skompilować.

Generalnie chyba code block jest nierozwijany - mogę się mylić któreś popularne IDE open source przestało być rozwijane, a ludzie dalej go używają.

Tak to szybko mija zapał do nauki, skoro gotowy program nie chce działać.

Czym to można skompilować, skoro CodeBlocks nie chce?

Przecież miałeś już wytłumaczone. Utworzyłeś projekt w C, ale kod wpisałeś w CPP.
Utwórz nowy projekt w C++, wklej kod i powinno wykryć biblioteki, których próbujesz używać.

1 polubienie

Ten tu ostatni napisał Krystian3W.

Chyba żartujesz… mam się go uczyć jak na wstępie już to nie działa?
Projekt jet ze strony którą podałem.
Czym to należy skompilować?

Wcale nie musisz.

Właśnie kiedyś chciałem podjąć naukę VB i też natknąłem się na takiego mądrale i… zaniechałem.
Krótko mówiąc podbudował mnie.

A pytanie proste… czym to C++ skompilować?

Jak chcesz zostać przy C to przepisz kod na język C. Zawsze możesz skompilować projekt z palca w konsoli przy pomocy np gpp.

PS. Poza tym tytuł strony z której bierzesz kod powinien dać Ci już do myślenia

Gotowe kody programów w języku C++

Dobrze się pisze… ale ja nic nie chcę przepisywać, bo się na tym nie znam.
Mam gotowe wzory w C++ i chciałbym test.c (tak myślę że to ma być .c)
zapisać jako test.exe. Tylko czym?

Kompilatorem do C++ a nie do C. *.c sugeruje że to kod w C a nie CPP. Musisz też utworzyć projekt pod C++ a nie pod C. Nie wiem jak działa C::B, na jakiej podstawie decyduje jak kompilować kod, czy na podstawie ustawień projektu czy po rozszerzeniach pliku - najlepiej ogarnąć jedno i drugie.

Mam gotowe kody i chcę sprawdzić czy to działa:
http://funkcje.net/pod_kat/2/21.html
http://gotowekodyprogramow.blogspot.com

I nikt nie potrafi odpowiedzieć jak to zapisać do pliku wykonywalnego. :grinning:

Ręcznie: https://medium.com/better-programming/learn-how-to-compile-a-c-program-382c4c690bdc
W C::B : https://www3.ntu.edu.sg/home/ehchua/programming/howto/CodeBlocks_HowTo.html
W przeglądarce (nie polecam na początek): http://cpp.sh/

Zapisz na próbę z typem pliku “.cpp”

https://ideone.com/TcqSRz - online nie obsługuje conio w C++, więc getch nie sprawdzisz czy robisz pauzę.

Screenshot_2020-09-07%20Ideone%20com

Wadą tej strony jest trochę niewygodna interaktywność, może na cpp.sh jest lepiej i w czasie rzeczywistym testujesz a nie z góry deklarujesz dane dla programu.

Przy okazji z GUI prawie żadna www pewnie sobie nie radzi jak np. nie wirtualizuje systemu do uruchomienia poza trybem konsolowym.