Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 10
1

Найти победителя, работа с файлом C++

27.06.2016, 19:38. Показов 534. Ответов 5
Метки нет (Все метки)

Подскажите, как сделать так, что-бы можно было выявить победителя общего, то есть по очкам какая команда (только одна у которой больше всего очков за весь сезон игр) победила.
Текст и числа из файла c++
это предыдущая тема с этой задачей, одну проблему я решила а вот следующую даже представить не могу как, ведь из файла берутся названия команд в виде текста. Как мне такой глупой это осуществить(((

В файле записаны результаты таким образом:

Зенит Манчестер 1 3
Реал ЦСКА 5 2

и т.д.

И спасибо большое пользователю nstwf за помощь!)
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
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
 
    ifstream in("tabl.txt");
 
    if (in.is_open())
    {
 
        int count = 0;
        string temp;
 
        while (!in.eof())
        {
            in >> temp;
            count++;
        }
        in.seekg(0, ios::beg);
        in.clear();
 
        int count_space = 0;
        char symbol;
        while (!in.eof())
        {
            in.get(symbol);
            if (symbol == ' ') count_space++;
            if (symbol == '\n') break;
        }
 
        in.seekg(0, ios::beg);
        in.clear();
 
        int n = count / (count_space + 1);
        int m = count_space + 1;
        string **x = new string*[n];
        for (int i = 0; i<n; i++) 
            x[i] = new string[m];
 
        //Считаем матрицу из файла
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                in >> x[i][j];
 
        //Выведем матрицу
 
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
                cout << x[i][j] << " ";
            cout << "\t";
 
            if (x[i][2] == x[i][3])
                cout << " | " <<" Ничья" <<  "\n";
            if (x[i][2]>x[i][3])
                cout <<  " | " <<" Победила 1 команда " << "\n";
            if (x[i][2]<x[i][3])
                cout << " | " <<" Победила 2 команда " << "\n";
      
        }
 
        for (int i = 0; i<n; i++) delete[] x[i];
        delete[] x;
 
 
 
        in.close();
    }
    else
    {
 
        cout << "Файл не найден.";
    }
 
    system("pause");
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2016, 19:38
Ответы с готовыми решениями:

Работа с файлом, найти, изменить.
Добрый день. Задание по файлам, любая помощь приветствуется (справка, написание куска кода)...

Работа с bmp файлом не получается найти ошибку
Добрый день, знаю что существуют разные способы считывания bmp файла, мне нужно считать таким...

Найти слова, встречающиеся в каждом предложении текста. Работа с файлом опять)
Дан файл, содержащий текст на русском языке. Найти слова, встречающиеся в каждом предложении текста...

Работа с файлами. Вывести победителя с ФИО с максимальным баллом... (исправить)
Помогите пож исправить код, он должен выводить победителя с ФИО с максимальным баллом,потом у кого...

5
91 / 80 / 57
Регистрация: 19.02.2016
Сообщений: 336
27.06.2016, 20:32 2
А в чем собственно проблема то?
Цитата Сообщение от Карина7 Посмотреть сообщение
ведь из файла берутся названия команд в виде текста.
У вас программа не считывала из файла и циклилась в самом начале.
Я исправил и все работает как надо, или нет?

Добавлено через 2 минуты
И да, в предыдущей программе забыл индексы поменять, и программа сравнивала названия команд:
C++
1
2
3
4
5
6
if (x[i][0] == x[i][1])
                cout << "Ничья              |" << "\n";
            if (x[i][0]>x[i][1])
                cout << "Победила 1 команда |" << "\n";
            if (x[i][0]<x[i][1])
                cout << "Победила 2 команда |" << "\n";
Добавлено через 2 минуты
Кстати предлагаю сделать по-другому условие ваше.
C++
1
2
3
4
5
6
            if (x[i][2]>x[i][3])
                cout << "Победила 1 команда |" << "\n";
            else if (x[i][2]<x[i][3])
                cout << "Победила 2 команда |" << "\n";
            else
                cout  << " Ничья" << "\n";
0
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 10
28.06.2016, 00:03  [ТС] 3
Нет, Вы все правильно сделали, мне сейчас нужно найти еще + к этому общего победителя.
Например:
ЦСКА Спартак 4 3
ЦСКА Локомотив 3 5
ЦСКА Зенит 2 3
Спартак Локомотив 5 2
Спартак Зенит 3 3
Локомотив Зенит 3 4

Каждая из 4 команд сыграла по 3 игры, и получается у каждой команды за все 3 игры суммируются очки:
ЦСКА 4+3+2=9
Спартак 3+5+3=11
Зенит 3+3+4=10
Локомотив 5+2+3=10

В общей сумме за все игры у Спартака больше очков, вот мне как то надо и выделить это, что по очкам победил Спартак)
0
91 / 80 / 57
Регистрация: 19.02.2016
Сообщений: 336
28.06.2016, 01:05 4
Цитата Сообщение от Карина7 Посмотреть сообщение
Каждая из 4 команд сыграла по 3 игры, и получается у каждой команды за все 3 игры суммируются очки:
ЦСКА 4+3+2=9
Спартак 3+5+3=11
Зенит 3+3+4=10
Локомотив 5+2+3=10
Так у вас голы считаются(насколько я понял)
0
91 / 80 / 57
Регистрация: 19.02.2016
Сообщений: 336
28.06.2016, 01:49 5
Цитата Сообщение от Карина7 Посмотреть сообщение
Подскажите, как сделать так, что-бы можно было выявить победителя общего, то есть по очкам какая команда (только одна у которой больше всего очков за весь сезон игр) победила.
Текст и числа из файла c++
это предыдущая тема с этой задачей, одну проблему я решила а вот следующую даже представить не могу как, ведь из файла берутся названия команд в виде текста. Как мне такой глупой это осуществить(((
Как вариант могу предложить решение в лоб, больше ничего в голову не приходит:
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
 
    ifstream in("tabl.txt");
 
    if (in.is_open())
    {
 
        int count = 0;
        string temp;
 
        while (!in.eof())
        {
            in >> temp;
            count++;
        }
        in.seekg(0, ios::beg);
        in.clear();
 
        int count_space = 0;
        char symbol;
        while (!in.eof())
        {
            in.get(symbol);
            if (symbol == ' ') count_space++;
            if (symbol == '\n') break;
        }
 
        in.seekg(0, ios::beg);
        in.clear();
 
        int n = count / (count_space + 1);
        int m = count_space + 1;
        string **x = new string*[n];
        for (int i = 0; i < n; i++)
            x[i] = new string[m];
 
        //Считаем матрицу из файла
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                in >> x[i][j];
 
        int cska = 0,
            spartak = 0,
            loko = 0,
            zenit = 0;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (x[i][0] == "ЦСКА")
                    cska += atoi(x[i][2].c_str());
                else if (x[i][1] == "ЦСКА")
                    cska += atoi(x[i][3].c_str());
 
                if (x[i][0] == "Спартак")
                    spartak += atoi(x[i][2].c_str());
                else if (x[i][1] == "Спартак")
                    spartak += atoi(x[i][3].c_str());
 
                if (x[i][0] == "Локомотив")
                    loko += atoi(x[i][2].c_str());
                else if (x[i][1] == "Локомотив")
                    loko += atoi(x[i][3].c_str());
 
                if (x[i][0] == "Локомотив")
                    zenit += atoi(x[i][2].c_str());
                else if (x[i][1] == "Локомотив")
                    zenit += atoi(x[i][3].c_str());
            }
        }
        zenit /= 6;
        loko /= 6;
        spartak /= 6;
        cska /= 6;
        //Выведем матрицу
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
                cout << x[i][j] << " ";
            cout << "\t";
 
            if (x[i][2] > x[i][3])
                cout << "\t| Победила 1 команда |" << "\n";
            else if (x[i][2] < x[i][3])
                cout << "\t| Победила 2 команда |" << "\n";
            else
                cout << "\t| Ничья" << "\n";
        }
        cout << endl << "ЦСКА - " << cska << endl;
        cout << "Зенит - " << zenit << endl;
        cout << "Спартак - " << spartak << endl;
        cout << "Локомотив - " << loko << endl;
        cout << endl;
        if (loko > zenit&&loko > spartak&&loko > cska)
            cout << "Победил Локомотив, набрав " << loko << " очков." << endl;
        else if (spartak > zenit&&spartak > loko&&spartak > cska)
            cout << "Победил Спартак, набрав " << spartak << " очков." << endl;
        else if (zenit > spartak&&zenit > cska&&zenit > loko)
            cout << "Победил Зенит, набрав " << zenit << " очков." << endl;
        else if (cska > spartak&&cska > zenit&&cska > loko)
            cout << "Победил ЦСКА, набрав " << cska << " очков." << endl;
        else
            cout << "В этом сезоне победителей нет!" << endl;
        for (int i = 0; i < n; i++) delete[] x[i];
        delete[] x;
 
 
 
        in.close();
    }
    else
    {
        cout << "Файл не найден.";
    }
 
    system("pause");
    return 0;
}
Содержимое файла tabl.txt
ЦСКА Спартак 4 3
ЦСКА Локомотив 3 5
ЦСКА Зенит 2 3
Спартак Локомотив 5 2
Спартак Зенит 3 3
Локомотив Зенит 3 4
0
Миниатюры
Найти победителя, работа с файлом C++  
91 / 80 / 57
Регистрация: 19.02.2016
Сообщений: 336
29.06.2016, 05:17 6
Для большего кол-ва игр:
C++
1
2
3
4
        zenit /= n;
        loko /= n;
        spartak /= n;
        cska /= n;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2016, 05:17

Результаты бросков спортсменов в матрице. Найти победителя
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Побеждает спортсмен, у...

Ассоциативные контейнеры. Даны результаты финального забега (фамилия-результат). Найти фамилию победителя.
Помогите написать программу с использованием ассоциативных контейнеров. Даны результаты финального...

Работа с файлом
Пожалуйста, помогите решить задачку.. Написать на чистом C (без использования C++) консольную...

работа с файлом
Как найти определённое слово в массиве? такого вида 217.118.79.33 dan HTTP GET...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.