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

problem z tabela lub struktura

Ostatnio zmodyfikowano 2009-10-31 06:10
Autor Wiadomość
dmx81
Temat założony przez niniejszego użytkownika
» 2009-10-25 00:15:52
1. czy bedzie w tym przypadku mozliwe wyswietlenie np nazwisk, ktore sa przypisane do lotu RZYM? bo po wybraniu miasta zalacza menu 1.sprzedaz biletow, 2 sprawdz liste...do teraz bylo tak, ze program dopisuje nazwiska, ale jak wyjde do menu wyboru miasta i wybiore inne, to tam nadal widnieja zapisane nazwiska

2. przyznam, ze poki co, nie wiem, jak wykorzystac dana podpowiedz, troche jeszcze pewnie sie pomecze, byc moze za malo jeszcze wiem, aby temu sprostac (tylko jakie elementy-kursy opanowac?)

3. dla listy wyswietlanie jest od pierwszego elementu do ostatniego, chyba ze damy inny warunek zatrzymania...a zastanawialem sie, czy jest mozliwe, aby przeleciec cala liste, i dla lot->miasto=Rzym ,cout<<pasazer->nazwisko - cos w tym stylu, ze cala liste przeleci a wyswietli tylko nazwiska dla zalozonej nazwy miasta, ale nie wiem czy to jest wykonalne




4. wymyslilem tez cos takiego:

na razie bez kodu, tylko w glowie:

w jednej strukturze z nazwiskiem umiescic zmienne miasto1,miasto2...miaston

w zaleznosci od switch(wybor miasta)
zapiszemy nazwisko do struktury, nastepnie np case:1 - cin>>struktura->miasto 1

a w funkcji kolejkowania, miasto 2 przypisac do miasta3 itd, a ostatnie do wskaznika *nastepny, aby wpisac mozna bylo 1 miasto, a reszta wskazywala na przejscie do nastepnego wiersza w strukturze - mam nadzieje, ze w miare jasno napisalem, tylko nie wiem, czy z sensem.

analogicznie przy case:2, dostepne do zapisu bedzie miasto 2, reszta "polaczona" do nastepny

no i w kazdym case bedzie mozliwosc wyswietlenia tylko tego konkretnego miasta
P-11077
DejaVu
» 2009-10-25 02:18:47
Rozrysuj sobie problem na karce w postaci drzewa. Dostałeś de'facto rozwiązanie, a nie podpowiedź. Możesz mieć listę lotów i napisać funkcję, która znajduje wskaźnik na lot, którego szukasz. Następnie na wskaźniku znalezionym operujesz, tj. dodajesz do listy nowe nazwiska.
P-11078
dmx81
Temat założony przez niniejszego użytkownika
» 2009-10-27 20:54:15
czy wskaznik zadeklarowany w jednej ze struktur(A), wskazujacy na druga(B) z nich, bedzie przechowywal osobne informacje(adres) dla kazdej nowej utworzonej struktury new A? mi sie wydaje, ze powinien, bo przydzielony zostaje zakres pamieci, wiec kazdy element struktury A - lacznie ze wskaznikiem, ma swoje miejsce - chodzi mi, czy kazdym nowoutworzonym wskaznikiem w A bede mogl sie odwolac do innych-roznych zmiennych w strukturze B (oczywiscie jedna zmienna na wskaznik)

czy np, utworzyc w strukturze A dodatkowa zmienna, przyjmujaca wartosc, na jaka wskazuje wskaznik, aby po utworzeniu nowej struktury A dane nie zostaly nadpisane

poprosze o odp, dziekuje
P-11118
lynx
» 2009-10-27 21:12:13
mi sie wydaje, ze powinien, bo przydzielony zostaje zakres pamieci,
Dobrze Ci się wydaje, :) wskaźnik jednego obiektu nie musi się równać wskaźnikowi drugiego obiektu tej samej klasy.
P-11120
dmx81
Temat założony przez niniejszego użytkownika
» 2009-10-28 18:55:41
nastepny problem - nie potrafie znalezc bledu = wklejam kod, troszke dlugi, ale juz popracowalem nad pisaniem funkcji, wiec duzo latwiej sie poroszac i znalezc blad.
co nie dziala:

1. przy dodaniu miast do listy, wyswietlam ja - numeracja jest ciagle 1.AA 1.BB =funkcja pisz trasy

2. lista dodanych biletow nie wyswietla wcale, zdefiniowana podobnie jak lista tras - mimo to nie mam nawet komunikatu o pustej liscie

prosze o wrzucenie do kompilatora i sprawdzenie list, dzieki - o ile ktos ma cierpliwosc i pare minutek



C/C++
#include <iostream>
#include <conio.h>

struct lista
{
    std::string miasto;
    lista * nastepny;
};
lista * gora = NULL;
lista * dol;
struct bilet
{
    std::string nazwisko;
    lista * dokad;
    bilet * next;
};
bilet * first = NULL;
bilet * last;
bilet * add;

void kolejka_tras( std::string CITY );
void dodaj_trase();
void pisz_trasy();
void kolejka_biletow( int zamowienie, std::string NAZW );
void dodaj_nazwisko();
void pokaz_bilety();
main()
{
   
    int menu, trasy, wybor_bilet;
   
    do
    {
        std::cout << "\n1. Menu tras (dodaj trasy, sprawdz liste tras)\n2. Menu lotow( sprzedaz biletow, podglad biletow)\n3. Wyjscie z programu\n\n\n     wybor:  ";
        std::cin >> menu;
        clrscr();
        switch( menu )
        {
        case 1:
            do {
                std::cout << "1. Dodaj trase lotu\n2. Zobacz liste tras\n3. Wyjscie do menu\n\n     wybor:  ";
                std::cin >> trasy;
                clrscr();
                switch( trasy )
                {
                case 1:
                    dodaj_trase();
                    clrscr();
                    break;
                case 2:
                    pisz_trasy();
                    clrscr();
                    break;
                case 3:
                    clrscr();
                    break;
                    default:
                    std::cout << "\nPodales zla liczbe...\n";
                    clrscr();
                    break;
                }
            } while( trasy != 3 );
           
            break;
        case 2:
            do
            {
                std::cout << "\n1. Nowy bilet\n2. Lista pasazerow\n3. Wyjscie do menu\n\n     wybor:  ";
                std::cin >> wybor_bilet;
                clrscr();
                switch( wybor_bilet )
                {
                case 1:
                    dodaj_nazwisko();
                    clrscr();
                    break;
                case 2:
                    pokaz_bilety();
                    clrscr();
                    break;
                case 3:
                    clrscr();
                    break;
                    default:
                    std::cout << "\nZla liczba . . .\n";
                    clrscr();
                    break;
                }
            } while( wybor_bilet != 3 );
           
            break;
        case 3:
            clrscr();
            break;
            default:
            std::cout << "\nZla liczba . . .\n";
            clrscr();
            break;
        }
    }
    while( menu != 3 );
   
}







void dodaj_trase()
{
    std::string CITY;
    std::cout << "Aby dodac nowa trase, wpisz nazwe miasta docelowego\n\n     miasto:  ";
    std::cin >> CITY;
    kolejka_tras( CITY );
   
    getch();
}


void kolejka_tras( std::string CITY )
{
    lista * dodaj = new lista;
   
    if( gora == NULL )
    {
        gora = dodaj;
        dol = gora;
    }
    else
    {
        dol->nastepny = dodaj;
        dol = dodaj;
    }
    dodaj->nastepny = NULL;
    dodaj->miasto = CITY;
    std::cout << "\n\nDopisano nowe miasto: \n\n" << dodaj->miasto;
}

void pisz_trasy()
{
    int i = 0;
   
    lista * wyswietl;
    wyswietl = gora;
    if( gora == NULL )
    {
        std::cout << "\n Lista jest pusta ... \n";
    }
    else while( wyswietl != 0 )
    {
        i++;
        std::cout << i << ". " << wyswietl->miasto << "\n";
        wyswietl = wyswietl->nastepny;
        getch();
    }
    getch();
}


void kolejka_biletow( int zamowienie, std::string NAZW )
{
    bilet * add = new bilet;
   
    if( first == NULL )
    {
        first = add;
        last = first;
    }
    else
    {
        last->next = add;
        last = add;
    }
    add->nazwisko = NAZW;
    add->next = NULL;
    std::cout << "\n Zapisano bilet na nazwisko:    " << add->nazwisko << "\n";
}

void dodaj_nazwisko()
{
    std::string NAZW;
    int zamowienie;
    std::cout << "\n\n Ile zamowic biletow? :\n\n     podaj liczbe:   ";
    std::cin >> zamowienie;
    for( int i = 1; i <= zamowienie; i++ )
    {
        std::cout << "\nPodaj nazwisko nr: " << i << std::endl;
        std::cin >> NAZW;
        kolejka_biletow( zamowienie, NAZW );
       
    }
    getch();
}

void pokaz_bilety()
{
    int i = 1;
    bilet * pokaz;
    pokaz = first;
    if( first == NULL )
    {
        std::cout << "\nLista jest pusta...\n";
    }
    else while( pokaz != NULL )
    {
        std::cout << i << pokaz->nazwisko << std::endl;
        pokaz = pokaz->next;
        i++;
    }
}

PS. liczenie wyswietlanych miast juz dziala, w sumie nic nie zmienilem, tylko dodalem funckje wprowadzania biletow i zeby ta liczbe wyswietlalo razem z miastem, przy okazji sie "naprawilo liczenie", jednak dalej nie dziala wyswietlanie pasazerow - sprzedanych biletow
P-11137
dmx81
Temat założony przez niniejszego użytkownika
» 2009-10-30 21:25:25
znalazlem, blad byl prosty :P brakowalo getch(); przy okazji pare innych drobnostek poprawilem, pracuje dalej nad swoim projektem, w ktorym bedzie mozna:

dodawac trasy lotu; wyswietlic je
"sprzedawac" bilety na dostepne trasy - az do wyczerpania biletow"
wyswietlic bilety dla kazdej z tras
no i pare innych, szkielet gotowy, pare dodatkow opracowuje,jak np zabezpieczenie przed sprzedaza wiekszej ilosci biletow, niz jest dostepna itp.

jesli uda mi sie opanowac program, nastepnymi krokami beda:

podzial programu na pliki;
mozliwosc zapisywania danych do pliku;

P-11169
DejaVu
» 2009-10-31 06:10:26
Skoro problem już rozwiązałeś (chyba nie jeden sądząc po długości tematu) to go zamykam. :)
P-11176
1 2 3 « 4 »
Poprzednia strona Strona 4 z 4