Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 Polski Portal COLOBOTa - COLOBOT Polish Portal
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
Zmienna nie została zainicjalizowana [radar2()]
Autor Wiadomość
jedrus113 
Wielki Geniusz


Twoja ulubiona misja: Na pewno nie 1: Na Saari 1: Uran
Wiek: 23
Dołączył: 07 Lip 2009
Posty: 20
Skąd: 127.0.0.1
  Wysłany: 07-07-2009, 18:53   Zmienna nie została zainicjalizowana [radar2()]

Dzieńdobrywieczór!
Napisałem program, a raczej próbowałem napisać program który by mi powiedziała czy na planecie są wrogowie.
to co mi się udalo napisać:
Kod:
extern void object::Radar2()
{

string queen, egg, ant, spider, wasp, worm;

if(radar(AlienQueen) != null) queen == "Krolowa obcych";
if(radar(AlienEgg) != null) egg == ", jaja obcych";
if(radar(AlienAnt) != null) ant == "mrowki";
if(radar(AlienSpider) != null) spider == ", pajaki";
if(radar(AlienWasp) != null) wasp == ", osy";
if(radar(AlienWorm) != null) worm == ", robaki";

message("Na planecie wykryto "+queen+egg+ant+spider+wasp+worm+"!");

}


Ale gdy uruchomiam ten program to mnie się wyświetla "Zmienna nie została zainicjalizowana." Co to wogle znaczy? I co zrobiłem żle?
Czy muszę pozostawić probram w wersji 1.0:
Kod:
extern void object::Radar()
{

object item;

if(radar(AlienQueen) != null) message("Na planecie jest Krolowa obcych");
if(radar(AlienEgg) != null) message("Na planecie sa jaja obcych");
if(radar(AlienAnt) != null) message("Na planecie sa mrowki");
if(radar(AlienSpider) != null) message("Na planecie sa pajaki");
if(radar(AlienWasp) != null) message("Na planecie sa osy");
if(radar(AlienWorm) != null) message("Na planecie sa robaki");

}


ps. A przy okazji czy da się zrobić żeby peogram odrazu podawał ile jest tych wrogów?
_________________
Moja stronka www.jedrus113.cba.pl
 
 
     
adiblol 
Administrator forum
FLOSS FTW!


Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy
Dołączył: 21 Kwi 2008
Posty: 1313
Skąd: pokój odsłuchowy
Wysłany: 07-07-2009, 19:11   

Musisz zainicjować zmienne pustą wartością :P
_________________
1Tbps Project && Telecomix Network

 
 
     
jedrus113 
Wielki Geniusz


Twoja ulubiona misja: Na pewno nie 1: Na Saari 1: Uran
Wiek: 23
Dołączył: 07 Lip 2009
Posty: 20
Skąd: 127.0.0.1
Wysłany: 07-07-2009, 19:28   Działa

adiblol napisał/a:
Musisz zainicjować zmienne pustą wartością :P

Działa dzięki adibol!!
Kod:
extern void object::Radar2()
{

string queen, egg, ant, spider, wasp, worm;

queen = "";
egg = "";
ant = "";
spider = "";
wasp = "";
worm = "";

if(radar(AlienQueen) != null) queen = " Krolowa obcych";
if(radar(AlienEgg) != null) egg = " jaja obcych";
if(radar(AlienAnt) != null) ant = " mrowki";
if(radar(AlienSpider) != null) spider = " pajaki";
if(radar(AlienWasp) != null) wasp = " osy";
if(radar(AlienWorm) != null) worm = " robaki";

message("Na planecie wykryto"+queen+egg+ant+spider+wasp+worm+"!");

}



A da się zrobić żeby program sprawdzał ile jest tych wrogów?
_________________
Moja stronka www.jedrus113.cba.pl
 
 
     
Schocker 
Wants cookies!


Twoja ulubiona misja: Hmm... All.
Pomógł: 3 razy
Wiek: 22
Dołączył: 31 Maj 2009
Posty: 177
Skąd: Wadowice
Wysłany: 07-07-2009, 19:59   

Czyżby coś w stylu "Szukaj wroga, jeśli jest, zapisz to w zmiennej i dodaj do innej 1..." Stop! Odwołuję! Chyba, że da się zrobić "Znajdź, wyklucz, znajdź następnego."...
_________________
But there's no sense crying over every mistake, you just keep on trying 'till you ran out of cake -GlaDOS
 
 
     
jedrus113 
Wielki Geniusz


Twoja ulubiona misja: Na pewno nie 1: Na Saari 1: Uran
Wiek: 23
Dołączył: 07 Lip 2009
Posty: 20
Skąd: 127.0.0.1
Wysłany: 07-07-2009, 20:49   

Dobra już jest i działa Radar3.0
Kod:
int Compte(int cat) //cat - kategoria
{
int i, total;
object p;

total = 0;
for ( i=0 ; i<10000 ; i++ )
{
p = retobject(i);
if ( p == null ) break;
if ( p.category == cat ) total ++;
}
return total;
}
extern void object::Radar3()
{

message("Na planecie jest:");
if(radar(AlienQueen) != null)
{
int liczbakroli=Compte(AlienQueen);
message(Compte(AlienQueen)+"Krolowych obcych");
}

if(radar(AlienEgg) != null)
{
int liczbajaj=Compte(AlienEgg);
message(Compte(AlienEgg)+" jaj obcych");
}

if(radar(AlienAnt) != null)
{
int lczbamrowek=Compte(AlienAnt);
message(Compte(AlienAnt)+" mrowek");
}

if(radar(AlienSpider) != null)
{
int lczbapajakow=Compte(AlienSpider);
message(Compte(AlienSpider)+" pajakow");
}

if(radar(AlienWasp) != null)
{
int lczbaos=Compte(AlienSpider);
message(Compte(AlienSpider)+" os");
}

if(radar(AlienWorm) != null)
{
int lczbarobali=Compte(AlienWorm);
message(Compte(AlienWorm)+" robakow");
}

}
_________________
Moja stronka www.jedrus113.cba.pl
 
 
     
pipok
Gość


Wysłany: 08-07-2009, 13:32   

adiblol napisał/a:
Musisz zainicjować zmienne pustą wartością :P
Nie rób koledze wody z mózgu :)
Błąd polegał na użyciu operatora "==", oznaczającego "czy jest równe?", zamiast operatora "=", oznaczającego "nadaj wartość".

Zapis
Cytat:
queen == "Krolowa obcych"
oznacza "sprawdź czy zmienna 'queen' ma wartość "Krolowa obcych"

Zapis
Cytat:
queen = "Krolowa obcych"
oznacza "przypisz zmiennej 'queen' wartość "Krolowa obcych"
 
     
adiblol 
Administrator forum
FLOSS FTW!


Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy
Dołączył: 21 Kwi 2008
Posty: 1313
Skąd: pokój odsłuchowy
Wysłany: 08-07-2009, 13:41   

Ja nie zauważyłem tego błędu, ale zauważyłem że jesli jakiegoś wroga nie ma to zmienna nie jest zainicjowana.
_________________
1Tbps Project && Telecomix Network

 
 
     
pipok 


Dołączył: 24 Cze 2009
Posty: 53
Wysłany: 08-07-2009, 14:09   

adiblol napisał/a:
Ja nie zauważyłem tego błędu, ale zauważyłem że jesli jakiegoś wroga nie ma to zmienna nie jest zainicjowana.
Prawda :) A jak wróg jest, to też nie jest inicjowana :) )

jedrus113, napisanie "=" zamiast "==" (lub odwrotnie) to częsty błąd. Trzeba się pilnować, bo w wielu kontekstach formalnie obie konstrukcje są poprawne i tylko od zamiaru programisty zależy, która jest tą właściwą. Dlatego nie pojawia się komunikat o błędzie kompilacji, dopiero podczas wykonywania programu można wyłapać, że coś jest nie tak.
 
     
jedrus113 
Wielki Geniusz


Twoja ulubiona misja: Na pewno nie 1: Na Saari 1: Uran
Wiek: 23
Dołączył: 07 Lip 2009
Posty: 20
Skąd: 127.0.0.1
Wysłany: 08-07-2009, 14:56   

Moim zamiarem jest zniszczenie świata i do tego używam "=="!!
No w końcu czeba sobie jakoś radzić skoro w CBot'cie niema komendy "destoryThe(word)"
_________________
Moja stronka www.jedrus113.cba.pl
 
 
     
adiblol 
Administrator forum
FLOSS FTW!


Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy
Dołączył: 21 Kwi 2008
Posty: 1313
Skąd: pokój odsłuchowy
Wysłany: 08-07-2009, 16:03   

Jedrus, jeszcze jeden taki txt i warna dostajesz!
_________________
1Tbps Project && Telecomix Network

 
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012