Compila pero el programa deja de funcionar
Publicado por Javier (2 intervenciones) el 28/05/2017 16:33:47
Hola, estoy empezando en C++ y he hecho un programa que compila bien pero deja de funcionar al ejecutarse, me ha pasado ya con varios programas, a ver si podríais ayudarme, aquí os dejo el código (da error al introducir el nº de vehículos):
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
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
/* Se desea desarrollar una aplicación para la gestión de
* los vehículos de un concesionario.
*
Para cada vehículo se almacenará la siguiente información:
○ Marca: cadena de caracteres (longitud máxima 20 y mínima 3)
○ Modelo: cadena de caracteres (longitud máxima 30 y mínima 1)
○ Matrícula: cadena de caracteres (longitud 6)
○ Año de fabricación: entero
○ Precio: float (>0)
*
Definir una estructura Vehiculo para representar esta información.
*/
#include <string>
#include <iostream>
struct vehiculo {
string marca;
string modelo;
string matricula;
int anio;
float precio;
};
void leePorTeclado(int *a)
{
vehiculo v[*a];
//Para evitar que salga el mensaje de error
v[*a].marca=3;
v[*a].modelo=3;
v[*a].matricula=6;
v[*a].precio=1;
do {
if (v[*a].marca.length() < 3 || v[*a].marca.length() > 20)
cout<<"Error, intrduzca una marca válida por favor: ";
cin>>v[*a].marca;
} while (v[*a].marca.length() > 3 && v[*a].marca.length() < 20);
cout<<endl<<"Modelo: ";
do {
if (v[*a].modelo.length() < 1 || v[*a].modelo.length() > 30)
cout<<"Error, intrduzca un modelo válido por favor: ";
cin>>v[*a].modelo;
} while (v[*a].modelo.length() > 3 && v[*a].modelo.length() < 20);
cout<<endl<<"Matrícula: ";
do {
if (v[*a].matricula.length() != 6)
cout<<"Error, intrduzca una matricula válida por favor: ";
cin>>v[*a].matricula;
} while (v[*a].matricula.length() == 6);
cout<<endl<<"Año de fabricación: ";
cin>>v[*a].anio;
cout<<endl<<"Precio: ";
do {
if (v[*a].precio < 0)
cout<<"Error, introduzca un precio válido por favor: ";
cin>>v[*a].precio;
} while (v[*a].precio > 0);
};
void leePorTeclado(int a)
{
vehiculo v[a];
//Para evitar que salga el mensaje de error
v[a].marca=3;
v[a].modelo=3;
v[a].matricula=6;
v[a].precio=1;
cout<<"Marca: ";
do {
if (v[a].marca.length() < 3 || v[a].marca.length() > 20)
cout<<"Error, intrduzca una marca válida por favor: ";
cin>>v[a].marca;
} while (v[a].marca.length() > 3 && v[a].marca.length() < 20);
cout<<endl<<"Modelo: ";
do {
if (v[a].modelo.length() < 1 || v[a].modelo.length() > 30)
cout<<"Error, intrduzca un modelo válido por favor: ";
cin>>v[a].modelo;
} while (v[a].modelo.length() > 3 && v[a].modelo.length() < 20);
cout<<endl<<"Matrícula: ";
do {
if (v[a].matricula.length() != 6)
cout<<"Error, intrduzca una matricula válida por favor: ";
cin>>v[a].matricula;
} while (v[a].matricula.length() == 6);
cout<<endl<<"Año de fabricación: ";
cin>>v[a].anio;
cout<<endl<<"Precio: ";
do {
if (v[a].precio < 0)
cout<<"Error, intrduzca un precio válido por favor: ";
cin>>v[a].precio;
} while (v[a].precio > 0);
};
void muestraEnPantalla(int a) {
vehiculo v[a];
cout<<" Características del vehículo Nº"<<a<<":"<<endl;
cout<<endl;
cout<<"Marca: "<<v[a].marca<<endl;
cout<<"Modelo: "<<v[a].modelo<<endl;
cout<<"Matrícula: "<<v[a].matricula<<endl;
cout<<"Año de fabricación: "<<v[a].anio<<endl;
cout<<"Precio: "<<v[a].precio<<endl;
};
void muestraEnPantalla(int *a) {
vehiculo v[*a];
cout<<endl;
cout<<" Características del vehículo Nº"<<*a<<":"<<endl;
cout<<endl;
cout<<"Marca: "<<v[*a].marca<<endl;
cout<<"Modelo: "<<v[*a].modelo<<endl;
cout<<"Matrícula: "<<v[*a].matricula<<endl;
cout<<"Año de fabricación: "<<v[*a].anio<<endl;
cout<<"Precio: "<<v[*a].precio<<endl;
};
int main(int argc, char** argv) {
vehiculo v[1000];
int num,mascaro=0,n=0;
cout<<"Introduzca el número de vehículos: ";
cin>>num;
for (int i=0;i<num;i++) {
leePorTeclado(i);
}
for (int i=0;i<num;i++) {
muestraEnPantalla(i);
}
for (int i=0;i<num;i++) {
if (v[i].precio>mascaro);
mascaro=v[i].precio;
n=i;
}
cout<<"El vehículo más caro es el Nº"<<n<<endl;
muestraEnPantalla(n);
return 0;
}
Valora esta pregunta


0