|
Mostrar Mensajes
|
Páginas: 1 2 [3] 4 5
|
22
|
Programación / Programación C/C++ / Re: Problema con constantes en c
|
en: 22 Marzo 2013, 18:27 pm
|
Gracias ya he pulido los errores que mencionaste , ahora el problema es lo siguiente: *** 1 reservar boletos 2 cancelar boletos 3 mostrar boletos 4 salir Eleccion: 1 Ingrese fila del asiento: 0 Ingrese columna del asiento: 0 Asiento[0][0] reservado con exito *** 1 reservar boletos 2 cancelar boletos 3 mostrar boletos 4 salir Eleccion: 3 Asiento[0][0]:=>libre Asiento[0][1]:=>libre Asiento[1][0]:=>libre Asiento[1][1]:=>libre *** 1 reservar boletos 2 cancelar boletos 3 mostrar boletos 4 salir Eleccion: Este es el prog ejecutable, reservo el asiento - , pero luego cuando selecciono mostrar boletos el asiento[0][0] dice estar libre cuando deberia estar ocupado.
#include <stdlib.h> #include <stdio.h> #define NCOLUMNAS 2 #define NFILAS 2 #define LIBRE 0 #define OCUPADO 1 int mostrarmenu(); void reservarboletos(int venta[NFILAS][NCOLUMNAS]); void cancelarboletos(int venta[NFILAS][NCOLUMNAS]); void mostrarvendidos(int venta[NFILAS][NCOLUMNAS]); int resp=0; main(){ int boletos[NFILAS][NCOLUMNAS]={0}; do{ switch(mostrarmenu()){ case 1: reservarboletos(boletos); break; case 2: cancelarboletos(boletos); break; case 3: mostrarvendidos(boletos); break; case 4: break; } }while((resp>0)&&(resp<4)); } int mostrarmenu(){ printf("\n 1 reservar boletos"); printf("\n 2 cancelar boletos"); printf("\n 3 mostrar boletos"); return resp; } void reservarboletos(int venta[NFILAS][NCOLUMNAS]){ int fila,col; printf("\n Ingrese fila del asiento: "); printf("\n Ingrese columna del asiento: "); if(venta[fila][col]==OCUPADO) { printf("\n Asiento ocupado "); } else{ venta[fila][col]==OCUPADO; printf("\n Asiento[%d][%d] reservado con exito",fila ,col ); } } void cancelarboletos(int venta[NFILAS][NCOLUMNAS]){ int fila,col; printf("\n Ingrese fila del asiento a cancelar: "); printf("\n Ingrese columna del asiento a cancelar: "); if(venta[fila][col]==LIBRE){ printf("\n Asiento no reservado"); } else{ venta[fila][col]=LIBRE; printf("\n Asiento [%d][%d] ha sido cancelado",fila ,col ); } } void mostrarvendidos(int venta[NFILAS][NCOLUMNAS]){ int i,j; for(i=0;i<NFILAS;i++){ for(j=0;j<NCOLUMNAS;j++){ printf("\n Asiento[%d][%d]:",i ,j ); if(venta[i][j]==LIBRE){ } else{ } } } }
|
|
|
23
|
Programación / Programación C/C++ / Problema con constantes en c
|
en: 20 Marzo 2013, 14:58 pm
|
El error se produce en la linea 11: void mostrarvendidos(int venta[][ncolumnas], int nfilas,int ncolumnas), paso las constantes nfilas y ncolumnas como parametro, es valido? #include <stdlib.h> #include <stdio.h> #define ncolumnas 2 #difine nfilas 2 #define libre 0 #define ocupado 1 int menu(); void reservarboletos(int venta[][ncolumnas]); void cancelarboletos(int venta[][ncolumnas]); void mostrarvendidos(int venta[][ncolumnas], int nfilas,int ncolumnas); int menu(){ int resp; printf("\n 1 reservar boletos"); printf("\n 2 cancelar boletos"); printf("\n 3 mostrar boletos"); return resp; } void reservarboletos(int venta[][ncolumnas]){ int fila=0,col=0; printf("\n Ingrese fila del asiento: "); scanf("%d",&fila ); printf("\n Ingrese columna del asiento: "); scanf("%d",&col ); if(venta[fila][col]==ocupado){ printf("\n Asiento ocupado "); } else{ venta[fila][col]==ocupado; printf("\n Asiento[%d][%d] reservado con exito",fila ,col ); } } void cancelarboletos(int venta[][ncolumnas]){ int fila=0,col=0; printf("\n Ingrese fila del asiento a cancelar: "); scanf("%d",&fila ); printf("\n Ingrese columna del asiento a cancelar: "); scanf("%d",&col ); if(venta[fila][col]!=ocupado){ printf("\n Asiento no reservado"); } else{ venta[fila][col]=libre; printf("\n Asiento [%d][%d] ha sido cancelado",fila ,col ); } } void mostrarvendidos(int venta[][ncolumnas]){ for(int i=0;i<nfilas;i++){ for(int j=0;j<ncolumnas;j++) if(venta[][ncolumnas]==ocupado){ printf("\n Asiento[%d][%d]: Ocupado\n",i ,j ); } else{ printf("\n Asiento[%d][%d]: Libre\n",i ,j ); } } } main(){ int puest=0; do{ switch(menu()){ case 1: if(puest<4){ reservarboletos(venta); puest++; } else{ printf("\n Agotados los puestos"); } break; case 2: cancelarboletos(venta); break; case 3: mostrarvendidos(venta,nfilas,ncolumnas); break; case 4: break; } }while((resp>0)&&(resp<4)); }
|
|
|
25
|
Programación / Programación C/C++ / No se eliminan nodos
|
en: 21 Enero 2013, 15:58 pm
|
El programa compila bien pero en el punto donde se ingresa la cant de carros a eliminar y se invoca a la funcion pop, aparece un cuadro de dialogo que dice: se ha producido un problema, abajo el codigo: #include <stdlib.h> #include <stdio.h> typedef struct{ char marca[15]; int año; }tipocarro; typedef struct estrunodo { tipocarro datos; struct estrunodo *siguiente; } tipoNodo; typedef tipoNodo *apunpila; typedef tipoNodo *apunnodo; void push(apunpila *tope,tipocarro b); void pop(apunpila *tope,tipocarro *b); main() { tipocarro carro; int i,cont=0,num; apunpila pila = NULL; while(cont<5){ push(&pila,carro); cont++; } printf("\n\n Carros a eliminar: "); for(i=1;i<=num;i++){ if (pila==NULL) else{ pop(&pila,&carro); printf("\n %s de %s\n",carro. marca,carro. año ); } } } void push(apunpila *tope,tipocarro b){ apunnodo p; p = (apunnodo )malloc(sizeof(tipoNodo )); p->datos = b; p->siguiente = *tope; *tope = p; } void pop(apunpila *tope,tipocarro *b){ apunnodo p; p = *tope; *tope = p->siguiente; *b= p->datos; }
|
|
|
26
|
Programación / Programación C/C++ / Como utilizar dos veces la funcionn srand(time(NULL))
|
en: 17 Enero 2013, 19:48 pm
|
Debo generar primeramente dos valores aleatorios entre 0 y 1, si se genero 0 luego se debe generar otro numero aleatorio entre 0-9, si por el contrario se genero fue 1 luego se debe generar un numero aleatorio entre 0-5, pero siempre se generan los mismos numeros, a continuacion el codigo: #include <stdio.h> #include <stdlib.h> #include<time.h> main(){ int a,b,i; for(i=1;i<=12;i++){ printf("\n\n Valor aleatorio (0-1): %d",a ); if(a==0){ printf("\n\n Valor aleatorio (0-9): %d",b ); } else{ printf("\n\n Valor aleatorio (0-5): %d",b ); } } }
|
|
|
28
|
Programación / Programación C/C++ / Problema con lista simplemente encadenada
|
en: 13 Diciembre 2012, 14:11 pm
|
El siguiente programa debe crear una lista de los primeros 100 numeros pares y luego mostrar la suma total de todos los numeros, el problema es que no se esta imprmiendo nada en pantalla. #include <stdlib.h> #include <stdio.h> typedef struct punt{ int dato; struct punt *sig; }nodo; typedef nodo *pt; void insertar(pt *lista, int i); void suma(pt *lista); void mostrar(pt *lista); main(){ int i; pt lista=NULL; for(i=1;i<=200;i++){ insertar(&lista,i); } suma(&lista); mostrar(&lista); } void insertar(pt *lista, int i){ pt nuevo,ultimo; nuevo =(pt )malloc(sizeof(nodo )); do{ nuevo->dato=i; if(*lista==NULL){ nuevo->sig=NULL; *lista=nuevo; } else{ ultimo=*lista; if(lista!=NULL){ while(ultimo->sig!=NULL){ ultimo=ultimo->sig; }// cierre while nuevo->sig=NULL; ultimo->sig=nuevo; }// cierre if }// cierre else }while(i%2==0); }// cierre funcion void suma(pt *lista){ int total=0; pt aux; if(*lista!=NULL){ aux=*lista; do{ total+=aux->dato; aux=aux->sig; }while(aux->sig!=NULL); }//cierre if printf("\n\n Total de la lista: %d",total ); }//cierre funcion void mostrar(pt *lista){ pt aux=*lista; if(*lista!=NULL){ while(aux!=NULL){ printf("\n\n Valores pares : %d\t",aux ->dato ); aux=aux->sig; }//cierre while }//cierre if }//cierre funcion
|
|
|
29
|
Programación / Programación C/C++ / No se imprimen los datos almacenados en un archivo
|
en: 21 Noviembre 2012, 16:58 pm
|
El problema esta en la funcion void mostrar(); la cual se encarga de imprimir todos los datos almacenados en 2 archivos llamados "trabajadores.dat" y "salario.dat", pero se me imprimen de manera infinita codigos ilegibles, he chequeado muchas veces la funcion y no encuentro el error. #include<stdio.h> #include<conio.h> #include<ctype.h> typedef struct { int clave; char nombre[35]; char categoria; }ttrabajador; typedef struct{ char categoria; int salario; }tcategoria; void crear(); void salario(); void mostrar(); main(){ crear(); salario(); mostrar(); } void crear(){ FILE *p1; ttrabajador nuevo; int i; p1 =fopen("trabajadores.dat","wb+"); if(p1==NULL){ } printf("\n comienza la carga de registro de trabajadores"); printf("\n___________________________________________\n"); for(i=1;i<4;i++){ nuevo.clave=i; do{ printf("\n categoria (A-D): "); scanf("%c",&nuevo. categoria); nuevo. categoria=toupper(nuevo. categoria); }while(nuevo.categoria<'A'||nuevo.categoria>'D'); fseek(p1 ,sizeof(ttrabajador )*(i -1),SEEK_SET ); fwrite(&nuevo ,sizeof(ttrabajador ),1,p1 ); } printf("\n Listado del archivo recien creado"); for(i=1;i<4;i++){ fseek(p1 ,sizeof(ttrabajador )*(i -1),SEEK_SET ); fread(&nuevo ,sizeof(ttrabajador ),1,p1 ); printf("\n clave: %d",nuevo. clave); printf("\n nombre: %s", nuevo. nombre); printf("\n categoria:%c",nuevo. categoria); printf("\n______________________________\n"); } } void salario(){ FILE *p2; tcategoria ficha; int i=0; char categoria; p2 =fopen("salario.dat","wb+"); while(i<4){ ficha.categoria='0'; ficha.salario=0; fwrite(&ficha ,sizeof(tcategoria ),1,p2 ); i++; } do{ do{ printf("\n Introduce categoria(A-D)/0(cero) para fin: "); }while((categoria!='0')&&(categoria<'A'||categoria>'D')); if(categoria!='0'){ fseek(p2 ,sizeof(tcategoria )*(categoria -65),SEEK_SET ); fread(&ficha ,sizeof(tcategoria ),1,p2 ); if(ficha.categoria!='0'){ printf("\n categoria ya introducida"); } else{ ficha.categoria=categoria; printf("\n Introduce sueldo: "); scanf("%d",&ficha. salario); fseek(p2 ,sizeof(tcategoria )*(categoria -65),SEEK_SET ); fwrite(&ficha ,sizeof(tcategoria ),1,p2 ); } } }while(categoria!='0'); printf(" Listado del archivo salario"); for(i=0;i<4;i++){ fseek(p2 ,sizeof(tcategoria )*(i ),SEEK_SET ); fread(&ficha ,sizeof(tcategoria ),1,p2 ); printf("\n categoria: %c",ficha. categoria); printf("\n sueldo: %d",ficha. salario); } } void mostrar(){ FILE *p1; FILE *p2; ttrabajador ficha1; tcategoria ficha2; int clave; p1 =fopen("trabajadores.dat","rb+"); p2 =fopen("salario.dat","rb+"); if(p1==NULL){ printf("\n No se puede abrir trabajadores.dat"); } else{ if(p2==NULL){ printf("\n no se puede abrir salario.dat"); } else { printf("\n\n Clave nombre categoria salario"); printf("\n********************************************\n"); fread(&ficha1 ,sizeof(ttrabajador ),1,p1 ); printf("%10c",ficha1. categoria); fseek(p2 ,sizeof(tcategoria )*(ficha1. categoria-65),SEEK_SET ); fread(&ficha2 ,sizeof(tcategoria ),1,p2 ); printf("%15d",ficha2. salario); } } } }
|
|
|
30
|
Programación / Programación C/C++ / Re: Instruccion if
|
en: 22 Octubre 2012, 17:44 pm
|
Gracias rir3760, copile tu codigo y en la linea 9, me indica error esto es lo que dice: invalid conversion from `void*' to `int*'
En esta linea me indica error, lo copile con dev-c++
|
|
|
|
|
|
|