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

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

Восстановить пароль Регистрация
 
Slavytuch
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 74
21.05.2014, 17: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
#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++
Как вычесть из каждого элемента одномерного массива каждый элемент другого массива C++

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

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

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