Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу массив указателей на функцию
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
mimoza23 mimoza23 вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.12.2013
По умолчанию массив указателей на функцию - 10.12.2013, 09:59

Помогите пожалуйста с программой. Очень срочно нужно. Осталась одна задача по курсовой, уже сдавать, не знаю как((((((((((((

Напишите программу на C++(консоль), чтобы она управлялась при помощи меню. Программа должна предлагать пользователю выбор из нескольких команд примерно таким образом:
Выберите:
0 Вывести массив оценок
1 Найти минимальную оценку
2 Найти максимальную оценку
3 Вывести среднюю оценку для каждого студента
4 Выйти из программы

Существует одно ограничение на использование массивов указателей на функции, которое состоит в том, что все указатели должны иметь одинаковый тип. Указатели должны ссылаться на функции, возвращающие значение одного и того же типа и имеющие однотипные параметры. Функции должны возвращать результат одного типа и иметь одинаковый набор параметров. Модифицированные функции minimum и maximum должны выводить минимальную и максимальную оценки и ничего не возвращать. Функция average для команды меню 3 должна выводить средний балл для каждого студента (а не для одного). Функция average не должна ничего возвращать и должна иметь список параметров, одинаковый с функциями printArray, minimum и maximum. Сохраните указатели на четыре функции в массиве processGrades и используйте выбор, сделанный пользователем, в качестве индекса массива указателей для вызова нужной функции.

Последний раз редактировалось mimoza23; 10.12.2013 в 10:03
Ответить с цитированием
  (#2 (permalink)) Старый
mimoza23 mimoza23 вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.12.2013
По умолчанию 11.12.2013, 14:40

Код программы к заданию:
cpp Код:
#include<stdio.h>
#include<iostream>
#define GRADES 5
#define STUDENTS 3
 
using namespace std;
 
int min ( const int grades[][GRADES], int pupils, int tests);
int max ( const int grades[][GRADES], int pupils, int tests);
double average ( const int setOfGrades[], int tests);
void printArray ( const int grades[][GRADES], int pupils, int tests);
int quit (int)
 
 
 
void main()
{
    void(*F[5])(int)={printArray, min, max, average, quit}; // объявление массива
    //указателей *F[5] на функции и инициализация его именами функций
 
int choice;
 
cout << "0  Elements of array is " << endl;
cout << "1  Minimum " << endl;
cout << "2  Maximum " << endl;
cout << "3  Averages grades " << endl;
cout << "4  Quit " << endl;
cin >> choice;
 
while( choice >= 0 && choice < 5)
{
    (*F[choice])(choice); // вызов функции при помощи разыменования
 // указателя на функцию. Указатель на функцию выбирается по индексу choice
 // вызванной функции в качестве аргумента передается переменная choice
 
    cout << "0  Elements of array is " << endl;
    cout << "1  Minimum " << endl;
    cout << "2  Maximum " << endl;
    cout << "3  Averages grades " << endl;
    cout << "4  Quit " << endl;
    cin >> choice;
}
 
cout << "Output value 5" << endl;
 
 
}
 
 
void printArray(int printArray)
{
    int n[3] = {45, 87, 93};
    int i;
 
    cout << "Element" << "\t  Value" << endl;
 
    //Вывод содержимого массива
    cout.setf (ios::right);
 
    for (i = 0; i < 3; i++) {
        cout.width (4);
        cout << i;
        cout.width (10);
        cout << n[i] << endl; }
       
}
 
 
 //определить-вывести наибольшую и наименьшею оценку
    cout << "\n\nminimum grade: ";
    cout << min ( studentGrades, STUDENTS, GRADES ) << endl;
    cout << "maximum grade: ";
    cout << max ( studentGrades, STUDENTS, GRADES ) << endl;
 
 
 // вычисление минимальной оценки
int min (const int grades[][GRADES], int pupils, int tests)
{
    int i; //счетчик студентов
    int j; //счетчик экзаменов
    int lowGrade = 100; //инициализировать максимумом
 
    for ( i =0; i < pupils; i++ ) { //цикл по строкам оценок
        for ( j = 0; j < tests; j++ ) { //цикл по столбцам оценок
 
            if ( grades [i][j] < lowGrade) {
                lowGrade = grades [i][j]; }
        }
    }
    return lowGrade;
}
 
// вычисление маесимальной оценки
void max(int max)
{
    int i; //счетчик студентов
    int j; //счетчик экзаменов
    int highGrade = 0; //инициализировать минимумом
 
    for ( i =0; i < pupils; i++ ) { //цикл по строкам оценок
        for ( j = 0; j < tests; j++ ) { //цикл по столбцам оценок
 
            if ( grades [i][j] > highGrade) {
                highGrade = grades [i][j]; }
        }
    }
    return highGrade;
}
 
 
//вычислить-вывести среднюю оценку для каждого студента
 
    for ( student = 0; student < STUDENTS; student++ ) {
        cout << "The average grade for student ";
        cout << student << "is ";
        cout << average ( studentGrades [student], GRADES) << endl;
    }
 
 
//Определение средней оценки студента
double average ( const int setOfGrades[], int tests)
{
    int i; //счетчик оценок
    int total = 0; //сумма оценок
 
    for ( i = 0; i < tests; i++ ) { //суммирование оценок студента
        total += setOfGrades[i]; }
    return (double) total / tests;
}
 
// выход из программы
void quit(int quit)
{
return 0;  
}
Выдает ошибку в строке
cpp Код:
void main()
syntax error : missing ';' before identifier 'main'. Скажите пожалуйста, как ее исправить, чтоб работало? И как дописать последнюю функцию quit, чтобы осуществлялся выход из программы?
Ответить с цитированием
  (#3 (permalink)) Старый
Egorro Egorro вне форума
Специалист
 
Аватар для Egorro
 
Сообщений: 13,078
Сказал(а) спасибо: 402
Поблагодарили 2,129 раз(а) в 2,056 сообщениях
Регистрация: 06.01.2011
Адрес: Чубаксары
По умолчанию 11.12.2013, 14:55

Цитата:
int quit (int)
Знака ";" нет после определения, отсюда и ошибка
Ответить с цитированием
  (#4 (permalink)) Старый
mimoza23 mimoza23 вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.12.2013
По умолчанию 11.12.2013, 16:10

Нашла, поставила ; но все равно ошибки. Их стало ещё больше. Аж 40
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема! Массив строчных указателей. HungryInsect С/С++ 2 16.01.2012 16:04
Как получить массив указателей на компоненты расположенные на TPanel caxaromires C++ Builder 8 09.04.2010 15:48
Массив указателей во Free Pascal Fatality73 Pascal 2 15.09.2009 17:15
Преобразование указателей на функцию Zefick Visual C++ 1 09.07.2008 11:07
Массив указателей на функции &lt;&lt;LexuS&gt;&gt; С/С++ 6 15.12.2006 14:44
Как создать функцию, которая возвращает массив imported_nemesis С/С++ 5 13.03.2006 13:56
Массивы указателей как их решить Georgiy С/С++ 4 07.11.2005 08:04
Массив указателей и освобождение памяти Stan C++ Builder 27 07.02.2005 12:51
Как передать в функцию адрес массива указателей на char лисс Вопросы начинающих программистов 2 20.12.2004 21:29
Как сделать передачу массива указателей в основную функцию tumanovalex С/С++ 2 11.09.2004 14:52
Как добавлять в массив функцию VolanD С/С++ 1 27.04.2004 17:02
Как можно динамически объявить массив указателей Garrik С/С++ 3 20.04.2004 19:20



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов