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

Problem z petla

Ostatnio zmodyfikowano 2009-02-20 15:59
Autor Wiadomość
Yoki
Temat założony przez niniejszego użytkownika
Problem z petla
» 2009-02-20 15:53:17
Witam

mam następujący problem. Rozpocząłem w ramach ćwiczeń pisanie programu i napotkałem następujący problem:

C/C++
#include<iostream>
#include<conio.h>
#include<console.ddt>
using namespace ddt::console;
using namespace std;
int main()
{
    float wielkosc;
    string nazwa;
    unsigned char znak;
    gotoxy( 33, 1 );
    cout << "BAZA DANYCH GIER v0.1" << endl;
    gotoxy( 1, 23 );
    cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl;
    gotoxy( 1, 24 );
    cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl;
    znak = getch();
    cout << static_cast < int >( znak ) << endl;
    while( znak = 224 )
    {
        switch( znak )
        {
        case 224: textbackground( 0 );
            clrscr();
            textcolor( 14 );
            cout << " Wpisz nazwe gry: ";
            getline( cin, nazwa );
            cout << " Wpisz wielkosc gry: ";
            cin >> wielkosc;
            cout << nazwa << wielkosc << "GB" << endl;
            getch();
            cout << static_cast < int >( znak ) << endl;
            clrscr();
            textcolor( 15 );
            gotoxy( 33, 1 );
            cout << "BAZA DANYCH GIER v0.1" << endl;
            gotoxy( 1, 23 );
            cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl;
            gotoxy( 1, 24 );
            cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl;
            znak = getch();
            cout << static_cast < int >( znak ) << endl;
            break;
            default: cout << "BLAD!!";
            break;
        }
    }
   
    getch();
}

dlaczego polecenie  getline(cin,nazwa); nie chce się powtarzać w pętli?? i polecenie to przy kolejnym obrocie jest pomijane.
P-4301
Yoki
Temat założony przez niniejszego użytkownika
» 2009-02-20 16:04:58
no fakt przypisania nie chce zrobic :) ale to taki bardzo bardzo wczesny projekt :) na dodatek bardzo poczatkujacego :)

niejmniej dzieki za wychwycenie :) Kod wyglada teraz tak :) niemniej nadal w petli nie chce sie powtorzyc komenda getline

C/C++
#include<iostream>
#include<conio.h>
#include<console.ddt>
using namespace ddt::console;
using namespace std;
int main()
{
    float wielkosc;
    string nazwa;
    unsigned char znak, b;
    gotoxy( 33, 1 );
    cout << "BAZA DANYCH GIER v0.1" << endl;
    gotoxy( 1, 23 );
    cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl;
    gotoxy( 1, 24 );
    cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl;
    znak = getch();
    cout << static_cast < int >( znak ) << endl;
    while( kbhit() )
    {
        znak = getch();
        static_cast < int >( znak );
    }
    while( znak )
    {
        switch( znak )
        {
        case 82: textbackground( 0 );
            clrscr();
            textcolor( 14 );
            cout << " Wpisz nazwe gry: ";
            getline( cin, nazwa );
            cout << " Wpisz wielkosc gry: ";
            cin >> wielkosc;
            cout << nazwa << wielkosc << "GB" << endl;
            getch();
            cout << static_cast < int >( znak ) << endl;
            while( kbhit() )
            {
                znak = getch();
                static_cast < int >( znak );
            }
            clrscr();
            textcolor( 15 );
            gotoxy( 33, 1 );
            cout << "BAZA DANYCH GIER v0.1" << endl;
            gotoxy( 1, 23 );
            cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl;
            gotoxy( 1, 24 );
            cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl;
            znak = getch();
            cout << static_cast < int >( znak ) << endl;
            while( kbhit() )
            {
                znak = getch();
                static_cast < int >( znak );
            }
            break;
        case 83: clrscr();
            textcolor( 14 );
            cout << "ktory wpis chcesz usunac?";
            cin >> b;
            break;
            default: cout << "BLAD!!";
            break;
        }
    }
   
   
    getch();
}
P-4302
Yoki
Temat założony przez niniejszego użytkownika
» 2009-02-21 09:28:12
Pomoze mi ktos?? Bo jestem ciekawy dlaczego nie dziala w petli pobranie calej linii:( czy to komenda gets czy getline
P-4305
Skala
» 2009-02-21 10:45:43
C/C++
#include<iostream>
#include<conio.h>
#include "console.ddt"
using namespace ddt::console;
using namespace std;
int main()
{
    float wielkosc;
    string nazwa;
    unsigned char znak, b;
    while( znak )
    {
        gotoxy( 33, 1 );
        cout << "BAZA DANYCH GIER v0.1" << endl;
        gotoxy( 1, 23 );
        cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl;
        gotoxy( 1, 24 );
        cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl;
        znak = getch();
        switch( znak )
        {
        case 82:
            textbackground( 0 );
            clrscr();
            textcolor( 14 );
            cout << " Wpisz nazwe gry: ";
            cin.ignore();
            getline( cin, nazwa );
            cout << " Wpisz wielkosc gry: ";
            cin >> wielkosc;
            cout << nazwa << wielkosc << "GB" << endl;
            getch();
            clrscr();
            textcolor( 15 );
            break;
            /*case 83:
                  clrscr();
                  textcolor(14);
                  cout<<"ktory wpis chcesz usunac?";
                  cin>>b;
                  break;  */
            default: cout << "BLAD!!";
            break;
        }
    }
    getch();
    return 0;
}

Mam nadzieję że poprawiłem problem z twoim getline'm ale przyznam się że kod jest nie czytelny, i w ogóle inaczej to bym zastosował.
A co do podpowiedzi twojego programu, zastosuj tablice a potem jak dodaj wpis zmienna++;
P-4306
pekfos
» 2009-02-21 11:02:19
ojojoj!! tyle błędów!!
static_cast < int >( cos );
to powinno wyglądać tak:
zmienna = static_cast < int >( cos );
(nie zaznaczałem powtarzających się błędów)
C/C++
#include<iostream>
#include<conio.h>
#include<console.ddt>
using namespace ddt::console;
using namespace std;
int main()
{
    float wielkosc;
    string nazwa;
    unsigned char znak, b;
    gotoxy( 33, 1 );
    cout << "BAZA DANYCH GIER v0.1" << endl;
    gotoxy( 1, 23 );
    cout << "Wcisniecie [INSERT] powoduje dodanie wpisu" << endl;
    gotoxy( 1, 24 );
    cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl;
    znak = getch();
    //cout<<static_cast<int>(znak)<<endl; //po co to?
    while( kbhit() )
    {
        znak = getch();
        //static_cast<int>(znak); //po co to?
    }
    //while(znak)
    while( znak != 27 )
    {
        //switch(znak)
        switch( static_cast < int >( znak ) )
        {
        case 82: textbackground( 0 );
            clrscr();
            textcolor( 14 );
            cout << " Wpisz nazwe gry: ";
            getline( cin, nazwa );
            cout << " Wpisz wielkosc gry: ";
            cin >> wielkosc;
            cout << nazwa << wielkosc << "GB" << endl;
            getch();
            cout << static_cast < int >( znak ) << endl;
            while( kbhit() )
            {
                znak = getch();
                static_cast < int >( znak );
            }
            clrscr();
            textcolor( 15 );
            gotoxy( 33, 1 );
            cout << "BAZA DANYCH GIER v0.1" << endl;
            gotoxy( 1, 23 );
            cout << "Wcisniecie [INSERT] powoduje dodanie wpisy" << endl;
            gotoxy( 1, 24 );
            cout << "wcisniecie [DEL] powoduje usuniecie wpisu" << endl;
            znak = getch();
            cout << static_cast < int >( znak ) << endl;
            while( kbhit() )
            {
                znak = getch();
                static_cast < int >( znak );
            }
            break;
        case 83: clrscr();
            textcolor( 14 );
            cout << "ktory wpis chcesz usunac?";
            cin >> b; // b to ZNAK!
            break;
            /*default:cout<<"BLAD!!";
                  break;*/ //to nie jest tu potrzebne (zawiesza program)
        }
    }
   
   
    //getch(); //tu powinno być return 0; a nie getch()
    return 0;
}
P-4307
Yoki
Temat założony przez niniejszego użytkownika
» 2009-02-21 11:47:46
dzięki :) wszelkie sugestie są dla mnie bardzo ważne :)

próbuje programować od tygodnia i stad pewnie tyle błędów :) ale wiadomo każdy się na nich uczy :) więc prosze wprost o to abyście powiedzieli co ewentualnie można zmienić i gdzie mam błędy :)

dzieki jeszcze raz

pozdro
P-4308
DejaVu
» 2009-02-21 16:32:06
Generalnie pobieranie znaku z klawiatury powinno być przed switch'em... u Ciebie to wogóle jest sklejka jakaś dziwna, że nawet nie chce się poprawiać błędów w tym kodzie tak dużo ich jest.
P-4314
Yoki
Temat założony przez niniejszego użytkownika
» 2009-02-21 16:35:19
rozumiem :( czyli zaczynam od przerobienia jeszcze raz poprzenich lekcji kursu :(
pozdrawiam i dziekuje
P-4316
« 1 » 2
  Strona 1 z 2 Następna strona