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

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

Войти
Регистрация
Восстановить пароль
 
Slavytuch
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 79
#1

Считывание одномерного массива - C++

21.05.2014, 17:39. Просмотров 197. Ответов 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
#include "stdafx.h"
#include "stdio.h"
#include <clocale>
#include <iomanip>
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
 
class sotrydnik
{//класс содержит поля:
    //name - имя,surname - фамилия,number - рабочий номер
private:
    string surname;
    string name;
    int number;
public:
    string get_surname()
    {//получение фамилии сотрудника
        return surname;
    }
    string get_name()
    {//получение фамилии сотрудника
        return name;
    }
    int get_number()
    {//получение номера сотрудника
        return number;
    }
    void set_data(string newsurname, string newname, int newnumber)
    {
        surname = newsurname;
        name = newname;
        number = newnumber;
    }
    friend ifstream &operator >> (ifstream &inp, sotrydnik & one);
    friend ostream &operator << (ostream &out, sotrydnik one);
};
class members
{public:
    string name1;
    sotrydnik * comrade;
    int number_of_coverents;
    friend ifstream &operator >> (ifstream &inp, members &one);
    friend ostream &operator << (ostream &out, members one);
    int shortest_number()
    {
        int num = comrade[0].get_number();
        for (int i = 1; i < number_of_coverents;++i)
        if (comrade[i].get_number()<num)
            num = comrade[i].get_number();
        return num;
    }
    int* same_name()
    {
        int rez[5];
        int c = 0;
        for (int i = 0; i < number_of_coverents;++i)
        if (comrade[i].get_name() == name1)
        {
            rez[c++] = i;
        }
        c++;
        rez[c] = -1;
        for (int i = 0; i < c; ++i)
        {
            rez[i];
        }
        system("pause");
        return rez;
    }
 
};
 ifstream &operator >> (ifstream &inp, sotrydnik & one)
{
    string newsurname, newname;
    int newnumber;
    inp >> newsurname;
    inp >> newname;
    inp >> newnumber;
    one.set_data(newsurname, newname, newnumber);
    return inp;
}
 ostream &operator <<(ostream& out, sotrydnik one)
 {
     out << setw(10) << one.get_surname() << setw(10) << one.get_name() << setw(10) << one.get_number() << endl;
     return out;
 }
 
 ifstream &operator >> (ifstream &inp, members & one)
 {
     
     inp >> one.number_of_coverents;
     one.comrade = new sotrydnik[one.number_of_coverents];
     for (int i = 0; i < one.number_of_coverents; ++i)
     {
         inp>>one.comrade[i];
     }
     inp >> one.name1;
     return inp;
 }
 
 ostream &operator <<(ostream &out, members one)
 {
     for (int i = 0; i < one.number_of_coverents; ++i)
         out << one.comrade[i];
     return out;
 }
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
    members Men;
    cout << "Начальные данные сотрудников:" << endl;
    int num, c = 0;
    string name1;
    ifstream read("C:\\Logan\\InputFile.txt");
    read >> Men;
    ofstream outp("C:\\Logan\\OutputFile.txt");
    cout << setw(10) << "Фамилия" << setw(10) << "Имя" << setw(10) << "Номер" << endl << endl;
    cout << Men;
    read.close();
    cout << "Самый котороткий рабочий номер = ";
    cout << Men.shortest_number();
    cout << "Фамилии сотрудников с именем " << name1 << ":" << endl;
    int *rez = Men.same_name();
    for (int i = 0; rez[i]!= -1; ++i)
        cout << Men.comrade[rez[i]].get_surname();
       system("pause>>end");
     
   return 0;
}
При выводе на экран массива в ф-ции same_names ничего не пишет, а при дальнейшей работе программы выходит вообще за пределы. Дин. массивы не хотят создаваться - выделяется не более 1 ячейки. Чё не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 17:39     Считывание одномерного массива
Посмотрите здесь:

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

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

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

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