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

Считывание из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Графы http://www.cyberforum.ru/cpp-beginners/thread1055093.html
Здравствуйте! Помогите решить задачу на графы, у меня не получается правильно записать элементы в массив. Моя идея такая: граф — одномерный массив, элементами которого являются двусвязные списки. Условие: Дан граф из N вершин (без петель и кратных рёбер), заданный списком смежности. Необходимо найти все вершины с нечетной степенью. Формат входных данных В первой строке входного файла...
C++ вывести на экран позицию первого отрицательного числа дан массив х 3 -2 6 у 4 6 -6 Помогите пожалуйста вывести на экран позицию первого отрицательного числа Добавлено через 47 минут помогите пожалуйста, срочно надо http://www.cyberforum.ru/cpp-beginners/thread1055090.html
отладка программы C++
берегите свои глаза, ибо дальше будет лепет блондинки, надеюсь что вы меня поймете и поможете. добрый вечер! программа Microsoft Visual Studio 2008 я хочу провести отладку программы, нажимаю F10, появляется желтая стрелка. но мне нужно чтобы внизу появилось такое окошечко, где видно как меняются переменные на данном этапе программы. у меня вообще внизу никакого окошечка нет. а в универе такое...
ребята не могли бы вы спасти девушку от не зачета по программированием C++
Мне нужно окошко в котором нажимая на кнопку можно было выбрать файл(базу данных) и это бы вывелось в этом окне(каким нибудь списком)! помогите пожалуйста, а то я вообще не понимаю програмирование
C++ Ошибка: Необъявленные идентификаторы http://www.cyberforum.ru/cpp-beginners/thread1055084.html
ошибку выдает: q1,q2 не объявленные идентификаторы? но они же объявлены) думаю, наверное, надо вначале как-нибудь объявить. но как, если конечный автомат может быть и числом, буквой, символом? //рекурсия #include <iostream> #include <stdio.h> #include <stdlib.h> #include <math.h> #include <locale.h> #include <Windows.h> using namespace std;
C++ Сказали сделать такое Ребят, если что - простите, может не туда тему написал, скажите куда писать. Вообщем мне нужна абсолютно безразницы чем создана программа, вообщем. Просто вообще полный 0 в этом, надеюсь на вашу помощь, может поэтому и не туда написал тему Школьная программа, типо тестов. То-есть если вопрос и несколько правильных ответов, нужно выбрать какой из них правельный, и в конце сколько правильных... подробнее

Показать сообщение отдельно
lazarangelov
0 / 0 / 0
Регистрация: 20.12.2013
Сообщений: 6
24.12.2013, 19:26  [ТС]     Считывание из файла
Цитата Сообщение от alsav22 Посмотреть сообщение
Меется ввиду vector <pair> ?
Использовать оператор извлечения: >>. Первую строку - в int. Следующие строки: первое число в int, слово в string. Создать, из числа и строки, pair (make_pair()), поместить pair в vector.
посмотрите, что в коде неправильно, вроде так и делаю, а когда пытаюсь вывести переменную на экран - в ней мусор всякий...
вот в main в начале пытаюсь прочитать файл и загнать первую строку в переменную number, последующие строки в вектор Channel

main.cpp
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "stdafx.h"
#include "classes.h"
#include <iostream>
#include "conio.h"
#include <fstream>
#include <windows.h>
 
using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian");
    ifstream ifstr("Channels.txt", ios::in); //файл, в котором хранится информация о каналах
    vector <Channel> channels; //здесь будут храниться каналы
    int number;
    ifstr >> number; //считываем число каналов (первая строка в файле)
    int channelNumber; //переменная для хранения номера канала
    string channelName; //для хранения названия канала
 
    for (int i = 0; i < number; i++) {
        ifstr >> channelNumber >> channelName;
        channels.push_back(Channel(channelNumber, channelName)); //заполняем вектор каналов
    }
 
    fstream file("Current.txt", ios::in); //открываем файл для чтения
    int vol, current;
    file >> current >> vol; //считываем текущие канал и громкость
 
    TV tv(false, current - 1, vol, channels); //создаем телевизор с заданными параметрами
 
    cout << "Управление:" << endl;
    cout << "w - вкл/выкл" << endl << "стрелки вправо/влево - переключение каналов" << endl;
    cout << "стрелки вверх/вниз - переключение звука" << endl << "с - задать канал вручную" << endl;
    int key; // код клавиши
 
    while (true) {
        try {
            if (_kbhit()) { //если была нажата клавиша
                key = _getch(); //получаем ее код
 
                if (key == 119 || key == 230)  //если нажата w
                    tv.Turn(!tv.isOn()); //включаем телевизор
                else {//если это любая клавиша кроме w, то проверяем включен ли телевизор, если да, то переходим дальше
                    if (!tv.isOn()) {
                        continue; //с помощью этого оператора переходим к следующей итерации цикла
                    }
                }
                if (key == 225 || key == 99) { // если с
                    int canal;
                    cout << "Введите канал: " << endl;
                    cin >> canal; // считываем номер канала, введенного пользователем
                    if (canal <= number) {
                        tv.switchChannel(canal - 1); //и переключаем на этот канал
                    }
                    else {
                        throw Channel::InvalidChannel(canal);
                    }
                    if (_kbhit()) { //коды стрелок состоят из двух цифр, различают по второй стрелке
                        int key2 = _getch(); //получаем код стрелки
 
                        switch (key2) {
                        case 72: //увеличиваем звук
                            tv.switchVolume(true);
                            cout << "звук увеличен" << endl;
                            break;
                        case 75: //предыдущий канал
                            tv.switchChannel(false);
                            cout << "переключили на предыдущий канал" << endl;
                            break;
                        case 80: //уменьшаем звук
                            tv.switchVolume(false);
                            cout << "звук уменьшен" << endl;
                            break;
                        case 77: //следующий канал
                            tv.switchChannel(true);
                            cout << "переключили на следующий канал" << endl;
                            break;
                        }
                    }
                }
            }
            
        }
        catch (Channel::InvalidChannel) {
            cout << "Такого канала нет" << endl;
        };
    }
}
classes.h
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "stdafx.h"
#include <string>
#include <conio.h>
#include <iostream>
#include <vector>
 
using namespace std;
 
class Channel { // класс канал
 
    int num; // номер канала
    string name; // название канала
 
 
public:
    class InvalidChannel {
    public:
        int chislo;
        InvalidChannel(int canal) {
            chislo = canal;
        }
 
    };
 
    Channel(int n, string nm) { // конструктор с 2 параметрами
 
        num = n;
        name = nm;
 
    }
 
    int getNum() { // функция возвращает номер канала
        return num;
    }
 
    string getName() {// функция возвращает имя канала
        return name;
    }
 
};
 
class TV {// класс телевизор
    bool on;
    char currentChannel;
    int volume;
    vector<Channel> channels;
 
public:
    TV(bool o, char cc, int v, vector<Channel> c) {// конструкторы
        on = o;
        currentChannel = cc;
        volume = v;
        channels = c;
 
    }
 
    void  Turn(bool o) { //функция вкл/выкл
        on = o;
    }
 
    bool isOn() { // возвращает значение включен телевизор или нет
        return on;
    }
 
    void switchChannel(bool up) {// функция переключения каналов
        if (isOn()) Turn(true);
        if (up) { // если нажата клавиша вверх
            if (currentChannel < channels.size() - 1) // если канал не последний
                currentChannel++; // то переходим на следующий канал
            else
                currentChannel = 0; // иначе возвращаемся на следующий канал
        }
        else { // нажали вниз
            if (currentChannel > 0)
                currentChannel--;
            else
                currentChannel = channels.size() - 1;
        }
    }
 
    void switchChannel(int c) { //функция переключения вручную
        if (c >= 0 && c < channels.size()) // если нажатая клавиша попадает в диапазон
            //от 0 до размера массива каналов, то переключает
            // если иначе, то не произойдет ничего
            currentChannel = c;
    }
 
    void switchVolume(bool up) { //функция изменения громкости
        if (isOn()) {
            if (up) {
                if (volume < 100)
                    volume++;
            }
            else {
                if (volume > 0)
                    volume--;
            }
        }
    }
    Channel getcurrentChannel() { //получаем текущий канал
        return channels[currentChannel];
    }
    int getVolume() { //получаем текущую громкость
        return volume;
    }
};
 
Текущее время: 16:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru