С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
#1

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

01.02.2014, 16:15. Просмотров 260. Ответов 9
Метки нет (Все метки)

Ребят, что-то я не понимаю, где я ошибся... Бошка уже не варит самому додуматься, так что прошу помощи
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;
}

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 16:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структуры, функции и динамическая память (C++):

Динамическая память. Функции. Массивы .Объекты - C++
Всем привет. Возник следующий вопрос: 1.Когда в c++ из функции возвращается объект (экземпляр какого-то класса), то насколько мне...

Статическая память,Динамическая память. - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Динамическая память - C++
Есть 2 массива одной размерности: int *m1 = new int , *m2 = new int ; где N, M некие числа. Собственно вопрос: как...

Динамическая память - C++
Дано натуральное число n и целые числа{a}_{1},{a}_{2},...,{a}_{n}. Выяснить, есть ли среди цифр {a}_{1},{a}_{2},...,{a}_{n}совпадающие и...

Динамическая память - C++
Добрый вечер! Возникла у меня такая проблемка, нужно от статической памяти перейти к динамической. То ли уже голова не варит, то ли руки не...

Динамическая память - C++
Создать одномерный массив в котором хранятся года рождения людей (года вводятся в массив в ручную, размер массива не менее 5). Определить...

9
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
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;
};
работать удобнее и проще, не надо корячиться с освобождением памяти итп итд
0
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 непонятно зачем они нужны
Я тоже не понял, зачем из программы заику делать...
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
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)
0
mustimur
01.02.2014, 22:37
  #5

Не по теме:

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

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

Не по теме:

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

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

динамическая память.... - C++
Ввести двухмерном массив, для работы с массивом использовать указатель. Массив разместить в динамической памяти. Определение суммы...

Динамическая память C++ - C++
Народ, подскажите, плиз, что я делаю не так? Надо посимвольно ститать строку, в процессе выделяя ей ровно столько памяти, сколько...

Динамическая память - C++
в чем ошибка #include &lt;iostream&gt; #include &quot;conio.h&quot; using namespace std; class{A int a; double b; char s; }

Динамическая память с++ - C++
Как использовать динамическую память в с++


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.