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

не обновляется програма когда нажимаю X??? - C++

Восстановить пароль Регистрация
 
pqi
0 / 0 / 0
Регистрация: 17.02.2010
Сообщений: 35
10.05.2010, 10:13     не обновляется програма когда нажимаю X??? #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
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
#include <cstdlib>
#include <iostream>
#include <fstream> 
#include <iomanip>
#include <conio.h>
 
using namespace std;
//============================================================================== ABSTRAKTI KLASE ABSPERSON
class absperson{
   private:   
      string var, pav, miestas; unsigned long int tel; int plaukia; char lytis;
   public:
      absperson():var(""), pav(""), miestas(""), tel(0), plaukia(0), lytis(' '){} //******** KONSTRUKTORIUS
      void ivedimas(string v, string p, string m, unsigned long int t, int k, char l)
      {var = v; pav = p; miestas = m; tel = t; lytis = l;}
      void isvedimas() //******************************************************* EILUTES ISVEDIMAS
      {   
          cout << std::left << setw(14) << var << setw(17) << pav;
          cout << std::left << setw(16) << miestas << setw(16) << tel << setw(16) << plaukia;
          if (lytis == 'v') {cout << "Vyr";} else {cout << "Mot";}   
      }
      void isvedimas(fstream &byla) //****************************************** EILUTES ISVEDIMAS I FAILA
      {byla << var << " " << pav << " " << miestas << " " << tel << " " << plaukia << " " << lytis;}
      string get_var() {return var;}   
      string get_pav() {return pav;}
      string get_miestas() {return miestas;}
      unsigned long int get_tel() {return tel;}
      int get_plaukia() {return plaukia;}
      char get_lytis() {return lytis;}  
};
//============================================================================== KLASE CLASS_PERSON
class class_person:public absperson{
   private:   
      string var, pav, miestas; unsigned long int tel; int plaukia; char lytis;
   public:       
      class_person():var(""), pav(""), miestas(""), tel(0), plaukia(0), lytis(' '){} //***** KONSTRUKTORIUS 
      class_person(fstream &byla) //******************************************** KONSTRUKTORIUS 
      {
          byla >> var; byla >> pav; byla >> miestas; byla >> tel; byla >> plaukia; byla >> lytis;
          absperson::ivedimas(var, pav, miestas, tel, plaukia, lytis);
      } 
      ~class_person(){}; //***************************************************** DESTRUKTORIUS
      void duomenu_isvedimas(fstream &byla) //********************************** ISVEDIMAS I FAILA
      {byla.seekg(0, ios::end); absperson::isvedimas(byla); byla << endl;}
};
//============================================================================== KLASE RIKIAVIMAS 
class rikiavimas{
      class_person tmp;
   public: 
      rikiavimas():tmp(class_person()){} 
      void sort_pav(class_person person[], int kiek, char x)
      {
           int i, max; bool done = false; string a, b;
           do {
              done = true;
              for(i=0; i<kiek-1; i++)
              {
                   switch (x){
                          case 'q': a = person[i].get_pav();
                                    b = person[i+1].get_pav();
                                    break;
                          case 'w': a = person[i].get_miestas();
                                    b = person[i+1].get_miestas();
                                    break; }          
                   if(a > b)
                     {
                          tmp = person[i];
                          person[i] = person[i+1];
                          person[i+1] = tmp;
                          done = false;
                     }
              }     
           }
           while (done != true);}
};                       
//============================================================================== FUNKCIJOS 
void pildymas(class_person person[], int kiek, fstream &byla) //**************** NAUJO IRASO PRIDEJIMAS
{
     system("cls"); string v, p, m; char l; unsigned long int t; int k;
     cout << endl << "  -------------------------- Naujo iraso pridejimas --------------------------" << endl;
     cout << endl << "  Iveskite varda: "; cin >> v;
     cout << "  Iveskite pavarde: "; cin >> p;
     cout << "  Iveskite miesta: "; cin >> m;
     cout << "  Iveskite telefono numeri: "; cin >> t;
     cout << "  Iveskite plaukimo greiti: "; cin >> k;
     cout << "  Iveskite lyti (v - vyriska, m - moteriska): "; cin >> l;
     person[kiek].ivedimas(v, p, m, t, k, l);
     person[kiek].duomenu_isvedimas(byla);
     byla << endl;
}
void trinimas(class_person person[], int kiek, int sk, fstream &byla)
{ 
       int i; sk--;
       for(i=sk; i<kiek; i++) {person[i] = person[i+1];}
       person[kiek].~class_person();  //**************************************** DESTRUKTORIUS
       for(i=0; i<kiek-1; i++) {person[i].duomenu_isvedimas(byla);}
}
void pagr_lentele()
{
     system("cls"); 
     cout << endl << "                           A d r e s u   K n y g u t e                " << endl;
     cout << "  ----------------------------------------------------------------------------------------------" << endl;
     cout << "   Nr | Vardas      | Pavarde        | Miestas       | Telefonas    | plaukimo gretis | Lytis   " << endl;
     cout << "  ----------------------------------------------------------------------------------------------" << endl;
     cout << endl;
} 
void pagalba()
{
     cout << endl;
     cout << "  ----------------------------------------------------------------------------" << endl;
     cout << "   A - Prideti irasa | D - Pasalinti irasa | S - Paieska | F - Rodyti lyti    " << endl;
     cout << "   Q - Rusiavimas pagal pavarde | W - Rusiavimas pagal adresa | X - Perkrauti " << endl;
     cout << "  ----------------------------------------------------------------------------" << endl;
} 
int main()
{ 
    string line; int i, kiek = -1; fstream in_kiek, in;
    in_kiek.open("adresu_knygute.txt");
    while (! in_kiek.eof() ){getline(in_kiek, line); kiek++;} //**************** SUSKAICIUOJA KIEK IRASU
    in_kiek.close();
    restore:
    in.open("adresu_knygute.txt");
    class_person *person; rikiavimas sort; 
    try {person = new class_person[kiek+1];} 
    catch(bad_alloc xa) {return 1;}
    pagr_lentele();
    for(i=0; i<kiek; i++)
    {
         person[i] = class_person(in);
         cout<<std::right<<setw(5)<<i+1<<"   ";
         person[i].isvedimas();
         cout << endl;
    }
    pagalba();
    in.close();
    char key; bool error = false;
    cout << "   ";
    while(key != '*')
    {
         key = _getch();
         cia:
         pagr_lentele();
         for(i=0; i<kiek; i++){cout<<std::right<<setw(5)<<i+1<<"   "; person[i].isvedimas(); cout << endl;}
         pagalba();
         if(key == 'a') //****************************************************** PRIDEJIMAS
         {
                fstream in;
                in.open("adresu_knygute.txt", ios::in | ios::out);
                pildymas(person, kiek, in);
                in.close();
                kiek++; error = false;
                key = ' '; goto restore;
         }
         else 
         if(key == 'd') //****************************************************** SALINIMAS
         {
                int sk;
                cout << "   Iveskite iraso numeri, kuri norite pasalinti: ";
                cin >> sk;
                in.open("adresu_knygute.txt", ios::out); //********************* ISTRINA BYLOS TURINI
                in.close();
                in.open("adresu_knygute.txt", ios::out | ios::in);
                trinimas(person, kiek, sk, in);
                in.close();
                kiek--; key = ' '; goto cia; 
         } 
         else 
         if(key == 'q' || key == 'w') //**************************************** RIKIAVIMAS
         {sort.sort_pav(person, kiek, key); key = ' '; goto cia;}
         else 
         if(key == 'f') //****************************************************** PAGAL LYTI
         {
                 cout << "   Spauskite M, jei norite matyti tik moteris arba V - tik vyrus";
                 key = _getch();
                 pagr_lentele();
                 int j = 0;
                 for(i=0; i<kiek; i++)
                 {  
                       if(key == 'm'){if(person[i].get_lytis() == 'm') 
                       {cout<<std::right<<setw(5)<<j+1<<"   "; j++; person[i].isvedimas(); cout << endl;}}
                       else{if(person[i].get_lytis() == 'v') 
                       {cout<<std::right<<setw(5)<<j+1<<"   "; j++; person[i].isvedimas(); cout << endl;}}
                 }
                 pagalba(); cout<<"   "; key = _getch(); goto cia;      
         } 
         else 
         if(key == 's') //****************************************************** PAIESKA
         {
                 system("cls");
                 cout << endl << "  ----------------------------- Iraso paieska --------------------------------" << endl;
                 cout << endl << "   V - pagal varda"; 
                 cout << endl << "   P - pagal pavarde";   
                 cout << endl << "   M - pagal miesta";   
                 cout << endl << "   T - pagal telefono numeri";
                 cout << endl << endl << "   ";                                                              
                 key = _getch(); 
                 string ieskoti, ieskomas; int i, j = 0; long int nr; bool rasta = false;
                 switch (key){
                      case 't':                    
                          cout << "Iveskite telefono numeri: ";  cin >> nr;
                          pagr_lentele();
                          for(i=0; i<kiek; i++) 
                          if(nr == person[i].get_tel()) 
                          {
                              cout<<std::right<<setw(5)<<j+1<<"   "; j++;
                              person[i].isvedimas(); 
                              cout << endl;
                              rasta = true;
                          }
                          break;        
                      case 'p':cout << "Iveskite pavarde: "; cin >> ieskoti; break;
                      case 'v':cout << "Iveskite varda: "; cin >> ieskoti; break;
                      case 'm':cout << "Iveskite miesta: "; cin >> ieskoti; break;}                    
                      if (rasta != true && key != 't') 
                      {pagr_lentele();
                      for(i=0; i<kiek; i++) 
                      {
                         switch (key){
                         case 'p':ieskomas = person[i].get_pav(); break;
                         case 'v':ieskomas = person[i].get_var(); break;
                         case 'm':ieskomas = person[i].get_miestas(); break;}
                         if(ieskoti == ieskomas) 
                         {
                           cout<<std::right<<setw(5)<<j+1<<"   "; j++;
                           person[i].isvedimas(); 
                           cout << endl;
                           rasta = true;
                         }
                      }}
                 if (rasta == false) cout << "   Tokio iraso nera!" << endl;
                 pagalba(); cout<<endl<<"   "; key = _getch(); goto cia;      
         } 
         else if(key == 'x') {key = ' '; goto restore;}
         else if(key != ' ') {error = true;} else {error = false;}
         if(error == true) {cout << "   Tokios funkcijos nera! ";} else {cout << "   ";}
    }
    
    delete []person;
    for(i=0; i<kiek; i++){person[i].~class_person();}
    sort.~rikiavimas();
    return EXIT_SUCCESS;
}
Добавлено через 4 минуты
главноя пречина что не вводяться данные в програме и не обновляетсья при нажатии кнопки X.
но создав текст файл "adresu_knygute.txt", все вводимые данные там показывает /////:
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2010, 10:13     не обновляется програма когда нажимаю X???
Посмотрите здесь:

Перестало выводить, когда задание списков перевел в конструкторы, когда были просто функции выводило нормально. C++
Когда нажимаю добавить элемент, и уже его ввожу, то вылетает ошибка и закрываеться программа C++
Записать условия когда является истинным , когда: C++
Програма , не работает когда пишу "getch()", исправте ошибки) C++
C++ Когда используется * перед указателями, а когда нет?
запустив прогу я ввожу число нажимаю энтер и прога закрывается C++
Когда использовать WinAPI, а когда функции языка? C++
Не могу найти ошибку в коде, когда ввожу то переменная принимаєт только 1 символ. ето програма телефонная книг C++

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

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

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