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

Подсчитать количество машин каждой марки (функция) - C++

Восстановить пароль Регистрация
 
Unit_39
 Аватар для Unit_39
12 / 12 / 5
Регистрация: 16.05.2011
Сообщений: 109
17.05.2013, 11:39     Подсчитать количество машин каждой марки (функция) #1
Здравствуйте! Вообщем нужно написать функцию подсчета количества машин каждой марки, которые находяться в файле.
Посмотрите пожалуйста, что я могу упускать или вовсе делать не правильно, т.к. каждый раз при выполнении этой функции выводить какой то мусор.
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
#include <string>
#include <stdio.h>
#include <fstream>
 
#define max_size 100
 
using namespace std;
 
struct Car
{
    unsigned int  number;        // номер
    char          model[50];     // марка
    char          surname[50];   // фамилия
    char          vecIns[50];    // тех. осмотр
};
 
void Count(const char *name_file)
{
    string modelArray[max_size]; 
    int countArray[max_size];    
    int i, j, k, d;
    Car _infoCar[max_size];
    
    i = 0;
    k = 0;
    
    ifstream open_file(name_file);
    
    while ( !open_file.eof() )
    {
        open_file >> _infoCar[i].number;
        open_file >> _infoCar[i].model;
        open_file >> _infoCar[i].surname;
        open_file >> _infoCar[i].vecIns;
   
        for (j = 0; j < i; j++)
            if ( modelArray[j] == _infoCar[i].model )
                 k++;
        
            if ( k == 0 )
            {
                i++;
                modelArray[i] = _infoCar[i].model;
            } 
    }
    
    d = i;
    
    while ( !open_file.eof() )
    {
        open_file >> _infoCar[i].number;
        open_file >> _infoCar[i].model;
        open_file >> _infoCar[i].surname;
        open_file >> _infoCar[i].vecIns;
        
        for (i = 0; i < d; i++)
            if ( modelArray[i] == _infoCar[i].model )
                 countArray[i]++;
    }
    
    cout << "Количество автомобилей каждой марки: ";
            for (i = 0; i < d; i++)
                cout << modelArray[i] << " - " << countArray[i] << endl;
}
 
int main()
{
    Car infoCar[max_size];
   
    int size;
    int i;
    int count = 0;
    string carFind; 
    
    ofstream out_file("BaseCar.dat"); // создаем файл для записи данных о машинах
 
    if (out_file == NULL)
        return 0;
    
    cout << "Введите количество машин: ";
    cin >> size;
    
    cout << endl;
    
    for (i = 0; i < size; i++)
    {
       cout << "Введите номер автомобиля: ";
       cin >> infoCar[i].number;
       out_file << infoCar[i].number << endl;
       
       cout << "Введите марку автомобиля: ";
       cin >> infoCar[i].model;
       out_file << infoCar[i].model << endl;
       
       cout << "Введите фамилию: ";
       cin >> infoCar[i].surname;
       out_file << infoCar[i].surname << endl;
       
       cout << "Тех. осмотр[Yes/No]: ";
       cin >> infoCar[i].vecIns;
       out_file << infoCar[i].vecIns << endl;
       
       cout << endl;
    }
 
    cout << "Введите название машины, которую нужно найти: ";
    cin >> carFind;
    
    cout << endl;
    
    ifstream in_file("BaseCar.dat");
     
    while ( !in_file.eof() )
    {  
        in_file >> infoCar[i].number;
        in_file >> infoCar[i].model;
        in_file >> infoCar[i].surname;
        in_file >> infoCar[i].vecIns;
        
        
        if ( !in_file.good() ) // возвращает истину, если не найдено ошибок
            break;
        
        if ( carFind.find(infoCar[i].model) != string::npos )
        {
            cout << "Марка: "    << infoCar[i].model << endl 
                 << "Номер: "    << infoCar[i].number << endl 
                 << "Владелец: " << infoCar[i].surname << endl;
            cout << endl;
            
            count++;
        }
        
        i++; 
    }
     
    Count("BaseCar.dat");
    
    out_file.close();
    in_file.close();
    
    if ( count > 0 )
         cout << "Количество найденных машин: " << count;
    else
         cout << "Машин не найдено!" << endl;
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2013, 11:39     Подсчитать количество машин каждой марки (функция)
Посмотрите здесь:

Подсчитать количество отрицательных элементов матрицы в каждой строке C++
для каждой строки подсчитать количество положительных элементов C++
C++ Строка: Подсчитать и вывести на печать количество вводов каждой буквы.
C++ Матрица (Подсчитать количество положительных элементов в каждой строке)
C++ Создать класс “Автомагазин”, состоящей из класса ”Марки машин”
C++ Подсчитать количество всех строк, а потом - количество слов в каждой строке
Для каждой строки подсчитать количество элементов, больших заданного числа C++
C++ Функция-шаблон. Подсчитать количество элементов, не попадающих в заданный интервал

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 17:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru