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

Неправильно сохраняет данные - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ find_first_of, разбор полётов http://www.cyberforum.ru/cpp-beginners/thread1071143.html
Есть задание: В произвольном тексте на английском языке, содержащем не более 10 строк, в каждой строке не более 80 символов. Заменить первую букву каждого слова символом «пробел». Слово – это группа символов, заключенная между разделителями (пробел, запятая, точка и т.д.). Полученный текст напечатать. Есть почти корректно работающая программа: #include <iostream> #include <string> using...
C++ Из удалить из массива отрицательные элементы, стоящие на четных местах и сжать его, заполнив нулями. Из одномерного массива,состоящего из n целочисленных элементов, удалить отрицательные элементы, стоящие на четных местах. Сжать массив.Оставшиеся после удаления места заполнить нулями http://www.cyberforum.ru/cpp-beginners/thread1071135.html
C++ проверка и вывод
Разработать функцию rectPS(x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1, y1), (x2, y2) его противоположных вершин (x1, y1, x2, y2 — входные, P и S — выходные параметры). В качестве результирующего значения функция должна возвращать истину, если прямоугольник не является вырожденным (т.е. одна из его сторон...
Массив. Есть ли четные числа в верхнем левом и нижнем левом углу? Поменять местами элементы в верхнем правом и нижнем правом углу C++
Создать массив размерностью M×N, элементы которого читаются из внешнего файла (*.txt, *.xls и т.п.). Вывести его на экран. Проверить: - есть ли четные числа в верхнем левом и нижнем левом углу; - поменять местами элементы в верхнем правом и нижнем правом углу.
C++ Найти все целые числа из промежутка от 1 до 300 у которых ровно пять дели-телей http://www.cyberforum.ru/cpp-beginners/thread1071083.html
Найти все целые числа из промежутка от 1 до 300 у которых ровно пять дели-телей.
C++ Составить программу, которая уменьшает первое введенное число в два раза, если оно больше второго введенного числа по абсолютной величине. Числа вводя Составить программу, которая уменьшает первое введенное число в два раза, если оно больше второго введенного числа по абсолютной величине. Числа вводятся с клавиатуры пользователем. подробнее

Показать сообщение отдельно
KyDryg
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 3

Неправильно сохраняет данные - C++

14.01.2014, 15:18. Просмотров 246. Ответов 5
Метки (Все метки)

Не могу понять в чем проблема. Каждый раз при вводе новых данных, изменяются старые. Вот код:
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
#include <conio.h>
#include <iostream>
#include <locale.h>
#include <string.h>
 
using namespace std;
 
 
class phonebook {
  private:
    bool empty;     // признак конца списка
    char* key;      // информационная часть
    char* name;
    char* data;
    phonebook* next;    // указатель на следующий элемент
    
  public: 
    //конструктор без параметров
    phonebook(){
        empty=true;
    }
 
 
    //добавление элемента
   void Addend(char* n, char* k, char* d){
        if (empty){
          empty=false;
          name=n;
          key=k;
          data=d;
          next=new phonebook;
        }  
        else 
            next->Addend(n,k,d);
    }
 
    //поиск элемента по ключу
   phonebook* Find(char* n){
       if (empty || name==n) return this;
       return next->Find(n);
   }
    //удаление элемента по ключу 
   bool Delete(char* n){
        if (empty) return false;
        if (name==n){
            cout<<"\n delete "<<key<<"\n";
            phonebook* pv=next;
            if (next->empty) { 
                delete pv; 
                empty=true; 
            }
            else {
                name=next->name;  
                key=next->key;
                data=next->data;
                next=next->next; 
                pv->empty=true; delete pv; 
            }
            return true;
        }
        else return next->Delete(n);
   }
    //деструктор
  ~phonebook(){
      if (!empty) delete next;
  }
   
   //вывод списка
   void Show(){
      if   (empty)
          cout<<" finish\n";
      else {
          cout <<name;  
          cout <<"  " <<key;
          cout <<"  " <<data; 
          cout <<"\n";
  
      next->Show(); 
  }
   }
  };
 
   int main(){
    setlocale(LC_ALL, "");
    char* dr=new char;
    char* imya=new char;
    char* nom=new char;
    phonebook L;
    int menu = 7;
 
    while (menu!=0)
    {
        cout<<"Выберите действие"<<endl;
        cout<<"1 - Добавить контакт"<<endl;
        cout<<"2 - Удалить контакт"<<endl;
        cout<<"3 - Сортировать контакты по алфавиту"<<endl;
        cout<<"4 - Вывод списка"<<endl;
        cout<<"5 - Поиск контакта"<<endl;
        cout<<"0 - Для выходы из программы"<<endl;
        cin >>menu;
 
        switch(menu)
        {
        case 1:
            {
                cout<<"Введите Имя"<<endl;
                cin >>imya;
                cout<<"Введите номер "<<endl;
                cin >>nom;
                cout<<"Введите Дату Рождения "<<endl;
                cin >>dr;
                L.Addend(imya,nom,dr);
                break;
            }
        case 2:
            {
                cout<<"Введите Имя"<<endl;
                cin >>imya;
                L.Delete(imya);
                break;
            }
        case 3:
            {
                break;
            }
        case 4:
            {
                L.Show();
                break;
            }
        case 5:
            {
                cout<<"Введите Имя"<<endl;
                cin >>imya;
                L.Find(imya);
                break;
            }
 
        }
    }
   
    return 0;
   }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru