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

Разработать прогу которая хранит инфу о школьниках и их оценках с помощью map - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу просмотра на экране длинных текстовых файлов http://www.cyberforum.ru/cpp-beginners/thread154857.html
Написать программу просмотра на экране длинных текстовых файлов. Имя просматриваемого файла должно передаваться в программу в качестве параметра, читаемого с клавиатуры.
C++ Про С++ Вот вопрос... В С++ довольно большой синтаксис. В одной СТЛ только сколько всего. Вопрос к опытным людям, вы это все запоминаете? Или же смотрите в справочник, когда нужно? Или же практикуетесь и поэтому все входит в голову на автомате? http://www.cyberforum.ru/cpp-beginners/thread154855.html
C++ Файл в переменную
Здравствуйте, подскажите, пожалуйста, как "перекинуть" файл в переменную? Допустим, я открываю файл: FILE * fp = fopen ( "/text.txt", "rt" ); Как дальше получать строки, если не известно, сколько будет символов в строке (а строк несколько)? Какой тип переменной использовать при приёме? Примеры очень даже приветствуются. Мой уровень знания C++: Новичёк.
C++ Не работает прога
#include <iostream> using namespace std; int main() {//Начало int x,y; cout<<"Vvedite chislo "; cin>>x; switch(x) { case 0: cout<<"zero"; break;
C++ Нужно откоректировать программу которая будет при вводе любого числа, выводить чётное оно или нет http://www.cyberforum.ru/cpp-beginners/thread154832.html
Здравствуйте, мне нужно откоректировать программу которая будет при вводе любого числа, выводить чётное оно или нет. Я попытался сделать её но оявилась загвоздка числа меньше 3 нормольно различает а, больше 3 нет Вот моя попытка: #include <iostream> using namespace std; void main() {
C++ Работа с файлами. Вопрос. Пытаюсь вывести результат работы программы из файла на экран, но str2 всегда после f.read(str2, 80); выводит первоочередное значение. Программа делает следующее: ввод 2356, вывод 3265. Так вот, str2 равен 2356 после вывода на экран. В связи с чем это связано и как разрешить эту ситуацию? int main(int argc, char* argv) { int i; char ch1, ch2, str, str2; cout<<"Enter the string: ";... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
21.07.2010, 07:06     Разработать прогу которая хранит инфу о школьниках и их оценках с помощью map
Используй вместо массива вектор, и будет тебе щастье

Добавлено через 9 минут
И да, у тебя такая ошибка:
У тебя значение - набор оценок, т.е. массив. Значит, при сопоставлении оценок с ключем с помощью оператора присваивания в строке 27 ты должен передавать весь массив, а не отдельный элемент.
Так и не понял, зачем ты создавал двумерный массив.

Добавлено через 24 минуты
Также не понял, зачем нужно было динамически выделять память.
Вот как можно сделать с векторами:
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
#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
 
int main()
{
    const size_t numberOfMarks = 5;
    std::map<std::string, std::vector<size_t> > jrn;
    size_t numberOfStudents;
    std::cout << "Enter the number of students: ";
    std::cin >> numberOfStudents;
    for(size_t i = 0; i < numberOfStudents; ++i, std::cout << std::endl)
    {
        std::string name;
        std::cout << "Enter the name of the student #" << i+1 << ": ";
        std::cin >> name;
        std::vector<size_t> marks;
        marks.reserve(numberOfMarks);
        for(size_t j = 0; j < numberOfMarks; ++j)
        {
            size_t mark;
            std::cout << "\tEnter the mark #" << j+1 << ": ";
            std::cin >> mark;
            marks.push_back(mark);
        }
        jrn[name] = marks;
    }
    std::cout << std::endl;
    for(std::map<std::string, std::vector<size_t> >::const_iterator it = jrn.begin();
        it != jrn.end();
        ++it)
    {
        std::cout << "\"" << it->first << "\" has following marks:\n\t";
        std::copy(it->second.begin(), it->second.end(), std::ostream_iterator<size_t>(std::cout, " "));
        std::cout << std::endl;
    }
    system("pause");
    return EXIT_SUCCESS;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru