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

Nie umiem skompilować kodu z lekcji

Ostatnio zmodyfikowano 2008-10-23 14:10
Autor Wiadomość
wojtas1993aaa
Temat założony przez niniejszego użytkownika
Nie umiem skompilować kodu z lekcji
» 2008-10-16 21:26:01
Przeczytalem kurs i nie moge sobie poradzic ze zrobieniem tej ksiazki telefonicznej(nowy jestem)Mógl by mi ktos pomuc?
P-2106
DejaVu
» 2008-10-16 21:27:24
A co chcesz konkretnie zrobić w niej?
P-2108
wojtas1993aaa
Temat założony przez niniejszego użytkownika
» 2008-10-16 21:30:19
C/C++
#include <iostream>
#include <conio.h>
#include "console.ddt"
#define MAX_OSOB 50
#define WYSWIETL_OSOB 20
using namespace ddt::console;
using namespace std;
struct OsobaST
{
    string imie;
    string nazwisko;
    string telefon;
};
OsobaST WczytajOsobe( void );
void WyswietlDaneOsoby( OsobaST );
void WyswietlListeOsob( OsobaST tablica[], int iloscElelemtow, int zaznaczElement, int wyswietlOdElementu );
void KasujOsobe( OsobaST tablica[], int & iloscElementow, int indeksDoSkasowania );
void DodajOsobe( OsobaST tablica[], int & aktualnaIloscElementow );
void WyswietlKomunikaty( int iloscElementow )
{
    textbackground( 0 );
    textcolor( 7 );
    gotoxy( 1, 1 );
    cout << "Ilosc osob: " << iloscElementow << "/" << MAX_OSOB << "    ";
    gotoxy( 1, 24 );
    cout << "[ESC] Wyjscie     ";
    cout << "[INSERT] Dodaj wpis     ";
    cout << "[GORA/DOL] Poruszanie sie po liscie   ";
    gotoxy( 1, 25 );
    cout << "[DELETE] Kasuj osobe   ";
    cout << "[ENTER] Pokaz dane osoby   ";
    cout << "[CTRL+ENTER] Edytuj osobe   ";
    return;
}
void EdytujTekst( string & fTekst );
void EdytujDaneOsoby( OsobaST & );
int main()
{
    OsobaST osoby[ MAX_OSOB ];
    int iloscOsob = 0;
    bool koniec = false;
    int pozycja = 0;
    int pozycjaListy = 0;
    while( koniec != true )
    {
        textcolor( 7 );
        textbackground( 0 );
        clrscr();
        if( pozycja >= iloscOsob ) pozycja = iloscOsob - 1;
       
        if( pozycja < 0 ) pozycja = 0;
       
        if( pozycja > pozycjaListy +( WYSWIETL_OSOB - 1 ) ) pozycjaListy = pozycja -( WYSWIETL_OSOB - 1 );
       
        if( pozycja < pozycjaListy ) pozycjaListy = pozycja;
       
        WyswietlListeOsob( osoby, iloscOsob, pozycja, pozycjaListy );
        WyswietlKomunikaty( iloscOsob );
        unsigned char znak = getch();
        switch( znak )
        {
        case 224: //klawisze specjalne
            znak = getch();
            switch( znak )
            {
            case 72: //strzałka w górę
                pozycja -= 1;
                break;
            case 80: //strzałka w dół
                pozycja += 1;
                break;
            case 82: //klawisz insert
                DodajOsobe( osoby, iloscOsob );
                break;
            case 83: //klawisz delete
                KasujOsobe( osoby, iloscOsob, pozycja );
                break;
            }
            znak = 0;
            break;
        case 10: //CTRL+ENTER
            if( iloscOsob > 0 ) EdytujDaneOsoby( osoby[ pozycja ] );
           
            break;
        case 13: //ENTER
            if( iloscOsob > 0 ) WyswietlDaneOsoby( osoby[ pozycja ] );
           
            break;
        case 27: //ESC
            koniec = true;
            break;
        }
    }
    return( 0 );
}
void DodajOsobe( OsobaST tablica[], int & aktualnaIloscElementow )
{
    if( aktualnaIloscElementow < MAX_OSOB )
    {
        tablica[ aktualnaIloscElementow ] = WczytajOsobe();
        aktualnaIloscElementow += 1;
    }
    return;
}
OsobaST WczytajOsobe( void )
{
    OsobaST tOsoba;
    clrscr();
    cout << "Podaj imie: ";
    getline( cin, tOsoba.imie );
    cout << "Podaj nazwisko: ";
    getline( cin, tOsoba.nazwisko );
    cout << "Podaj telefon: ";
    getline( cin, tOsoba.telefon );
    return( tOsoba );
}
void WyswietlListeOsob( OsobaST tablica[], int iloscElementow, int zaznaczElement, int wyswietlOdElementu )
{
    int max = wyswietlOdElementu + WYSWIETL_OSOB;
    if( max > iloscElementow ) max = iloscElementow;
   
    for( int i = wyswietlOdElementu; i < max; i++ )
    {
        if( i == zaznaczElement )
        {
            textbackground( 12 );
            textcolor( 14 );
        } else
        {
            textbackground( 0 );
            textcolor( 7 );
        }
        gotoxy( 1, 3 + i - wyswietlOdElementu );
        for( int j = 0; j < 60; j++ ) cout << " ";
       
        gotoxy( 1, wherey() );
        cout <<( i + 1 );
        gotoxy( 10, wherey() );
        cout << tablica[ i ].imie;
        gotoxy( 30, wherey() );
        cout << tablica[ i ].nazwisko;
    }
    return;
}
void WyswietlDaneOsoby( OsobaST osoba )
{
    clrscr();
    cout << "Imie wybranej osoby to: " << osoba.imie << endl;
    cout << "Nazwisko wybranej osoby to: " << osoba.nazwisko << endl;
    cout << "Telefon kontaktowy do tej osoby to: " << osoba.telefon << endl;
    cout << endl;
    cout << "Nacisnij dowolny klawisz aby powrocic do listy osob." << endl;
    getch();
    return;
}
void KasujOsobe( OsobaST tablica[], int & iloscElementow, int indeksDoSkasowania )
{
    if( iloscElementow > 0 )
    {
        int minx = 20;
        int miny = 11;
        int maxx = 80 -( minx - 1 );
        int maxy = 25 -( miny - 1 );
        textcolor( 15 );
        textbackground( 1 );
        for( int y = miny; y <= maxy; y++ )
        {
            gotoxy( minx, y );
            for( int x = minx; x <= maxx; x++ ) cout << " ";
           
        }
        gotoxy( minx + 1, miny );
        textcolor( 15 );
        cout << "Imie: ";
        textcolor( 14 );
        cout << tablica[ indeksDoSkasowania ].imie;
       
        gotoxy( minx + 1, miny + 1 );
        textcolor( 15 );
        cout << "Nazwisko: ";
        textcolor( 14 );
        cout << tablica[ indeksDoSkasowania ].nazwisko;
       
        gotoxy( minx + 1, miny + 2 );
        textcolor( 15 );
        cout << "Telefon: ";
        textcolor( 14 );
        cout << tablica[ indeksDoSkasowania ].telefon;
       
        gotoxy( minx + 1, maxy );
        textcolor( 15 );
        cout << "Czy chcesz usunac ten wpis? (T/N)";
       
        unsigned char tOdpowiedz = 0;
        do
        {
            tOdpowiedz = getch();
            if( tOdpowiedz == 224 ) //znak specjalny
            {
                getch();
                tOdpowiedz = 0;
            }
        } while(( tOdpowiedz != 't' ) &&( tOdpowiedz != 'T' ) &&( tOdpowiedz != 'N' ) &&( tOdpowiedz != 'n' ) );
        //kasowanie:
        if(( tOdpowiedz == 't' ) ||( tOdpowiedz == 'T' ) )
        {
            for( int i = indeksDoSkasowania + 1; i < iloscElementow; i++ ) tablica[ i - 1 ] = tablica[ i ];
           
            iloscElementow -= 1;
        }
    }
    return;
}
void EdytujTekst( string & fTekst )
{
    string tNowy;
    getline( cin, tNowy );
    if( tNowy.length() == 0 )
    {
        cout << "Nie wprowadzono zmian!" << endl;
    } else
    {
        fTekst = tNowy;
        cout << "Wprowadzono zmiany!" << endl;
    }
}
void EdytujDaneOsoby( OsobaST & fOsoba )
{
    clrscr();
    cout << "Pole, ktore zostawisz puste nie zostanie zmienione." << endl;
    cout << "Podaj nowe imie (stare: \"" << fOsoba.imie << "\"): ";
    EdytujTekst( fOsoba.imie );
    cout << "Podaj nowe nazwisko (stare: \"" << fOsoba.nazwisko << "\"): ";
    EdytujTekst( fOsoba.nazwisko );
    cout << "Podaj nowy telefon (stary: \"" << fOsoba.telefon << "\"): ";
    EdytujTekst( fOsoba.telefon );
    return;
}
//////////////////to bylo w kursie //////////////////////////////////////////////
Mi kompilator znajduje bledy w ddt::console i nie mogfe ruszyc :/ Prosze o pomoc:)
P-2110
DejaVu
» 2008-10-16 21:33:40
Tutaj masz działające przykłady z rozdziału 19 http://svn.nq.pl/zasoby/C++/19%20Struktury%20danych/.
P-2111
wojtas1993aaa
Temat założony przez niniejszego użytkownika
» 2008-10-16 21:37:38
Cos nie bardzo dziala:/
P-2112
DejaVu
» 2008-10-16 21:39:02
Pisz pełnymi zdaniami i opisuj dokładniej, bo na takie stwierdzenia nie jestem w stanie w żaden sposób zareagować.
P-2113
lynx
» 2008-10-16 21:40:13
To może spróbuj jeszcze raz pobrać console.ddt.
P-2114
wojtas1993aaa
Temat założony przez niniejszego użytkownika
» 2008-10-16 21:41:12
ok
P-2115
« 1 » 2
  Strona 1 z 2 Następna strona