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

Структуры, функции и динамическая память - C++

Восстановить пароль Регистрация
 
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
01.02.2014, 16:15     Структуры, функции и динамическая память #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
#include<conio.h>
#include<iostream>
#include<cmath>
#include<cstring>
#include<cctype>
#include <iomanip>
using namespace std;
 
struct Auto{
 
    char *Marka;
 
    char *Model;
 
    int MakeYear;
 
    char *Color;
 
    double price;
 
    double rating;
};
 
void InPut(Auto *x)
{
        setlocale(LC_ALL, "Russian");
 
        x->Marka = new char [15];
        
        x->Model = new char [15];
        
        x->Color = new char [15];
 
        do{
        cout << "Введите марку машины: ";
 
        cin.getline(x->Marka, 15);
 
        }while(x->Marka == "\n");{
 
        cout << "Введите марку машины: ";
 
        cin.getline(x->Marka, 15);
        
        }
 
        do{cout << "Введите модель машины: ";
 
        cin.getline(x->Model, 15);
 
        }while(x->Model== "\n");{
 
        
        }
 
        do{cout << "Введите цвет машины: ";
 
        cin.getline(x->Color, 15);
 
        }while(x->Color == "\n");{
 
        cout << "Введите цвет машины: ";
 
        cin.getline(x->Color, 15);
        }
 
        do{cout << "Введите год производства машины: ";
 
        cin >> x->MakeYear;
 
        }while(x->MakeYear <= 1950 );{
 
        cout << "Введите год производства машины: ";
 
        cin >> x->MakeYear;
        }
 
        do{cout << "Введите цену машины(в $): ";
 
        cin >> x->price;
 
        }while(x->price <= 500);{
 
        cout << "Введите цену машины(в $): ";
 
        cin >> x->price;        
        }
 
        do{cout << "Введите вашу оценку машины(до 10): ";
 
        cin >> x->rating;
 
        }while(x->rating == 0);{
 
        cout << "Введите вашу оценку машины(до 10): ";
 
        cin >> x->rating;
        }
}
 
void Del(Auto x[], int n){
    
    for(int i(0); i < n; i++) {
        delete [] x[i].Marka;
        delete [] x[i].Color;
        delete [] x[i].Model;
    }
}
 
 
int main(){
    setlocale(LC_ALL, "Russian");
    char E;
    int count(0);
    Auto c[20];
 
    for(int i(0); i < 20 ; i++) {
 
        cout<<"\t\tВвод данных о машинах(до 20 машин)(Esc=Exit)\n\n";
 
        cout<<"\tДанные для "<<i+1<<" машины\n\n";
 
 
        InPut(&c[i]);
 
        system("cls");
 
 
        cout<<"Нажмите Еsc для выхода или любую клавишу для продолжения: ";
 
        E = _getch();
 
        if(E == '.') {break;}
 
        system("cls");
 
        count++;
    }
    system("cls");
    
 
    cout << "\t\t Введенные данные\n\n";
 
        cout << setw(3) << "№" << "|" << setw(17) << "Марка машины" << "|" << setw(17) << "Модель машины" << "|" << setw(6) << "г.в." << "|" << setw(17) << "Цвет машины" << "|" <<setw(10) << "Цена" << "|" << setw(4) << "rait" << endl<<endl;;
 
    for(int i(0); i < count; i++){
        
        cout << setw(3) << i+1 << "|" << setw(17) << c->Marka << "|" << setw(17) << c->Model << "|" << setw(6) << c->MakeYear << "|" << setw(17) << c->Color << "|" <<setw(10) << c->price << "|" << setw(4) << c->rating << endl<<endl;
    
    }
    cout<<"\n\nДля выхода нажмите любую клавишу...";
 
    _getch();
 
    Del(c, 20);
 
    return 0;
}

Не по теме:

Не пишите про лишние библиотеки

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 16:15     Структуры, функции и динамическая память
Посмотрите здесь:

Динамическая память C++
C++ Динамическая память
Динамическая память C++
C++ Динамическая память
Динамическая память. Функции. Массивы .Объекты C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
01.02.2014, 17:25     Структуры, функции и динамическая память #2
какая задача вообще?
куча ненужных do while непонятно зачем они нужны
и вообще структуру лучше сделать такой:
C++
1
2
3
4
5
6
7
8
struct Auto{
    string Marka;
    string Model;
    string MakeYear;
    string Color;
    double price;
    double rating;
};
работать удобнее и проще, не надо корячиться с освобождением памяти итп итд
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
01.02.2014, 17:41     Структуры, функции и динамическая память #3
А это что такое? Какая тут идея?
C++
1
2
3
4
5
6
7
8
9
10
11
12
   do{
        cout << "Введите марку машины: ";
 
        cin.getline(x->Marka, 15);
 
        }while(x->Marka == "\n");{
 
        cout << "Введите марку машины: ";
 
        cin.getline(x->Marka, 15);
        
        }
Добавлено через 58 секунд
Цитата Сообщение от dzrkot Посмотреть сообщение
куча ненужных do while непонятно зачем они нужны
Я тоже не понял, зачем из программы заику делать...
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
01.02.2014, 17:55     Структуры, функции и динамическая память #4
вот, мне уходить надо поэтому доделайте, там в print(Auto*);
можно подровнять по правому краю чтобы выводилось всё симпатичненько
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
#include<conio.h>
#include<iostream>
#include<cmath>
#include<string.h>
#include<cctype>
#include <iomanip>
#include <windows.h>
using namespace std;
 
struct Auto{
    string Marka;
    string Model;
    string MakeYear;
    string Color;
    double price;
    double rating;
};
 
void InPut(Auto &x)
{
cout << "Введите марку машины: ";
getline(cin,x.Marka);
cout << "Введите модель машины: ";
getline(cin,x.Model);
cout << "Введите цвет машины: ";
getline(cin,x.Color);
cout<< "Введите год производства машины: ";
cin >> x.MakeYear;
cout << "Введите цену машины(в $): ";
cin >> x.price;
cin.get();
}
void print(Auto &x)
{
cout << "марка машины: "<<setw(15)<<x.Marka<<endl;
cout << "модель машины: "<<setw(15)<<x.Model<<endl;
cout << "цвет машины: "<<setw(15)<<x.Color<<endl;
cout <<  "год производства машины: "<<setw(15)<<x.MakeYear<<endl;
cout << "ценf машины(в $): "<<setw(15)<<x.price<<endl;
}
 
 
int main(){
    setlocale(LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int count=0;
    int size;
    cout<<"Введите кол-во машин:";
    cin>>size;
    Auto *c=new Auto[size];
    cin.get();
    for(int i=0; i < size ; i++)
        {
        cout<<"Ввод данных о машинах(Esc=Exit)\n\n";
        cout<<"Данные для "<<i+1<<" машины\n\n";
        InPut(c[i]);
        system("cls");
        cout<<"Нажмите Еsc для выхода или любую клавишу для продолжения: ";
        count++;
        }
    system("cls");
    for(int i=0; i < size ; i++)}
    cout<<"Машина "<<i<<":\n";
    print(c[i]);
    }
    
    cout<<"\n\nДля выхода нажмите любую клавишу...";
    return 0;
}
Добавлено через 8 минут
Цитата Сообщение от mustimur Посмотреть сообщение
А это что такое? Какая тут идея?
по-моему это неудачная попытка проверять на правильность ввода (и в char* тоже 0_o)
mustimur
01.02.2014, 22:37
  #5

Не по теме:

Цитата Сообщение от dzrkot Посмотреть сообщение
по-моему это неудачная попытка проверять на правильность ввода (и в char* тоже 0_o)
Я допускаю что у меня в глазах струя может быть, но где вы хоть какой-то намек на проверку увидели???

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.02.2014, 01:25     Структуры, функции и динамическая память #6
Цитата Сообщение от Xopecc Посмотреть сообщение
x->Marka == "\n"
С-строки так не сравнивают. Используйте strcmp(). И нет смысла сравнивать с "\n", getline() не помещает этот символ в строку. Если хотите проверить на пустой ввод, то сравнивайте с "\0" (пустая строка).
dzrkot
02.02.2014, 10:46
  #7

Не по теме:

Цитата Сообщение от mustimur Посмотреть сообщение
Я допускаю что у меня в глазах струя может быть, но где вы хоть какой-то намек на проверку увидели???
та я не смотрел что там в условиях)

Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
02.02.2014, 12:52  [ТС]     Структуры, функции и динамическая память #8
dzrkot, mustimur, охоххо, ща сам глянул свой код и думаю, что реально тогда голова плыла где-то отдельно от тела насчет do{}while{} я так понимаю, что пытался сделать некую проверку на пустой или некорректный ввод
P.S. никто не может кинуть литературу про выравнивание вывода ?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
02.02.2014, 13:50     Структуры, функции и динамическая память #9
Цитата Сообщение от Xopecc Посмотреть сообщение
dzrkot, mustimur
P.S. никто не может кинуть литературу про выравнивание вывода ?
это всё в методах cout должно быть
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2014, 14:06     Структуры, функции и динамическая память
Еще ссылки по теме:

Динамическая память C++
C++ Динамическая память [new]
Динамическая память C++

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

Или воспользуйтесь поиском по форуму:
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
02.02.2014, 14:06  [ТС]     Структуры, функции и динамическая память #10
dzrkot, ок, гляну
Yandex
Объявления
02.02.2014, 14:06     Структуры, функции и динамическая память
Ответ Создать тему
Опции темы

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