Форум программистов, компьютерный форум CyberForum.ru

Вывести на экран фамилии и имена трех худших по среднему баллу учеников - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++ изменение регистра стринга http://www.cyberforum.ru/cpp-beginners/thread453410.html
Принимаем строку с клавиатуры. С пом. функции getline(). string clientName; getline(cin,clientName); Необходимо перевести всю строку в нижний регистр, независимо от того какие символы ввел пользователь. Подскажите, пожалуйста.
C++ Вывод динамической матрицы через указатели Вот код программы. # include <math.h> # include <conio.h> # include <iostream.h> # include <stdlib.h> # include <stdio.h> class ClMatr { int **M; int n,m; http://www.cyberforum.ru/cpp-beginners/thread453408.html
задача файлами C++
нужно сделать задачу так чтобы выбрал первый файл,выбрал второй файл и удалил повторы и то что выйдет, слияние первого и 2го файла в 3й файл!
C++ задача на Array
Дан массив A размера N. Вывести вначале его элементы с четными номерами (в порядке возрастания номеров), а затем — элементы с нечет-ными номерами (также в порядке возрастания номеров): помогите мне ее решить на языке с++ плииз(
C++ Торрент протокол http://www.cyberforum.ru/cpp-beginners/thread453391.html
Где можно посмотреть исходник торрента ? http://www.utorrent.com/intl/ru/help/faq На оф. сайте написано что исходники не доступны . Может кто даст ссылочку на исходник торрента на С++ ?
C++ задача на массив Дан массив A размера N. Вывести его элементы в следующем порядке: A1, A2, AN, AN–1, A3, A4, AN–2, AN–3, … . подробнее

Показать сообщение отдельно
cooky
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 9
26.02.2012, 22:00     Вывести на экран фамилии и имена трех худших по среднему баллу учеников
задача
На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит 100, каждая из следующих N строк имеет следующий формат:
<Фамилия> <Имя> <оценки>,
где <Фамилия> – строка, состоящая не более чем из 20 символов, <Имя> – строка, состоящая не более чем из 15 символов, <оценки> – через пробел три целых числа, соответствующие оценкам по пятибалльной системе. <Фамилия> и <Имя>, а также <Имя> и <оценки> разделены одним пробелом. Пример входной строки:
Иванов Петр 4 5 3
Требуется написать как можно более эффективную программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет выводить на экран фамилии и имена трех худших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трех худших, то следует вывести и их фамилии и имена.


А вот мое "решение":
Код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <string.h>
#include <math.h>
 
struct data
{
     int sum;
     char *user;
};
 
void packer (char *tmpD, data *pupin, int i)
{
    pupin[i].user = new char[37];
    pupin[i].user = strtok(tmpD," ");
    strcat(pupin[i].user, " ");
    strcat(pupin[i].user, strtok(NULL," "));
 
    pupin[i].sum=atoi(strtok(NULL," "))+atoi(strtok(NULL," "))+atoi(strtok(NULL," "));
 
}
 
int main()
{
    int N=4;
    int const S=43;
    data *pupin = new data [N];
    char *tmpData = new char[S] ;
 
    for (int i=0; i<N; i++)
    {
        std::cout<<"Введите данные участника:"<<std::endl;
        std::cin.getline(tmpData,S);
        packer ( tmpData, pupin, i);
    }
 
    data min1, min2, min3;
    min1.sum=min2.sum=min3.sum=15;
 
 
    for(int i=0; i<N; i++)
    {
        if(pupin[i].sum<=min1.sum)
        {
            data tmp=min1;
            min1=pupin[i];
            min3=min2;
            min2=tmp;
        }
        else if (pupin[i].sum<=min2.sum)
        {
            min3=min2;
            min2=pupin[i];
        }
        else if(pupin[i].sum <= min3.sum)
            min3=pupin[i];
    }
 
    std::cout<<"Ученики с наименьшими результатом:"<<std::endl
        <<min1.user<<std::endl
        <<min2.user<<std::endl
        <<min3.user<<std::endl;
    
    for(int i=0; i<N; i++)
        if(pupin[i].sum==min3.sum)
            std::cout<<pupin[i].user<<std::endl;
 
    int r;
    std::cin>>r;
        
}
Не могу разобраться, почему во время выполнения программы все время вылазят ошибки "доступа" и ghjxtt.. разъясните,пожалуйста,что здесь не так..п.с.компилировал на Visual Studio 2010
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru