blad w kodzie

danio3

Użytkownik
Dołączył
Październik 13, 2005
Posty
22
Witam moj problem dotyczy jednego bledu ktory wyskakuje podczas kompilowania programu... Moze ktos wskazac gdzie popelniam blad i jak go naprawic ?
smile.gif

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// przypomnienie c++

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;


void main()

{
cout << " .::=>MuRdEr<=::." << endl << endl;

char imie;

cout << "Jak masz na imie? (napisz malymi literami xD) ";
cin >> imie;
cout << endl;




if ( imie == tomek) {

cout << "jezeli to twoje prawdziwe imie to mozna z niego wyczytac agresywnosc, brutalnosc i tym podobne cechy charakteru." << endl;
cout << "jednym slowem jestes: morderca ( lub kolega mordercy xD )..." << endl;
}

else cout << "niestety nie mamy takiego imienia w bazie wiec nic Ci o nim nie powiem =)" << endl;


getch();

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

wiem ze jest cos nie tak z kawalkiem if ( imie == tomek) tylko nie wiem co i jak to naprawic
<
 

d3vil

Były Moderator
Dołączył
Lipiec 25, 2005
Posty
495
następnym razem daj w CODE
Kod:
 if ( imie == "tomek") {
powinno być dobrze, dodane ""
 

danio3

Użytkownik
Dołączył
Październik 13, 2005
Posty
22
sprawdzam...

no niestety ale tez sie nie udalo, przy kompilacji wywalilo 2 bledy
 

Spam

Użytkownik
Dołączył
Czerwiec 16, 2006
Posty
1
Kod:
#include <conio.h>

#include <iostream>

#include <string>



using namespace std;





void main()



{

cout << " .::=>MuRdEr<=::." << endl << endl;



char imie[1024];



cout << "Jak masz na imie? (napisz malymi literami xD) ";

cin >> imie;

cout << endl;









if ( imie == "tomek") {



cout << "jezeli to twoje prawdziwe imie to mozna z niego wyczytac agresywnosc, brutalnosc i tym podobne cechy charakteru." << endl;

cout << "jednym slowem jestes: morderca ( lub kolega mordercy xD )..." << endl;

}



else cout << "niestety nie mamy takiego imienia w bazie wiec nic Ci o nim nie powiem =)" << endl;





getch();



}

Poprawiłem troszke Twój kod. Jednak staraj sie go pisać nieco lepiej, jak juz mowił d3vil stosuj pomiedzy else { } a kod bedzie wygladal dużo lepiej:

Kod:
#include <iostream>

#include <conio.h>





using namespace std;





void main()



{

   cout << " .::=>MuRdEr<=::. n n";



   cout << "Jak masz na imie? (napisz malymi literami xD) ";



   char imie[1024];

 

   cin >> imie;



   cout << endl;









  if ( imie == "tomek") 

  {

    cout << "jezeli to twoje prawdziwe imie to mozna z niego wyczytac agresywnosc, brutalnosc i tym podobne cechy charakteru. n";

    cout << "jednym slowem jestes: morderca ( lub kolega mordercy xD )... n";

  }



  else

   {

       cout << "niestety nie mamy takiego imienia w bazie wiec nic Ci o nim nie powiem =) n";

   }





getch();



}

Zobacz co pozmieniałem w twoim kodzie. Mój kod nie jest idealny bo go po Tobie poprawiałem, używaj wcięć a twój source bedzie wygladać dużo estetyczniej.
d3vil: z else dobrze napisał taka i taka forma jest poprawna niemniej jednak lepiej jest uzywać wdł. mnie klamerek.
 

danio3

Użytkownik
Dołączył
Październik 13, 2005
Posty
22
kod poprawny, kompilowal sie bez bledow i program normalnie sie uruchamia, jednak wciaz jest problem. Chodzi o to ze program nie dziala tak jak nalezy
<
... po wpisaniu imienia "tomek" mialo sie wykonywac to co jest w klamrach if a jak sie wpisze dowolnie co innego to powinny sie wykonywac instrukcje w frazie else... ale jednak nawet jak sie wpisze "tomek" to i to wykonuja sie instrukcje frazy else... najlepiej to sami skompilujcie program i zobaczycie w czym problem
smile.gif
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
char imie[1024]; zmien na - string imie;
dodaj plik naglowkowy #include<string> lub jesli bedzie wywalal blad #include<string.h>
Normalnie nie mozna porownywac stringa z tablica! Mozna uzyc funkcji strcmp() czy jakos tak ale skoro kod pisany jest w C++ to lepiej uzyc wygodnej klasy string. W przypadku klasy string jest to juz mozliwe - przeciazony operator ==. Od siebie moge tylko dodac ze nie polecam DevC++ do kompilowania kodu gdy dopiero zaczyna sie przygode z programowaniem - lepiej kompilowac pod BCB - przyklejony kurs
smile.gif
 

danio3

Użytkownik
Dołączył
Październik 13, 2005
Posty
22
ja juz nie korzystam z DevC++ od jakiegos czasu
<
zmienilem na Microsoft Visual C++ 6.0... a co do twoich zalecen to zaraz wprowadze te modyfikacje i zobacze co to da
smile.gif

~~~~

kazdy jakos pomogl za co THX. Teraz program dziala poprawie i bez bledow
smile.gif
 

V0lrath

Użytkownik
Dołączył
Czerwiec 9, 2006
Posty
25
Kod:
#include <iostream>

#include <conio.h>





using namespace std;





int main()

{

   cout << " .::=>MuRdEr<=::. n n";



   cout << "Jak masz na imie? (napisz malymi literami xD) ";



   char imie[1024];

 

   cin >> imie;



   cout << endl;





  if ( strcmp (imie,"tomek") == 0)

  {



    cout << "jezeli to twoje prawdziwe imie to mozna z niego wyczytac agresywnosc, brutalnosc i tym podobne cechy charakteru. n";

    cout << "jednym slowem jestes: morderca ( lub kolega mordercy xD )... n";

  }



  else

   {

       cout << "niestety nie mamy takiego imienia w bazie wiec nic Ci o nim nie powiem =) n";

   }





  getch();

  return 0;

}

Tak zadziała.

Otóż "==" odnośnie ciągów znaków jako tablic znaków (typu char imie[1024] lub char * etc.) jest równoważne porównaniu adresów - wskaźników na pierwszy znak ciągu.
A więc Twój kod porównał adres tablicy imie (u mnie 0x22fb68) z adresem stałej znakowej zapisanej w programie "tomek" (u mnie 0x401588) i stwierdził, że są różne, co dziwne nie jest.

Prawidłowo porównuje się używając odpowiedniej funkcji (strcmp) lub pisząc własną funkcję.
 
Do góry Bottom