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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Замена гласных http://www.cyberforum.ru/cpp-beginners/thread868043.html
Написать программу, которая заменяет все гласные буквы в строке на символ "_". Необходимо использовать английский алфавит.
C++ Циклические алгоритмы. Двумя способоми Необходимо написать программу двумя способами для циклического алгоритма. http://www.cyberforum.ru/cpp-beginners/thread868032.html
C++ Сортировка пузырьком
Правильно ли организую ввод размера массива через клавиатуру?Если неправильно-то как? #include <stdio.h>; #include <stdlib.h>; #include <conio.h>; int main () { int N,b,i,c,j; printf ("vvedite chislo elementov massiva="); scanf ("%d",&N); int mas ;
C++ Верно ли,что все элементы массива B входят в массив A?
Даны два одномерных массива A(n) и B(m).Верно ли,что все элементы массива B входят в массив A?
C++ Ввести класс для работы с объектом "рациональная дробь" http://www.cyberforum.ru/cpp-beginners/thread867999.html
Ввести класс для работы с объектом "рациональная дробь".Реализовать: а)сложение(вычитание) двух дробей; б)приведение дроби к несократимому виду.
C++ Последовательности чисел Дано вещественное число А. Найти в последовательности чисел i bi = Ʃ|k-4| k=1 Первое число больше А. подробнее

Показать сообщение отдельно
Unit_39
12 / 12 / 5
Регистрация: 16.05.2011
Сообщений: 109

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

17.05.2013, 11:39. Просмотров 308. Ответов 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
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru