Instrukcja break, konczaca dzialanie pętli przy ENTER.

Odpowiedz Nowy wątek
2015-02-16 17:54
0
#include<iostream>
using namespace std;
const int SLEN = 30;
struct student 
{
    char fulname[SLEN];
    char hobby[SLEN];
    int ooplevel;
};

int getinfo(student pa[], int n);
void display1(student st);
void display2(const student * ps);
void display3(const student pa[], int n);

int main()
{
    cout << "Podaj wielkosc grupy ";
    int class_size;
    cin >> class_size;
    while(cin.get() != '\n')
        continue;
    student *ptr_stu = new student[class_size];
    int entered = getinfo(ptr_stu, class_size);
    for (int i = 0; i< entered; i++)
    {
        display1(ptr_stu[i]);
        display2(&ptr_stu[i]);
    }
    display3(ptr_stu, entered);
    delete [] ptr_stu;
    cout << "Gotowe!";
    system("pause");
    return 0;
}

int getinfo(student pa[], int n)
{
    cout << "Rozpocznij wprowadzanie danych o studentach" << endl;
    int i = 0;
    for(i; i < n; i++)
    {
        cout << "Podaj imie studenta ";
        char imie[SLEN];
        cin >> imie;
       #include<iostream>
using namespace std;
const int SLEN = 30;
struct student 
{
    char fulname[SLEN];
    char hobby[SLEN];
    int ooplevel;
};

int getinfo(student pa[], int n);
void display1(student st);
void display2(const student * ps);
void display3(const student pa[], int n);

int main()
{
    cout << "Podaj wielkosc grupy ";
    int class_size;
    cin >> class_size;
    while(cin.get() != '\n')
        continue;
    student *ptr_stu = new student[class_size];
    int entered = getinfo(ptr_stu, class_size);
    for (int i = 0; i< entered; i++)
    {
        display1(ptr_stu[i]);
        display2(&ptr_stu[i]);
    }
    display3(ptr_stu, entered);
    delete [] ptr_stu;
    cout << "Gotowe!";
    system("pause");
    return 0;
}

int getinfo(student pa[], int n)
{
    cout << "Rozpocznij wprowadzanie danych o studentach" << endl;
    int i = 0;
    for(i; i < n; i++)
    {
        cout << "Podaj imie studenta ";
        char imie[SLEN];
        cin >> imie;
        if(!cin)
        {
            cin.clear();
            while (cin.get() != '\n') // ENTER konczy wprowadzanie"
                continue;
            cout << "bledne dane, wprowadzanie danych przerwane" << endl;
            break;
        }
        else
        {
            strcpy(pa[i].fulname, imie);
            cout << "Hobby: ";
            cin >> pa[i].hobby;
            cout << "Costam: ";
            cin >> pa[i].ooplevel;
        }
    }
    return i;
}

void display1(student st)
{
    cout << "Student " << st.fulname << " hobby " << st.hobby << " costam " << st.ooplevel << endl;
}

void display2(const student * ps)
{
    cout << "Student " << ps->fulname << " hobby " << ps->hobby <<  " costam " << ps->ooplevel << endl;
}
void display3(const student pa[], int n)
{
    cout << "Wszyscy studenci";
        for (int i = 0; i < n; i++)
        {
            cout << "Student " << i+1 << " " << pa[i].fulname << " hobby " << pa[i].hobby << " costam " << pa[i].ooplevel << endl;
        };

}

        {
            strcpy(pa[i].fulname, imie);
            cout << "Hobby: ";
            cin >> pa[i].hobby;
            cout << "Costam: ";
            cin >> pa[i].ooplevel;
        }
    }
    return i;
}

void display1(student st)
{
    cout << "Student " << st.fulname << " hobby " << st.hobby << " costam " << st.ooplevel << endl;
}

void display2(const student * ps)
{
    cout << "Student " << ps->fulname << " hobby " << ps->hobby <<  " costam " << ps->ooplevel << endl;
}
void display3(const student pa[], int n)
{
    cout << "Wszyscy studenci";
        for (int i = 0; i < n; i++)
        {
            cout << "Student " << i+1 << " " << pa[i].fulname << " hobby " << pa[i].hobby << " costam " << pa[i].ooplevel << endl;
        };

}

Witam wszystkich, miałem długą przerwę w c++ z racji sesji, ale powoli wracam do nauki.
Mam problem z instrukcją break w petli:

if(!cin)
        {
            cin.clear();
            while (cin.get() != '\n') // ENTER konczy wprowadzanie"
                continue;
            cout << "bledne dane, wprowadzanie danych przerwane" << endl;
            break;
        }
        else
        {
            strcpy(pa[i].fulname, imie);
            cout << "Hobby: ";
            cin >> pa[i].hobby;
            cout << "Costam: ";
            cin >> pa[i].ooplevel;
        }
    }

Chciałbym, żeby wprowadzenie ENTER przerwało pętlę.
Pozdrawiam

którą, gdzie, co jak ? - gośćabc 2015-02-16 18:14
Po co pierwszy kod? - gogolon 2015-02-16 18:29

Pozostało 580 znaków

2015-02-16 18:28
while (cin.get() != '\n') // ENTER konczy wprowadzanie"
{
     if(kbhit()) // Do tej funkcji musisz dołączyć nagłówek conio.h
     {
           char c = getch();
           if(c == 13) // 13 to kod ASCII entera
           {
                 break;
           }
     }
}

Sorry za słabe wcięcia, ale kod pisany już na forum :D

edytowany 2x, ostatnio: gogolon, 2015-02-17 21:26

Pozostało 580 znaków

2015-02-17 18:32
0

Ok dzięki, a możesz mi powiedzieć co jest nie tak z moim kodem? Czemu '\n' nie przerywa działania programu?

Jak nie przerywa? Ma wyjść z całego ifa czy co? Który blok ma być przerwany? - gogolon 2015-02-17 19:28

Pozostało 580 znaków

2015-02-17 22:36
0

Chciałbym żeby wyszło z całej pętli for, czyli zakończyło działanie tej funkcji.

Pozostało 580 znaków

2015-02-18 10:01
0

No to daj tam return i po prostu.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0