invisiblekid Temat założony przez niniejszego użytkownika |
W jaki sposób szybko i łatwo stworzyć tablicę bez ograniczenia rozmiaru? » 2008-10-05 16:42:47 Napisałem taki program. Jego zadaniem jest pobieranie ciągu z ilośćią składników wyznaczoną przez użytkownika. Niestecy coś mi nie dzała- jaki jest błąd? #include <iostream> #include <conio.h> #include <console.ddt>
using namespace std; using namespace ddt::console;
int main() { volatile int i = 0; int liczby[ i ]; string ciag = 0; string koniec; bool finito = true; cout << "Operacje na ciagach. Pobranie ciagu" << endl; do { void clrscr(); if( i != 0 ) cout << "Wprowadziłes liczby: " << ciag << endl; cout << "Podaj liczbe: "; cin >> liczby[ i ]; ciag += liczby[ i ] + ", "; i++; cout << "Czy zakonczyc wprowadzanie? [T/N]"; cin >> koniec; if( koniec == "N" ) finito = false; } while( finito ); getch(); return( 0 ); } thanx in advance |
|
lynx |
» 2008-10-05 17:08:12 Podaj log kompilacji, jeżeli program się nie kompiluje. Jeżeli program się uruchamia, a w trakcie jego działania się wyłącza to powiedz w którym miejscu.
A błąd chyba jest w tej funkcji " ciag+=liczby+", "; " -dodajesz tryp ciągu znaków do typu liczbowego i nie wiem o co biega w następnych znakach.
/edit: Kolejna dziwna linijka to " void clrscr(); ", po co void? To nie jest deklaracja tylko użycie funkcji.
/edit2: Nieprawidłową linijką jest też " while(fnito); ", powinna ona wyglądać tak: " wihlie(!finito); ", ponieważ pętla do while działa na zasadzie: powtarzaj obroty pętli póki true, podobnie jak i wszystkie pętle w c++.
|
|
DejaVu |
» 2008-10-05 18:11:14 Zamień wpis: na następujący: Program ten się wtedy skompiluje, ale wątpię czy zadziała prawidłowo. Co więcej używasz tutaj takich zapisów, jakbyś nie wiedział zupełnie co robisz. /edit: W tym kodzie jest milion błędów - napisz go od nowa. /edit2: Naliczyłem 8 podstawowych błędów programistycznych w kodzie, który przedstawiłeś... /edit3: #include <iostream> #include <conio.h> #include <console.ddt>
using namespace std; using namespace ddt::console;
int main() { volatile int i = 0; int liczby[ i ]; string ciag = 0; string koniec; bool finito = true; cout << "Operacje na ciagach. Pobranie ciagu" << endl; do { void clrscr(); if( i != 0 ) cout << "Wprowadziłes liczby: " << ciag << endl; cout << "Podaj liczbe: "; cin >> liczby[ i ]; ciag += liczby[ i ] + ", "; i++; cout << "Czy zakonczyc wprowadzanie? [T/N]"; cin >> koniec; if( koniec == "N" ) finito = false; } while( finito ); getch(); return( 0 ); }
/edit4: Dodam jeszcze, że nazwa zmiennej finito sugeruje zupełnie co innego niż faktycznie robi. |
|
invisiblekid Temat założony przez niniejszego użytkownika |
» 2008-10-06 17:49:43 Błędów jest owszem dużo (mea culpa), ale chodzi dokładnie chodzi mi o jedno strategiczne zagadnienie: jak zrobić tablicę, która nie ma wskaznej odgórnie liczby podmiotów (I mean: elementów). Prawdopodobnie jest to bardzo proste ale i tak nie mogłem sobie z tym poradzić (dlatego kombinowałem z różnymi typami zmiennych- stąd to słowo kluczowe). Problem niefunkcjonalnośći tego programu nie polega na nie-kompilacj (wręcz przeciwnie- o dziwo sie kompiluje) ale gdy zaczyna działać na Czarnym Ekranie (mam na myśli to pole programu) pojawia sie napis że coś nie działa i windows wyżuca bład programu i karze go zamknąć. BTW: błędy moge wytłumaczyć przerwą w "programowaniu"- (proszę o wybaczenie), małym (bardzo małym) doświadczeniem.
//edit 1: #include <console.ddt> się kompiluje ponieważ dorzuciłem bibliotekę do folderu z domyślnymi bibliotekami (czy coś takiego)
//edit 2: Moge nawet przytoczyć treść komunikatu na Czarnym Ekranie: "This application has requsted the Runtime to terminate it in an unusual way. Please contact the application's support..." Nie do końca rozumiem o co w tym błędzie chodzi jakkiolwiek rozumiem wszystkie słowa (być może to ścisłe, niszowe użycie), czyżby coś było źle z jakimś timerem (??-Runtime) a może z w.w. problemem niezaznoczoniej ilości elementów w tablicy
//edit 3: by the way mógłbu pan przybliżyć znaczenie słowa kluczowego "volatile". Ja myslałem, że stosuje sie je dla zminnych, których wartość często i szybko się zmienia- nie wiem czy dobrze zrozumiałem, jeśli tak to czy dobrze użyłem. Gdy Pan byłby w stanie mnie doifrormować i skierować moje rozumowania na właściwą drogę byłbym wdzieczny :D. |
|
dudek |
» 2008-10-06 18:58:44 //Edit Do usuniecia |
|
dudek |
» 2008-10-06 18:59:36 //Edit Do usuniecia |
|
dudek |
» 2008-10-06 19:01:00 Odpowiedzia na Twoje pytanie powinno byc dynamiczne zarzadzanie pamiecia:) Nie wiem czy to jest dokladnie to co chciales osiagnac ale poznac i tak trzeba wiec: XXIV. Dynamiczne zarządzanie pamięcią new i deleteO tym tez mozna poczytac w tutorialu xiona Megatutorial “Od zera do gier kodera” ale juz nie powiem Tobie dokladnie gdzie. //Edit Sory za ta kupe, ktora stworzylem niechcacy u gory (myslalem ze edytuje), oczywiscie do usuniecia jak bedzie tylko taka mozliwosc :D |
|
DejaVu |
» 2008-10-06 21:08:50 Szybko, łatwo stworzyć tablicę bez ograniczenia rozmiaru: #include <vector> #include <iostream> using namespace std; int main() { vector < int > tablica; int liczba; do { cin >> liczba; if( liczba != 0 ) tablica.push_back( liczba ); } while( liczba != 0 ); for( int i = 0; i < tablica.size(); i++ ) cout << tablica[ i ] << endl; return 0; }
|
|
« 1 » 2 |