Dev - C++ - Ayuda con un codigo de programacion en C++ [URGENTE]

   
Vista:

Ayuda con un codigo de programacion en C++ [URGENTE]

Publicado por Anthony (1 intervención) el 03/02/2014 19:20:44
es que estoy programando un programa valga la redundacia que consiste en simular una base de datos temporal (mientras el programa este en ejecucion) de los discos vendidos en una tienda, pero tengo un pequeño problemita. Cuando me meto en la opcion que me permite registrar le coloque un ciclo para registrar varios pero cuando intento ver los CD registrados me salen siempre el mismo pero de ultimo ... aqui les dejo el codigo, pruebe la opcion 1 y 2 y vean d lo que hablo ... por fa necesito ayuda :( es una tarea, otra cosa, me pueden ayudar tambien a como regitrar una cadena con espacion ? es decir, que no me tome nada mas la primera palabra sino que tome toda una frase entera ..gracias d antemano

Codigo



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
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
	int opc,opc_case3,i,n;
	struct CD {
		char titulo[30];
		char artista[30];
		int num_canciones;
		float precio;
		char fecha_compra[30];
	}cd_1 = {NULL};
	struct variosCD {
		int cantidad;
	};
	while (opc != 5) {
	printf("\t\t\tREGISTRO DE DISCOS VENDIDOS\n\n1. Registrar nuevo disco\n2. Ver disco registrado\n3. Modificar registro de disco\n4. Eliminar registro\n5. Salir\n");
	printf("\n\tOpcion: ");
	scanf("%i",&opc);
	system("cls");
	switch(opc) {
		case 1:
			printf("REGISTRAR UN NUEVO DISCO\n\n");
			printf("Cantidad de discos a regitrar: ");
			scanf("%i",&n);
			do {
			for (i=1;i<=n;i++) {
			printf("\n\tDisco %i",i);
			printf("\n\tTitulo: ");
			scanf("%s",&cd_1.titulo);
			printf("\tArtista: ");
			scanf("%s",&cd_1.artista);
			printf("\tNumero de canciones: ");
			scanf("%i",&cd_1.num_canciones);
			printf("\tPrecio: ");
			scanf("%f",&cd_1.precio);
			printf("\tFecha de compra: ");
			scanf("%s",&cd_1.fecha_compra);
			}
			} while (i==n);
			printf("\n");
			system("pause");
			break;
		case 2:
			printf("VER DISCO REGISTRADO\n");
			for (i=1;i<=n;i++) {
			printf("\n\n\tDisco %i",i);
	        printf("\n\tTitulo: %s",cd_1.titulo);
	        printf("\n\tArtista: %s",cd_1.artista);
	        printf("\n\tNumero de canciones: %i",cd_1.num_canciones);
	        printf("\n\tPrecio: %.2f",cd_1.precio);
	        printf("\n\tFecha de compra: %s",cd_1.fecha_compra);
	        }
	        printf("\n\n");
			system("pause");
			break;
		case 3:
			printf("MODIFICAR REGISTRO DE DISCO\n\n");
		    printf("1. Modificar Titulo\n2. Modificar Artista\n3. Modificar Numero de canciones\n4. Modificar Precio\n5. Modificar Fecha de compra\n6. Volver\n");
            printf("\n\tOpcion: ");
            scanf("%i",&opc_case3);
            system("cls");
            switch(opc_case3) {
            	case 1:
            		printf("TITULO NUEVO\n\n");
            		printf("Actual: %s",cd_1.titulo);
            		printf("\n\n\tTitulo: ");
			        scanf("%s",&cd_1.titulo);
            		break;
            	case 2:
            		printf("ARTISTA NUEVO\n\n");
            		printf("Actual: %s",cd_1.artista);
            		printf("\n\n\tArtista: ");
			        scanf("%s",&cd_1.artista);
            		break;
            	case 3:
            		printf("NUMERO DE CANCIONES NUEVO\n\n");
            		printf("Actual: %i",cd_1.num_canciones);
            		printf("\n\n\tNumero de canciones: ");
			        scanf("%i",&cd_1.num_canciones);
            		break;
            	case 4:
            		printf("PRECIO NUEVO\n\n");
            		printf("Actual: %.2f",cd_1.precio);
            		printf("\n\n\tPrecio: ");
			        scanf("%f",&cd_1.precio);
            		break;
            	case 5:
            		printf("FECHA DE COMPRA NUEVO\n\n");
            		printf("Actual: %s",cd_1.fecha_compra);
            		printf("\n\n\tFecha de compra: ");
			        scanf("%s",&cd_1.fecha_compra);
            		break;
            	case 6:
            		break;
            	default:
            		printf("\ERROR: debes seleccionar una opcion valida\n");
            		break;
            }
            printf("\n");
			system("pause");
			break;
		case 4:
			strcpy(cd_1.titulo,"");
			strcpy(cd_1.artista,"");
			cd_1.num_canciones = 0;
			cd_1.precio = 0;
			strcpy(cd_1.fecha_compra,"");
			break;
		case 5:
			break;
		default:
			printf("\n\aERROR: debes seleccionar una opcion valida\n\n");
			system("pause");
			break;
	}
	system("cls");
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con un codigo de programacion en C++ [URGENTE]

Publicado por Rene gar (50 intervenciones) el 04/02/2014 06:13:08
bueno tu problema de porque te aparece siempre el ultimo disco que introduciste es porque esta usado la misma variable para todo un ejemplo cuando guardas las infornacion en la variable cd_1.artista para el disco uno, dos y el tres y obviamente los valores van cambiando asi que tendrias que crearle un arreglo para que cuando va ya pasando por el for la variable te cambie

y para lo de leer una frase entera puedes usar la funcion getline que hace lo que pides pero a fuerzas necesita usar string y no array de caracteres un ejemplo de uso seria

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
 
 
int main(){
string casa;
getline(cin,casa);
 
cout<<casa<<endl;
 
 
cin.get();
cin.get();
return 0;}


por ultimo te aconsejaria cambiarte a c++ ya que te facilita mas el trabajo saludos fiera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar