elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5
21  Programación / Programación C/C++ / Re: Problema con constantes en c en: 27 Marzo 2013, 18:30 pm
 :-X Pusshhh necesito lentes! Gracias a los dos.
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.
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #define NCOLUMNAS 2
  4. #define NFILAS 2
  5. #define LIBRE 0
  6. #define OCUPADO 1
  7.  
  8. int mostrarmenu();
  9. void reservarboletos(int venta[NFILAS][NCOLUMNAS]);
  10. void cancelarboletos(int venta[NFILAS][NCOLUMNAS]);
  11. void mostrarvendidos(int venta[NFILAS][NCOLUMNAS]);
  12.  
  13.  
  14. int resp=0;    
  15. main(){
  16.  
  17.       int boletos[NFILAS][NCOLUMNAS]={0};
  18.       do{
  19.       switch(mostrarmenu()){
  20.       case 1:
  21.            reservarboletos(boletos);
  22.            break;
  23.       case 2:
  24.            cancelarboletos(boletos);
  25.            break;
  26.       case 3:
  27.            mostrarvendidos(boletos);
  28.            break;
  29.       case 4:
  30.            printf("\n ***FIN***");
  31.            break;
  32.       }
  33.       }while((resp>0)&&(resp<4));
  34.       printf("\n\n");
  35.       system("pause");
  36.       }
  37.  
  38. int mostrarmenu(){
  39.    system("color 3a");
  40.  
  41.    printf("\n\n");
  42.    printf("\t *** \n");
  43.    printf("\n 1 reservar boletos");
  44.    printf("\n 2 cancelar boletos");
  45.    printf("\n 3 mostrar boletos");
  46.    printf("\n 4 salir");
  47.    printf("\n Eleccion: ");
  48.    scanf("%d",&resp);
  49.    return resp;
  50. }
  51.  
  52. void reservarboletos(int venta[NFILAS][NCOLUMNAS]){
  53.     int fila,col;
  54.     printf("\n Ingrese fila del asiento: ");
  55.     scanf("%d",&fila);
  56.     printf("\n Ingrese columna del asiento: ");
  57.     scanf("%d",&col);
  58.     if(venta[fila][col]==OCUPADO)
  59.     {
  60.     printf("\n Asiento ocupado ");
  61.     }
  62.     else{
  63.          venta[fila][col]==OCUPADO;
  64.          printf("\n Asiento[%d][%d] reservado con exito",fila,col);
  65.          }
  66.          }
  67.  
  68. void cancelarboletos(int venta[NFILAS][NCOLUMNAS]){
  69.     int fila,col;
  70.     printf("\n Ingrese fila del asiento a cancelar: ");
  71.     scanf("%d",&fila);
  72.     printf("\n Ingrese columna del asiento a cancelar: ");
  73.     scanf("%d",&col);
  74.     if(venta[fila][col]==LIBRE){
  75.     printf("\n Asiento no reservado");
  76.     }
  77.     else{
  78.          venta[fila][col]=LIBRE;
  79.          printf("\n Asiento [%d][%d] ha sido cancelado",fila,col);
  80.          }
  81.          }
  82.  
  83. void mostrarvendidos(int venta[NFILAS][NCOLUMNAS]){
  84.     int i,j;
  85.     for(i=0;i<NFILAS;i++){
  86.      for(j=0;j<NCOLUMNAS;j++){
  87.        printf("\n Asiento[%d][%d]:",i,j);
  88.        if(venta[i][j]==LIBRE){
  89.        printf("=>libre");
  90.        }
  91.        else{
  92.        printf("=>ocupado");
  93.        }
  94.        }
  95.           }
  96.               }
  97.  
  98.  
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?

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #define ncolumnas 2
  4. #difine nfilas 2
  5. #define libre 0
  6. #define ocupado 1
  7.  
  8. int menu();
  9. void reservarboletos(int venta[][ncolumnas]);
  10. void cancelarboletos(int venta[][ncolumnas]);
  11. void mostrarvendidos(int venta[][ncolumnas], int nfilas,int ncolumnas);
  12.  
  13.  
  14. int menu(){
  15.    system("color 21");
  16.    int resp;
  17.    printf("\n\n");
  18.    printf("\t *** \n");
  19.    printf("\n 1 reservar boletos");
  20.    printf("\n 2 cancelar boletos");
  21.    printf("\n 3 mostrar boletos");
  22.    printf("\n 4 salir");
  23.    printf("\n Eleccion: ");
  24.    scanf("%d",&resp);
  25.    return resp;
  26. }
  27.  
  28. void reservarboletos(int venta[][ncolumnas]){
  29.     int fila=0,col=0;
  30.     printf("\n Ingrese fila del asiento: "); scanf("%d",&fila);
  31.     printf("\n Ingrese columna del asiento: "); scanf("%d",&col);
  32.     if(venta[fila][col]==ocupado){
  33.     printf("\n Asiento ocupado ");
  34.     }
  35.     else{
  36.          venta[fila][col]==ocupado;
  37.          printf("\n Asiento[%d][%d] reservado con exito",fila,col);
  38.          }
  39.          }
  40.  
  41. void cancelarboletos(int venta[][ncolumnas]){
  42.     int fila=0,col=0;
  43.     printf("\n Ingrese fila del asiento a cancelar: "); scanf("%d",&fila);
  44.     printf("\n Ingrese columna del asiento a cancelar: "); scanf("%d",&col);
  45.     if(venta[fila][col]!=ocupado){
  46.     printf("\n Asiento no reservado");
  47.     }
  48.     else{
  49.          venta[fila][col]=libre;
  50.          printf("\n Asiento [%d][%d] ha sido cancelado",fila,col);
  51.          }
  52.          }
  53.  
  54. void mostrarvendidos(int venta[][ncolumnas]){
  55.     for(int i=0;i<nfilas;i++){
  56.      for(int j=0;j<ncolumnas;j++)
  57.      if(venta[][ncolumnas]==ocupado){
  58.        printf("\n Asiento[%d][%d]: Ocupado\n",i,j);
  59.        }
  60.        else{
  61.             printf("\n Asiento[%d][%d]: Libre\n",i,j);
  62.             }
  63.  
  64.        }
  65.        }
  66.  
  67.  
  68. main(){
  69.       int puest=0;
  70.       do{
  71.       switch(menu()){
  72.       case 1:
  73.            if(puest<4){
  74.            reservarboletos(venta);
  75.            puest++;
  76.            }
  77.            else{
  78.                 printf("\n Agotados los puestos");
  79.                 }
  80.            break;
  81.       case 2:
  82.            cancelarboletos(venta);
  83.            break;
  84.       case 3:
  85.            mostrarvendidos(venta,nfilas,ncolumnas);
  86.            break;
  87.       case 4:
  88.            printf("\n ***FIN***");
  89.            break;
  90.       }
  91.       }while((resp>0)&&(resp<4));
  92.       printf("\n\n");
  93.       system("pause");
  94.       }
  95.  
  96.  
24  Programación / Programación C/C++ / Re: No se eliminan nodos en: 22 Enero 2013, 21:19 pm
Exactamente el error estaba en el formato de los datos especificado en printf, gracias!
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:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. typedef struct{
  5.        char marca[15];
  6.        int año;
  7.        }tipocarro;
  8.  
  9. typedef struct estrunodo {
  10.   tipocarro datos;
  11.   struct estrunodo *siguiente;
  12. } tipoNodo;
  13.  
  14. typedef tipoNodo *apunpila;
  15. typedef tipoNodo *apunnodo;
  16.  
  17. void push(apunpila *tope,tipocarro b);
  18. void pop(apunpila *tope,tipocarro *b);
  19.  
  20. main() {
  21.   tipocarro carro;
  22.   int i,cont=0,num;
  23.   apunpila pila = NULL;
  24.  
  25.   while(cont<5){
  26.   printf("\n Marca: ");
  27.   scanf("%s",carro.marca);    
  28.    printf("\n Año: ");
  29.   scanf("%d",&carro.año);
  30.   push(&pila,carro);
  31.   cont++;
  32.     }
  33.  
  34. printf("\n\n Carros a eliminar: ");
  35. scanf("%d",&num);
  36.  
  37.  
  38.   for(i=1;i<=num;i++){
  39.      if (pila==NULL)
  40.       printf("\n No hay carros");
  41.  
  42.      else{
  43.       pop(&pila,&carro);
  44.       printf("\n %s de %s\n",carro.marca,carro.año);
  45.      }
  46.   }                      
  47.   printf("\n\n");
  48.   system("pause");
  49.  
  50. }
  51.  
  52. void push(apunpila *tope,tipocarro b){
  53.   apunnodo p;
  54.   p = (apunnodo)malloc(sizeof(tipoNodo));
  55.   p->datos = b;
  56.   p->siguiente = *tope;
  57.   *tope = p;
  58. }
  59.  
  60. void pop(apunpila *tope,tipocarro *b){
  61.   apunnodo p;
  62.   p = *tope;
  63.   *tope = p->siguiente;
  64.   *b= p->datos;
  65.   free(p);
  66. }
  67.  
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:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<time.h>
  4.  
  5. main(){
  6.       int a,b,i;
  7.       for(i=1;i<=12;i++){
  8.       srand(time(NULL));
  9.       a=rand()%2;
  10.       printf("\n\n Valor aleatorio (0-1): %d",a);
  11.       if(a==0){
  12.       srand(time(NULL));
  13.       b=rand()%10;
  14.       printf("\n\n Valor aleatorio (0-9): %d",b);
  15.       }
  16.       else{
  17.           srand(time(NULL));
  18.           b=rand()%6;
  19.           printf("\n\n Valor aleatorio (0-5): %d",b);
  20.           }
  21.             }
  22.       printf("\n");
  23.       system("pause");
  24.       }
27  Programación / Programación C/C++ / Re: Problema con lista simplemente encadenada en: 14 Diciembre 2012, 13:52 pm
Ahora si funciona correctamente, gracias.
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.

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. typedef struct punt{
  5.        int dato;
  6.        struct punt *sig;
  7.        }nodo;
  8.  
  9.      typedef nodo *pt;
  10.  
  11.  
  12. void insertar(pt *lista, int i);
  13. void suma(pt *lista);
  14. void mostrar(pt *lista);
  15.  
  16.  
  17. main(){
  18.      int i;
  19.       pt lista=NULL;
  20.         for(i=1;i<=200;i++){
  21.       insertar(&lista,i);
  22.       }
  23.       suma(&lista);
  24.       mostrar(&lista);
  25.  
  26.       system("pause");
  27.       }
  28.  
  29. void insertar(pt *lista, int i){
  30.  
  31.     pt nuevo,ultimo;
  32.     nuevo=(pt)malloc(sizeof(nodo));
  33.  
  34.       do{    
  35.            nuevo->dato=i;        
  36.            if(*lista==NULL){
  37.             nuevo->sig=NULL;
  38.             *lista=nuevo;                    
  39.             }
  40.             else{
  41.                  ultimo=*lista;
  42.                  if(lista!=NULL){
  43.                  while(ultimo->sig!=NULL){
  44.                  ultimo=ultimo->sig;
  45.                  }// cierre while
  46.                  nuevo->sig=NULL;
  47.                  ultimo->sig=nuevo;
  48.                  }// cierre if
  49.                  }// cierre else
  50.              }while(i%2==0);
  51.  
  52.                    }// cierre funcion
  53.  
  54. void suma(pt *lista){
  55.     int total=0;
  56.     pt aux;
  57.     if(*lista!=NULL){
  58.       aux=*lista;              
  59.     do{
  60.     total+=aux->dato;
  61.     aux=aux->sig;
  62.     }while(aux->sig!=NULL);
  63.     }//cierre if
  64.     printf("\n\n Total de la lista: %d",total);
  65.     }//cierre funcion
  66.  
  67. void mostrar(pt *lista){
  68.     pt aux=*lista;
  69.     if(*lista!=NULL){
  70.     while(aux!=NULL){
  71.     printf("\n\n Valores pares : %d\t",aux->dato);
  72.     aux=aux->sig;
  73.     }//cierre while
  74.     }//cierre if
  75.     }//cierre funcion
  76.  
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.

Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<ctype.h>
  4.  
  5. typedef struct {
  6.        int clave;
  7.        char nombre[35];
  8.        char categoria;
  9.        }ttrabajador;
  10.  
  11. typedef struct{
  12.        char categoria;
  13.        int salario;
  14.        }tcategoria;
  15.  
  16. void crear();
  17. void salario();
  18. void mostrar();
  19.  
  20. main(){
  21.       crear();
  22.       salario();
  23.       mostrar();
  24.       }
  25.  
  26. void crear(){
  27.       FILE *p1;
  28.       ttrabajador nuevo;
  29.       int i;
  30.       p1=fopen("trabajadores.dat","wb+");
  31.       if(p1==NULL){
  32.       printf("\n error");
  33.       }
  34.       printf("\n comienza la carga de registro de trabajadores");
  35.       printf("\n___________________________________________\n");
  36.       for(i=1;i<4;i++){
  37.        printf("\n clave: %d",i);
  38.        nuevo.clave=i;
  39.        printf("\n nombre: ");
  40.        gets(nuevo.nombre);
  41.        fflush(stdin);
  42.        do{
  43.          printf("\n categoria (A-D): ");
  44.          scanf("%c",&nuevo.categoria);
  45.          fflush(stdin);
  46.          nuevo.categoria=toupper(nuevo.categoria);
  47.          }while(nuevo.categoria<'A'||nuevo.categoria>'D');
  48.          fseek(p1,sizeof(ttrabajador)*(i-1),SEEK_SET);
  49.          fwrite(&nuevo,sizeof(ttrabajador),1,p1);
  50.          }
  51.  
  52.       printf("\n");
  53.       printf("\n Listado del archivo recien creado");
  54.       for(i=1;i<4;i++){
  55.       fseek(p1,sizeof(ttrabajador)*(i-1),SEEK_SET);
  56.       fread(&nuevo,sizeof(ttrabajador),1,p1);
  57.       printf("\n clave: %d",nuevo.clave);
  58.       printf("\n nombre: %s", nuevo.nombre);
  59.       printf("\n categoria:%c",nuevo.categoria);
  60.       printf("\n______________________________\n");
  61.       getch();
  62.       }
  63.       fclose(p1);
  64.       getch();
  65.       }
  66.  
  67. void salario(){
  68.     FILE *p2;
  69.     tcategoria ficha;
  70.     int i=0;
  71.     char categoria;
  72.     p2=fopen("salario.dat","wb+");
  73.  
  74.     while(i<4){
  75.      ficha.categoria='0';
  76.      ficha.salario=0;
  77.      fwrite(&ficha,sizeof(tcategoria),1,p2);
  78.      i++;
  79.      }
  80.      rewind(p2);
  81.      printf("\n\n");
  82.      do{
  83.       fflush(stdin);
  84.           do{
  85.             printf("\n Introduce categoria(A-D)/0(cero) para fin: ");
  86.             scanf("%c",&categoria);
  87.             categoria=toupper(categoria);
  88.             fflush(stdin);
  89.             }while((categoria!='0')&&(categoria<'A'||categoria>'D'));
  90.             if(categoria!='0'){
  91.             fseek(p2,sizeof(tcategoria)*(categoria-65),SEEK_SET);
  92.             fread(&ficha,sizeof(tcategoria),1,p2);
  93.             if(ficha.categoria!='0'){
  94.             printf("\n categoria ya introducida");
  95.             }
  96.             else{
  97.             ficha.categoria=categoria;
  98.             printf("\n Introduce sueldo: ");
  99.             scanf("%d",&ficha.salario);
  100.             fflush(stdin);
  101.             fseek(p2,sizeof(tcategoria)*(categoria-65),SEEK_SET);
  102.             fwrite(&ficha,sizeof(tcategoria),1,p2);
  103.             }
  104.               }
  105.                 }while(categoria!='0');
  106.  
  107.           printf("\n\n");
  108.           printf(" Listado del archivo salario");
  109.           for(i=0;i<4;i++){
  110.           fseek(p2,sizeof(tcategoria)*(i),SEEK_SET);
  111.           fread(&ficha,sizeof(tcategoria),1,p2);
  112.           printf("\n categoria: %c",ficha.categoria);
  113.           printf("\n sueldo: %d",ficha.salario);
  114.           }
  115.           fclose(p2);
  116.           getch();
  117.           }
  118.  
  119.    void mostrar(){
  120.  
  121.         FILE *p1;
  122.         FILE *p2;
  123.         ttrabajador ficha1;
  124.         tcategoria ficha2;
  125.         int clave;
  126.  
  127.    p1=fopen("trabajadores.dat","rb+");
  128.    p2=fopen("salario.dat","rb+");
  129.  
  130.    if(p1==NULL){
  131.    printf("\n No se puede abrir trabajadores.dat");
  132.               }
  133.                 else{
  134.                      if(p2==NULL){
  135.                      printf("\n no se puede abrir salario.dat");
  136.                      }
  137.                      else
  138.                      {
  139.                   printf("\n\n Clave     nombre     categoria     salario");
  140.                   printf("\n********************************************\n");
  141.                   fread(&ficha1,sizeof(ttrabajador),1,p1);
  142.                   while(!feof(p1)){
  143.                   printf("%-4d",ficha1.clave);
  144.                   printf("%20s",ficha1.nombre);
  145.                   printf("%10c",ficha1.categoria);
  146.                   fseek(p2,sizeof(tcategoria)*(ficha1.categoria-65),SEEK_SET);
  147.                   fread(&ficha2,sizeof(tcategoria),1,p2);
  148.                   printf("%15d",ficha2.salario);
  149.                   }
  150.                   fclose(p1);
  151.                   fclose(p2);
  152.                   }
  153.                      }
  154.                        getch();
  155.                           }
  156.  
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*'

Código
  1. p[i] = malloc(sizeof *p[i]);

En esta linea me indica error, lo copile con dev-c++
Páginas: 1 2 [3] 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines