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

W jaki sposób szybko i łatwo stworzyć tablicę bez ograniczenia rozmiaru?

Ostatnio zmodyfikowano 2008-10-08 17:38
Autor Wiadomość
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?

C/C++
#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
P-1889
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++.


P-1893
DejaVu
» 2008-10-05 18:11:14
Zamień wpis:
C/C++
#include <console.ddt>
na następujący:
C/C++
#include "console.ddt"

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:
C/C++
#include <iostream>
#include <conio.h>
#include <console.ddt> //błąd

using namespace std;
using namespace ddt::console;

int main()
{
    volatile int i = 0; //błąd - nawet nie wiesz po co tego słowa kluczowego się używa
    int liczby[ i ]; //błąd
    string ciag = 0; //błąd
    string koniec;
    bool finito = true;
    cout << "Operacje na ciagach. Pobranie ciagu" << endl;
    do {
        void clrscr(); //błąd
        if( i != 0 ) cout << "Wprowadziłes liczby: " << ciag << endl;
       
        cout << "Podaj liczbe: ";
        cin >> liczby[ i ]; //błąd - wyjście poza zakres tablicy
        ciag += liczby[ i ] + ", "; //błąd - wyjście poza zakres tablicy
        i++;
        cout << "Czy zakonczyc wprowadzanie? [T/N]";
        cin >> koniec;
        if( koniec == "N" ) finito = false;
       
    }
    while( finito ); //błąd
   
    getch();
    return( 0 );
}

/edit4:
Dodam jeszcze, że nazwa zmiennej finito sugeruje zupełnie co innego niż faktycznie robi.
P-1894
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.
P-1905
dudek
» 2008-10-06 18:58:44
//Edit
Do usuniecia
P-1906
dudek
» 2008-10-06 18:59:36
//Edit
Do usuniecia
P-1907
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 delete
O 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
P-1908
DejaVu
» 2008-10-06 21:08:50
Szybko, łatwo stworzyć tablicę bez ograniczenia rozmiaru:
C/C++
#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;
}
P-1911
« 1 » 2
  Strona 1 z 2 Następna strona