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

[C++] Błąd kompilacji programu function-definition-is-not allowed

Ostatnio zmodyfikowano 2017-08-27 10:41
Autor Wiadomość
Drocsid
Temat założony przez niniejszego użytkownika
[C++] Błąd kompilacji programu function-definition-is-not allowed
» 2017-08-26 16:47:08
Witam.. przychodzę tutaj gdyż mam problem z takim o to kodem...

C/C++
#include <iostream>
#include <string>
#include <cstdio>
#include <windows.h>
using namespace std;

void wczytajOsobe( string & imie, string & nazwisko, int & wiek )
{
    do
    {
        cin.clear();
        cin.sync();
        cout << "Podaj imie: ";
        cin >> imie;
        if( cin.good() == true )
        {
            break;
        }
    } while( 1 < 2 );
   
    do
    {
        cin.clear();
        cin.sync();
        cout << "Podaj nazwisko: ";
        cin >> nazwisko;
        if( cin.good() == true )
        {
            break;
        }
    } while( 1 < 2 );
   
    do
    {
        cin.clear();
        cin.sync();
        cout << "Podaj wiek: ";
        cin >> wiek;
        if( cin.good() == true )
        {
            break;
        }
    } while( 1 < 2 );
   
    void wypiszOsobe( string imie, string nazwisko, int wiek )
    {
        cout << "Imie: " << imie.c_str() << endl;
        cout << "Nazwisko: " << nazwisko.c_str() << endl;
        cout << "Wiek: " << wiek << endl;
        cout << endl;
       
    }
    int main()
    {
        string imie[ 2 ];
        string nazwisko[ 2 ];
        int wiek[ 2 ];
        for( int i = 0; i < 2; i++ )
        {
            wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
        }
        for( int i = 0; i < 2; i++ )
        {
            wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
        }
        return 0;
    }

W wyniku kompilacji otrzymuję 3 błędy:
function-definition-is-not-allowed...
function-definition-is-not-allowed...
i jakis trzeci który uważam że naprawi się sam po naprawieniu tych dwóch...

Najpierw, zanim założyłem ten temat przeszukałem internet.. dowiedziałem się ,że dotyczy on tworzenia funkcji w funkcji... możliwe, że źle zrozumiałem problem bo nie widzę tego błędu w moim kodzie
a kompilator raczej nie kłamie...

Jeśli ma ktoś czas i ochotę zerknąć na ten kod byłbym wdzięczny.
Prosiłbym o wskazanie miejsca gdzie jest błąd.. i ewentualne wytłumaczenie co tam nie gra :)
P-164302
mateczek
» 2017-08-26 16:50:37
kod wstawiaj w znaczniki
[cpp]tutaj kod[/cpp]

A problemem jest brak klamry domykającej funkcję
P-164303
Drocsid
Temat założony przez niniejszego użytkownika
» 2017-08-26 16:55:49
Faktycznie.. nie zauważyłem tego a skupiłem się na środku funckji.. dzięki za wszystko :)
P-164304
mateczek
» 2017-08-26 17:10:13
no i raczej nie ma sensu testować poprawności wczytania stringa. Bo zawsze będzie poprawne
warunki
while( 1 < 2 );
 są bez sensu bo zawsze prawdziwe


C/C++
#include <iostream>
#include <string>
using namespace std;

void wczytajOsobe( string & imie, string & nazwisko, int & wiek )
{
    cout << "Podaj imie: ";
    cin >> imie;
    cout << "Podaj nazwisko: ";
    cin >> nazwisko;
    while( cout << "Podaj wiek: ", !( cin >> wiek ) ) {
        cin.clear();
        cin.sync();
    }
}

void wypiszOsobe( string imie, string nazwisko, int wiek )
{
    cout << "Imie: " << imie << endl;
    cout << "Nazwisko: " << nazwisko << endl;
    cout << "Wiek: " << wiek << endl;
    cout << endl;
}
int main()
{
    string imie[ 2 ];
    string nazwisko[ 2 ];
    int wiek[ 2 ];
    for( int i = 0; i < 2; i++ )
    {
        wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
    }
    for( int i = 0; i < 2; i++ )
    {
        wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
    }
    return 0;
}
P-164305
Drocsid
Temat założony przez niniejszego użytkownika
» 2017-08-27 10:33:38
A czy jest możliwość zabezpieczenia przed wprowadzaniem liczby w miejsce gdzie powinien występować wyraz?
W sensie żeby w miejsce "Nazwisko" nie dało sie wpisać "123"
P-164316
karambaHZP
» 2017-08-27 10:41:43
Litery i cyfry są znakami nie zostaną potraktowane jako błąd.
Musisz samemu zapewnić sobie, aby cyfry nie pojawiały się we wprowadzonym łańcuchu.
Pobierać znak po znaku i sprawdzać czy przypadkiem nie pojawiła się cyfra,
lub sprawdzić łańcuch pod kątem występowania cyfr i odpowiednio zareagować.

edit:
C/C++
#include <iostream>
#include <string>

std::string GetText()
{
    std::string text;
    std::getline( std::cin, text );
    if( text.find_first_of( "1234567890" ) != std::string::npos )
    {
        return std::string { };
    }
    else
    {
        return text;
    }
}

int main()
{
    std::string text = GetText();
    if( text.empty() )
    {
        std::cout << "Tekst zawieral cyferki\n";
    }
    else
    {
        std::cout << text << '\n';
    }
}
P-164317
« 1 »
  Strona 1 z 1