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

ЛИНЕЙНЫЕ СПИСКИ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не работает обращение к структуре http://www.cyberforum.ru/cpp-beginners/thread1010426.html
#include <iostream> #include <string> using namespace std; struct VA { string Name; string Adres; string Car;
C++ Задача про файлы и "вагоны" битов Надо срочно решить другану задачу, а я в C++ вообще мёртвый. Будьте добры, помогите! В общем, такая задача: На вход подается файл, в котором "паровозиком" друг за другом идут биты информации, в виде: объем(количество байт одного "вагончика"), для объема отводится 2 ячейки, дальше столько бит, сколько указано в объёме, дальше еще такой же вагончик(2 ячейки под объем и после него биты), таких... http://www.cyberforum.ru/cpp-beginners/thread1010419.html
C++ утечка памяти
доброго времени суток Уважаемые форумчане, помогите пожалуйста разобраться с утечками памяти есть массив с геометрическими фигурами. IGeometryObject* objects; do { type = GetEnteredObjectType(); switch (type) { case 1:
C++ найти сумму наименьших значений столбцов массива С++
Здравствуйте. Помогите пожалуйста решить задание "найти сумму наименьших значений столбцов массива"
C++ разобраться с очередью http://www.cyberforum.ru/cpp-beginners/thread1010386.html
не работает operator+ и оператор-- // ConsoleApplication85.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <cstdio> #include <iostream> #include <conio.h> #include <locale>
C++ Наследование и связный список Пытаюсь сделать связный список, используя наследование при этом. Есть класс Person - имя, и указатель на следующий элемент, операция копирования(чтобы не юзабельна была) и функция добавления в список - все под private, дабы не использовалось во вред. Под public - статическая переменная под голову списка(list_begin), конструктор, вирт деструктор, виртуальная функция и вспомогательные. Далее 3... подробнее

Показать сообщение отдельно
Анатолий_95
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 10
17.11.2013, 21:42     ЛИНЕЙНЫЕ СПИСКИ
Подскажите почему не корректно работает программа.
Написал программу создания очереди ( данные о сотрудниках).
При входе в функцию ввода значений элемента, вводятся вручную только числовые значения, а через ввод строк
программа перескакивает. В чем дело? Подскажите. Среда ВС 3.1. СРОЧНО НАДО, СКОРО СЕССИЯ!!!!!!!
Проблемная функция строки 132-154.

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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<iomanip.h>
#include<conio.h>
 
//--------------------constants--------------------------------//
 
const int len_f=40;
const int len_g=8;
const int len_m=6;
 
 
//--------------------structure element-----------------------//
 
struct  form {
 
  int   n;                         // serial number
  char  f_name[len_f];      // full name
  int   year;                    // year of Birth
  char  gender[len_g];      // man or women
  char  mar_stat[len_m];   // married status
  int   n_child;                 // the number of children
  float salary;                  // salary of the employee
  form* next;                  // a pointer to the next element
};
 
//--------------------functions prototypes---------------------//
 
 
form* add(form* end, const form& f);  //adding an element to the list
form* add_first(const form& f);          //adding a first member
form* del(form* beg);                      //element removal from the list
form  input_form();                          //input values of the element
int menu();                                    //display of the menu item and ehter the
void print(const form&f);                  //output values of the element
void view(form* beg);                      //view the list
int read_file(char* filename,form** beg,form** end); //reading a file
int write_file(char* filename,form* temp);           //write to file
 
 
//-----------------------main function--------------------------//
 
 
int main()
{
 
form*beg=0,                               //pointer of the list
    *end=0;                                 //pointer end of the list
char*filename="list.txt";                //list name
 
read_file(filename,&beg,&end);       //reading data from the file to the list
 
 while(1){
 
  switch (menu()) {                      //display the menu and make a selection
  case 1:                                    //item 1 - adding an element
      if(beg)                             //if the list is not empty,
      end=add(end,input_form()); //then add the element to the end of the list
    else{                                     //else
      beg=add_first(input_form());    //create the first element in the list
      end=beg;                              //pointer start and end of the list are equal
      }
    break;
 
  case 2:                             //item 2 of the menu
      beg=del(beg);            //print and delete of the element
      cout<<"Press any key..."<<endl;
      cin.get();
      break;
 
  case 3:                              //item 3 of the menu
    view(beg);                       //view of the list
    break;
 
  case 4:                              //item 4 of the menu
    write_file(filename,beg);  //writing in the file
    break;
 
  case 5:                              //item 5 of the menu
    return 0;
 
  default:
      cout<<"Enter number from 1 to 5"<<endl;
    cin.get();
    break;
  }
 }
}
 
//-----------------------adding an element to the list---------------//
 
form* add(form* end, const form&f){
 
    form*newE=new form;    //allocating memory under element
  *newE=f;                           //assign a value to an element
  newE->next=0;                   //link to the next element of the zero
  end->next=newE;                //add an element to the list
  end=newE;                         //the pointer END on the newE
  return end;                         //return the updated value
}
 
//-----------------------create the first element-------------------//
 
form* add_first(const form&f){
 
    form*beg=new form;     //allocating memory under element
  *beg=f;                            //assign a value to an element
  beg->next=0;                    //link to the next element of the zero
  return beg;                        //return a pointer to the element
}
 
//------------------print and delete of the element----------------//
 
form* del(form*beg) {
 
    form* temp;
  if(!beg) { cout<<"List is empty"<<endl;return 0;}
  cout<<"===================================="<<endl;
 
  print(*beg);                       //print value a first element
 
  cout<<"===================================="<<endl;
  temp=beg;                          //remember pointer on the head
  beg=beg->next;                   //translation BEG to the next element
  delete temp;                       //delete of the element
  return beg;                         // to return the changed values BEG
}
 
//-----------------input values of the element----------------------//
 
form input_form() {
 
  char buf[10];
    form f;
  cout<<"Input number of order"<<endl;
  cin>>f.n;
  cout<<"Input full name of the employee"<<endl;
  cin.getline(f.f_name,len_f);cout<<f.f_name<<endl;
  cout<<"Input the year of Birth"<<endl;
  cin>>f.year;
  cout<<"Input the gender of the employee"<<endl;
  cin.getline(f.gender,len_g);cout<<f.gender<<endl;
  cout<<"Input the marital status of the employee"<<endl;
  cin.getline(f.mar_stat,len_m);cout<<f.mar_stat<<endl;
  cout<<"Input the number children of the employee"<<endl;
  cin>>f.n_child;
  do {
    cout<<"Input the salary of the employee"<<endl;
    cin>>buf;
  }while(!(f.salary=(int)atoi(buf)));
  return f;
}
 
//----------------------menu display---------------------------------//
 
int menu() {
 
    char buf[10];
  int item;
  do {
   clrscr();
   cout<<endl;
   cout<<"==============PERSONAL=============="<<endl<<endl;
   cout<<"1-adding an element to the list"<<endl;
   cout<<"2-print and delete element from the list"<<endl;
   cout<<"3-view the list"<<endl;
   cout<<"4-write data to file"<<endl;
   cout<<"5-output from programm"<<endl;
 
   cout<<"===================================="<<endl;
   cout<<"Input number index of the menu"<<endl;
   cin>>buf;                         //read the entered value
   cin.get();
   item=atoi(buf);                   //to convert it to an integer
   if(!item) {                       //analysis of input error
    cout<<"Enter a number only from 1 to 5"<<endl;
    cin.get();
    }
  }while(!item);                      //repeat until you have entered the number of
   return item;                      //return the number given item
}
 
//----------------output values of the element----------------------//
 
void print(const form&f){
 
   cout<<"Number: "<<f.n<<endl;               //output the number
   cout<<"Full name: "<<f.f_name<<endl;       //output the full name
   cout<<"Year of Birn: "<<f.year<<endl;      //output the year of Birn
   cout<<"Gender: "<<f.gender<<endl;          //output the gender
   cout<<"Married status: "<<f.mar_stat<<endl;//output the married status
   cout<<"Number children: "<<f.n_child<<endl;//output the number of children
   cout<<"Salary: "<<f.salary<<endl;          //output the salary
}
 
//-----------------------view of the list---------------------------//
void view(form* beg) {
 
    if(!beg) {cout<<"List is empty"<<endl;return;}
  form*temp=beg;                     //set the pointer BEG to the beginning
  cout<<"============================="<<endl;
  while(temp) {                      //look through until temp!=0
    print(*temp);                     //print the value of the pointer
    cout<<"==========================="<<endl;
    cout<<"Press any key..."<<endl;
    cin.get();
    temp=temp->next;                 //move temp to the next element
  }
}
 
//-------------------reading from file-------------------------------//
 
int read_file(char* filename,form** beg,form** end) {
 
    ifstream fin(filename,ios::in|ios::nocreate); //opening a file
  if(!fin) { cout<<"There is no file"           //output if no file
                 <<filename<<endl;return 1;}
 
  form f;
  *beg=0;
  while(fin.getline(f.f_name,len_f)) {          //reading the full name until the end of file
    fin>>f.year;                                //reading the year of Birn
    fin.getline(f.gender,len_g);                //reading the gender
    fin.getline(f.mar_stat,len_m);              //reading the married status
    fin>>f.n_child;                             //reading the number of children
    fin>>f.salary;                              //reading the salary
    fin.get();
    if(*beg)                                    //if list is no empty
          *end=add(*end,f);                       //then add the element to the end
    else                                        //else
         {*beg=add_first(f); *end=*beg;}          //create the first element
  }
 
  return 0;
}
 
 
//------------------------write to the file--------------------------//
 
 
int write_file(char* filename,form* temp) {
 
    ofstream fout(filename);                       //opening the file
  if(!fout)
    {cout<<"Don't open the file for writing"<<endl;//until temp!=0 displaying the element in the file
   return 1;}
 
 
  while(temp) {
    fout<<temp->n<<endl;                         //output the number
    fout<<temp->f_name<<endl;                    //output the full name
    fout<<temp->year<<endl;                      //output the year of Birn
    fout<<temp->gender<<endl;                    //output the gender
    fout<<temp->mar_stat<<endl;                  //output the married status
    fout<<temp->n_child<<endl;                   //output the number of children
    fout<<temp->salary<<endl;                    //output the salary
    temp=temp->next;                             //move the pointer to the next element
  }
 
  cout<<"The data stored in the file: "<<filename<<endl;
  cout<<"==================================="<<endl;
  cout<<"Press any key..."<<endl;
  cin.get();
  return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru