+ Ответить в теме
Страница 1 из 2
1 2 ПоследняяПоследняя
Показано с 1 по 10 из 15.

Тема: expexted primary expression before "void"

  1. #1
    dummy
    coder
    Юлько is on a distinguished road
    Регистрация
    30.05.2010
    Адрес
    Берлин
    Сообщений
    10

    expexted primary expression before "void"

    Эм, помогите, люди добрые! В чём ошибка и как бы это исправить? Чёт я зависла слегка, знаний не хватает))
    Пасибо огромнейшее заранее тому, кто мне скажет, где я балбеско!

    Код cpp:
    #include <iostream>
    using namespace std;
    int main()
    {
        char benutzereingabe_text;
        int benutzereingabe_zahl;
        int testscore = 0;
        bool richtige_Eingabe = false;
        int zaeler = 1;
        int Anzahl_der_Aufgaben = 7;
       
        void aufgabe1()
        {
             cout<<"Bitte loesen Sie die"<<zaeler<<". Aufgabe: \n 319 + 72 = ";
             cin>>benutzereingabe_text;
             
             richtigeEingabe = ueberpruefung(benutzereingabeText);
             if (richtigeEingabe)
             {
                if (benutzereingabe_zahl == 391)
                {
                    testscore++;
                    zaehler++;
                }
                else
                {
                    cout<<"Die Antwort war leider falsch. Auf zur naechsten Aufgabe.\n\n";
                    zaehler++;
                }
             }
        }
       
        void aufgabe2()
        {
             cout<<"Bitte loesen Sie die"<<zaeler<<". Aufgabe: \n 125 : 5 = ";
             cin>>benutzereingabe_text;
             
             richtigeEingabe = ueberpruefung(benutzereingabeText);
             if (richtigeEingabe)
             {
                if (benutzereingabe_zahl == 25)
                {
                    testscore++;
                    zaehler++;
                }
                else
                {
                    cout<<"Die Antwort war leider falsch. Auf zur naechsten Aufgabe.\n\n";
                    zaehler++;
                }
             }
        }
       
        void aufgabe3()
        {
             cout<<"Bitte loesen Sie die"<<zaeler<<". Aufgabe: \n (315 - 26) * 3 = ";
             cin>>benutzereingabe_text;
             
             richtigeEingabe = ueberpruefung(benutzereingabeText);
             if (richtigeEingabe)
             {
                if (benutzereingabe_zahl == 867)
                {
                    testscore++;
                    zaehler++;
                }
                else
                {
                    cout<<"Die Antwort war leider falsch. Auf zur naechsten Aufgabe.\n\n";
                    zaehler++;
                }
             }
        }
       
        void aufgabe4()
        {
             cout<<"Bitte loesen Sie die"<<zaeler<<". Aufgabe: \n 16^2 = ";
             cin>>benutzereingabe_text;
             
             richtigeEingabe = ueberpruefung(benutzereingabeText);
             if (richtigeEingabe)
             {
                if (benutzereingabe_zahl == 256)
                {
                    testscore++;
                    zaehler++;
                }
                else
                {
                    cout<<"Die Antwort war leider falsch. Auf zur naechsten Aufgabe.\n\n";
                    zaehler++;
                }
             }
        }
       
        void aufgabe5()
        {
             cout<<"Bitte loesen Sie die"<<zaeler<<". Aufgabe: \n (40 : 2) ^ 2 = ";
             cin>>benutzereingabe_text;
             
             richtigeEingabe = ueberpruefung(benutzereingabeText);
             if (richtigeEingabe)
             {
                if (benutzereingabe_zahl == 400)
                {
                    testscore++;
                    zaehler++;
                }
                else
                {
                    cout<<"Die Antwort war leider falsch. Auf zur naechsten Aufgabe.\n\n";
                    zaehler++;
                }
             }
        }
       
        void aufgabe6()
        {
             cout<<"Bitte loesen Sie die"<<zaeler<<". Aufgabe: \n (527 + 31 ) : 3 = ";
             cin>>benutzereingabe_text;
             
             richtigeEingabe = ueberpruefung(benutzereingabeText);
             if (richtigeEingabe)
             {
                if (benutzereingabe_zahl == 201)
                {
                    testscore++;
                    zaehler++;
                }
                else
                {
                    cout<<"Die Antwort war leider falsch. Auf zur naechsten Aufgabe.\n\n";
                    zaehler++;
                }
             }
        }
       
        void aufgabe7()
        {
             cout<<"Bitte loesen Sie die"<<zaeler<<". Aufgabe: \n (9^2)(6^2)(3^2) + 21 = ";
             cin>>benutzereingabe_text;
             
             richtigeEingabe = ueberpruefung(benutzereingabeText);
             if (richtigeEingabe)
             {
                if (benutzereingabe_zahl == 147)
                {
                    testscore++;
                    zaehler++;
                }
                else
                {
                    cout<<"Die Antwort war leider falsch. Auf zur naechsten Aufgabe.\n\n";
                    zaehler++;
                }
             }
        }
       
        bool ueberpruefung(char benutzereingabe_text)
        {
             bool ueberpruefung = false;
             try
             {
                benutzereingabe_zahl = Integer.valueOf(benutzereingabe);
                ueberpruefung = true;
             }
             catch (Exception e)
             {
                cout<<"Die Zahl, die Sie eingegeben haben, ist keine Zahl.\n\n";
             }
            return ueberpruefung;
        }
        void main(char)
        {
            cout<<"Bitte loesen Sie die folgenden Aufgaben.\n\n";
            do
            {
                switch (zaehler-1)
                {
                 case 0: aufgabe1();
                    break;
                 case 1: aufgabe1();
                    break;
                 case 2: aufgabe1();
                    break;
                 case 3: aufgabe1();
                    break;
                 case 4: aufgabe1();
                    break;
                 case 5: aufgabe1();
                    break;
                 case 6: aufgabe1();
                    break;
                }
            }
            while (zaehler-1 != Anzahl_der_Aufgaben);
            cout<<"\a";
            cout<<"\n\nSie haben den Test abgeschlossen.\nIhre Punktzahl betraegt: "<<testscore;
        }
        cout<<"\n";
        cout<<"\n";
        system("pause");
        return 0;
    }

  2. #2
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Сообщений
    1,801

    Re: expexted primary expression before "void"

    Ну хоть опиши, как ошибка проявляется. А то куча кода, сообщения на немецком (которого я не знаю). В общем на разор уйдёт много времени, которого у меня, к сожалению, нету.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Сообщение "Спасибо" не информативно. Вместо этого лучше воспользуйтесь кнопкой "Reputation" в виде звёздочки, расположенной прямо под аватаром пользователя.
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)

  3. #3
    dummy
    coder
    Юлько is on a distinguished road
    Регистрация
    30.05.2010
    Адрес
    Берлин
    Сообщений
    10

    Re: expexted primary expression before "void"

    ошибка выдаётся в каждой строчке, которая начинается с void - то бишь 7 раз.
    смысл программы: небольшой тестик с математическими заданиями. его можно написать гораздо проще, но мне хотелось, чтобы если пользователь вместо ответа вводит не цифры, а чего-нибудь другое, выдавалось соответственное сообщение и вопрос повторялся. И это единственный способ, который я смогла придумать (ибо с++ начала изучать всего 2 недели назад )

  4. #4
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Сообщений
    1,801

    Re: expexted primary expression before "void"

    В общем здесь множество ошибок и я даже не знаю, как их исправить, так как не понимаю, как в все эти функции связаны друг с другом (незнание немецкого влияет на понимание коренным образом). Предлагаю для начала определиться какая функцию какую будет вызывать, а также избавится от вложенности функций.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Сообщение "Спасибо" не информативно. Вместо этого лучше воспользуйтесь кнопкой "Reputation" в виде звёздочки, расположенной прямо под аватаром пользователя.
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)

  5. #5
    developer Vasilisk is on a distinguished road
    Регистрация
    13.02.2004
    Сообщений
    111

    Re: expexted primary expression before "void"

    У вас, барышня, все функции вложены внутрь функции main(). А языг такого не допускает - он хочет, чтобы вложенных функций не было. Т.е. все функции нужно вынести и записать после main. Или - перед.

  6. #6
    system architect BBB is on a distinguished road
    Регистрация
    27.12.2005
    Сообщений
    1,170

    Re: expexted primary expression before "void"

    Цитата Сообщение от Vasilisk Посмотреть сообщение
    У вас, барышня, все функции вложены внутрь функции main(). А языг такого не допускает - он хочет, чтобы вложенных функций не было. Т.е. все функции нужно вынести и записать после main. Или - перед.
    Я полагаю, что НЕ ПОСЛЕ, а именно ПЕРЕД Т.к. если записать после, то при компиляции main эти ф-ии будут еще неизвестны для компилятора, и опять получим ошибку.

  7. #7
    dummy
    coder
    Юлько is on a distinguished road
    Регистрация
    30.05.2010
    Адрес
    Берлин
    Сообщений
    10

    Re: expexted primary expression before "void"

    Цитата Сообщение от BBB Посмотреть сообщение
    Я полагаю, что НЕ ПОСЛЕ, а именно ПЕРЕД Т.к. если записать после, то при компиляции main эти ф-ии будут еще неизвестны для компилятора, и опять получим ошибку.
    логично... а переменные тогда где обьявлять? покажииите мне пожаааааааалуйста один раз, как это должно выглядеть и я больше не буду задавать глупых вопросов))

  8. #8
    developer Vasilisk is on a distinguished road
    Регистрация
    13.02.2004
    Сообщений
    111

    Re: expexted primary expression before "void"

    Цитата Сообщение от Юлько Посмотреть сообщение
    логично... а переменные тогда где обьявлять? покажииите мне пожаааааааалуйста один раз, как это должно выглядеть и я больше не буду задавать глупых вопросов))
    Можно и "перед", а можно и "после" - сишник есть такой удивительный языг, в котором есть "описание функции" и "определение функции" и это - разные вещи. В той же ПХПе этого нет - там определение функции это её же и описание, что порождает иногда совершенно жуткий геморрой.

    В C/C++ же всё просто. Там, где компилер встречает выражение y=func(x) это "ссылка на функцию", т.е. к моменту получения этого выражения компилер уже должен знать "как функцию вызывать". При этом компилеру не нужно знать саму функцию - ему нужно только знать, как в неё подставлять параметры. Этого можно добиться поместив определение самой функции перед её вызовом. Но можно - поместив перед её вызовом только описание "прототипа функции", а само тело функции - поместить где будет удобно. Даже в другой единице компиляции, всё равно собирает-то всё вместе не компилер, а линкер...

    Поэтому в данном случае покатит так:
    Код cpp:
    int func(int);

    int main(){
    int x;
    ...
    y = func(x);
    ...
    }

    int func(int arg){
    ...
     return 1;
    }

    т.е. перед вызовом функций достаточно описать только заголовки тех функций, которые вызываются. Это - ни к чему не обязывает программиста и никакого объектного кода не порождает, это - просто информация программиста компилятору и только. В любом *.h файле собраны именно такие описания прототипов функций, можно туда заглянуть и всё увидеть.

    Переменные объявляются не так, как функции - у них нет "прототипов", объявление переменной это её же определение в том блоке, в котором она встретилась. Если переменная встречается вне какой-либо функции, то она считается "глобальной", т.е. доступной из любой функции без дополнительного объявления. При этом, если проект имеет более одного файла, то определить так переменную можно только в каком-то одном файле. Во всех прочих её нужно "объявлять" с атрибутом extern - собирает все файлы в один линкер и это объявление для линкера откуда ему брать что.
    Последний раз редактировалось Romeo; 17.06.2010 в 23:02. Причина: Используй [code=cpp][/code]

  9. #9
    developer Decoder is on a distinguished road Аватар для Decoder
    Регистрация
    20.02.2008
    Адрес
    Moscow
    Сообщений
    194

    Re: expexted primary expression before "void"

    Да уж... если в столице Германии так учат программированию, то что говорить про нашу страну. В Америку надо ехать, там хорошо учат.
    На С++ можно делать всё, но самое трудное - сделать как надо.

  10. #10
    dummy
    coder
    Юлько is on a distinguished road
    Регистрация
    30.05.2010
    Адрес
    Берлин
    Сообщений
    10

    Re: expexted primary expression before "void"

    Цитата Сообщение от Decoder Посмотреть сообщение
    Да уж... если в столице Германии так учат программированию, то что говорить про нашу страну. В Америку надо ехать, там хорошо учат.
    Ох, учат ещё интересней... Проф у нас тётка из Греции, по-немецки говорит с жутким акцентом, предложения не заканчивает, обьяснять ни фига не умеет... поэтому учу сама по книжкам, да и то всего 3 недели как(((
    Утешает только то, что это не основной предмет, я вообще-то на математика учусь))

+ Ответить в теме

Похожие темы

  1. Replies: 0
    Последнее сообщение: 06.02.2009, 17:14
  2. Replies: 1
    Последнее сообщение: 30.07.2008, 14:41
  3. Replies: 0
    Последнее сообщение: 22.06.2008, 14:04
  4. Перевод программки с "CPP" на "Delphi"
    By c6h11o6na in forum Delphi и Pascal
    Replies: 0
    Последнее сообщение: 21.11.2006, 12:37

Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения