Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BJM

#21
 :-X Pusshhh necesito lentes! Gracias a los dos.
#22
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:
                printf("\n ***FIN***");
                break;
           }
           }while((resp>0)&&(resp<4));
           printf("\n\n");
           system("pause");
           }
           
    int mostrarmenu(){
        system("color 3a");
       
        printf("\n\n");
        printf("\t *** \n");
        printf("\n 1 reservar boletos");
        printf("\n 2 cancelar boletos");
        printf("\n 3 mostrar boletos");
        printf("\n 4 salir");
        printf("\n Eleccion: ");
        scanf("%d",&resp);
        return resp;
    }

    void reservarboletos(int venta[NFILAS][NCOLUMNAS]){
         int fila,col;
         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[NFILAS][NCOLUMNAS]){
         int fila,col;
         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]==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){
            printf("=>libre");
            }
            else{
            printf("=>ocupado");
            }
            }
               }
                   }
         
#23
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(){
    system("color 21");
    int resp;
    printf("\n\n");
    printf("\t *** \n");
    printf("\n 1 reservar boletos");
    printf("\n 2 cancelar boletos");
    printf("\n 3 mostrar boletos");
    printf("\n 4 salir");
    printf("\n Eleccion: ");
    scanf("%d",&resp);
    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:
            printf("\n ***FIN***");
            break;
       }
       }while((resp>0)&&(resp<4));
       printf("\n\n");
       system("pause");
       }
       
#24
Programación C/C++ / Re: No se eliminan nodos
22 Enero 2013, 21:19 PM
Exactamente el error estaba en el formato de los datos especificado en printf, gracias!
#25
Programación C/C++ / No se eliminan nodos
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){
   printf("\n Marca: ");
   scanf("%s",carro.marca);   
    printf("\n Año: ");
   scanf("%d",&carro.año);
   push(&pila,carro);
   cont++;
     }

printf("\n\n Carros a eliminar: ");
scanf("%d",&num);

   
   for(i=1;i<=num;i++){
      if (pila==NULL)
       printf("\n No hay carros");
       
      else{
       pop(&pila,&carro);
       printf("\n %s de %s\n",carro.marca,carro.año);
      }
   }                       
   printf("\n\n");
   system("pause");
   
}

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;
   free(p);
}
#26
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++){
       srand(time(NULL));
       a=rand()%2;
       printf("\n\n Valor aleatorio (0-1): %d",a);
       if(a==0){
       srand(time(NULL));
       b=rand()%10;
       printf("\n\n Valor aleatorio (0-9): %d",b);
       }
       else{
           srand(time(NULL));
           b=rand()%6;
           printf("\n\n Valor aleatorio (0-5): %d",b);
           }
             }
       printf("\n");
       system("pause");
       }
#27
Ahora si funciona correctamente, gracias.
#28
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);
     
       system("pause");
       }
       
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
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 error");
       }
       printf("\n comienza la carga de registro de trabajadores");
       printf("\n___________________________________________\n");
       for(i=1;i<4;i++){
        printf("\n clave: %d",i);
        nuevo.clave=i;
        printf("\n nombre: ");
        gets(nuevo.nombre);
        fflush(stdin);
        do{
          printf("\n categoria (A-D): ");
          scanf("%c",&nuevo.categoria);
          fflush(stdin);
          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");
       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");
       getch();
       }
       fclose(p1);
       getch();
       }

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++;
      }
      rewind(p2);
      printf("\n\n");
      do{
       fflush(stdin);
           do{
             printf("\n Introduce categoria(A-D)/0(cero) para fin: ");
             scanf("%c",&categoria);
             categoria=toupper(categoria);
             fflush(stdin);
             }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);
             fflush(stdin);
             fseek(p2,sizeof(tcategoria)*(categoria-65),SEEK_SET);
             fwrite(&ficha,sizeof(tcategoria),1,p2);
             }
               }
                 }while(categoria!='0');
                 
           printf("\n\n");
           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);
           }
           fclose(p2);
           getch();
           }
           
    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);
                   while(!feof(p1)){
                   printf("%-4d",ficha1.clave);
                   printf("%20s",ficha1.nombre);
                   printf("%10c",ficha1.categoria);
                   fseek(p2,sizeof(tcategoria)*(ficha1.categoria-65),SEEK_SET);
                   fread(&ficha2,sizeof(tcategoria),1,p2);
                   printf("%15d",ficha2.salario);
                   }
                   fclose(p1);
                   fclose(p2);
                   }
                      }
                        getch();
                           }
                   
#30
Programación C/C++ / Re: Instruccion if
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*'

p[i] = malloc(sizeof *p[i]);

En esta linea me indica error, lo copile con dev-c++