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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Unit_39
12 / 12 / 5
Регистрация: 16.05.2011
Сообщений: 109
#1

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

17.05.2013, 11:39. Просмотров 323. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2013, 11:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подсчитать количество машин каждой марки (функция) (C++):

Посчитать количество машин каждой марки в заданном файле, содержащем данные о машинах - C++
Вот часть функции нахождения количества, подскажите почему возникают данные ошибки void posh_2(struct tz *p) { ...

Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки машин ”: марка - C++
Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки...

Создать класс “Автомагазин”, состоящей из класса ”Марки машин” - C++
Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки...

Для каждой из матриц подсчитать количество четных элементов в каждой строке - C++
даны 2 матрицы разн.размерности. Для каждой из них подсчитать кол-во четных эл-тов в каждой строке. Использовать процедуры и ф-ции.

Подсчитать число появлений в файле каждой строчной русской буквы и вывести в файл количество повторений каждой - C++
Дан текстовый файл. Подсчитать число появлений в нем каждой строчной (то есть маленькой) русской буквы и создать строковый файл, элементы...

Подсчитать количество всех строк, а потом - количество слов в каждой строке - C++
Программа считает количество строк в файле add.txt выводит на экран и записывает в новый указанный пользователем файл. #include...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2013, 11:39
Привет! Вот еще темы с ответами:

Подсчитать количество чисел в каждой строке файла - C++
мне нужно на СИ: Дан текстовый файл, состоящий из одной или нескольких строк. Каждая тсрока файла содержит числа, разделенные пробелами....

Подсчитать количество слов в каждой строке текста - C++
Здравствуйте. Помогите, пожалуйста, с заданием. Для задачки взять любой текст 5-10 строк по 30-40 символов. 1. Считать исходный...

Подсчитать количество отрицательных элементов матрицы в каждой строке - C++
Прошу помощи. (Си) 1) Дана квадратная матрица размерностью N. Подсчитать количество отрицательных элементов по строкам. 2)...

Для каждой строки подсчитать количество положительных элементов - C++
для каждой строки подсчитать количество положительных элементов и записать данные в новый массив


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

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

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