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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: [1] 2
1  Programación / Programación C/C++ / obtener la media de una serie de números en: 22 Junio 2010, 20:21 pm
Hola, quiero obtener la media de una serie de números almacenados en un vector. He definido un vector de 100 elementos, pero no lo quiero llenar todo. Uso el bucle while  para introducir la cantidad de números que yo quiera. En el momento que me pregunta otro? le doy que no y me sale esto: La media es -36046567217453303226519490776462834093195326687546261483049571502083785345215250433915316893387385717851675440677491564514894938068961058035063788649341798672398777324866008790631210573116460943674979154620314287199762365252556423138115833356791091699933773824.000000

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define TAM 100
  5.  
  6. int main(){
  7.        double v[TAM];
  8.        int i=0;
  9.        char op='s';
  10.        double media = 0.0;
  11.  
  12.        while((op == 's' || op == 'S') && i < TAM){
  13.            printf("Introduce un número: ");
  14.            scanf("%lf", &v[i]);
  15.            i++;
  16.            printf("Otro? (s/n)");
  17.            scanf("%1s", &op);
  18.        }
  19.  
  20.  
  21.        for(i=0; i<TAM; i++){
  22.           media += v[i];
  23.        }
  24.        media = media/TAM;
  25.        printf("La media es %lf\n", media);  
  26. }
  27.  
2  Programación / Programación C/C++ / leer cadenas de un fichero binario y mostrarlas por pantalla en: 15 Junio 2010, 13:59 pm
Hola, el siguiente programa escribe cadenas en un fichero binario, luego las lee del fichero y finalmente las muestra por pantalla:

Código
  1. #include <stdio.h> //escribe una cadena en un fichero y después lo lee y escribe en pantalla
  2. #include <string.h>
  3.  
  4. struct registro{
  5.   char nombre[50];
  6. };
  7.  
  8.  
  9. int   main ()
  10.   {
  11.      FILE *fich;
  12.      char nom_fich[50];
  13.      char op;
  14.  
  15.      struct registro datos;
  16.  
  17.      printf("Introduzca nombre del fichero: ");
  18.      scanf("%49s",nom_fich);
  19.      /* Escritura del float en el fichero */
  20.      if ((fich = fopen (nom_fich, "wb")) == NULL)
  21.         {
  22.         printf ("Error de creación del fichero\n");
  23.  
  24.         }
  25.       else{
  26.          do{
  27.           printf("Introduce una cadena: ");
  28.           scanf("%49s",datos.nombre);
  29.           fwrite (&datos, sizeof (datos), 1, fich);
  30.           printf("¿Otro? (s/n)");
  31.           scanf("%1s",&op);
  32.          }while((op == 's') || (op == 'S'));
  33.       }
  34.       fclose (fich);
  35.  
  36.       /* Lectura del float del fichero */
  37.      if ((fich = fopen (nom_fich, "rb")) == NULL)
  38.         {
  39.         printf ("Error de existencia del fichero\n");
  40.  
  41.         }
  42.      else{
  43.          fread (&datos, sizeof(datos), 1, fich);
  44.          while(!feof)
  45.             fread (&datos, sizeof(datos), 1, fich);
  46.      }
  47.      fclose (fich);
  48.  
  49.      printf ("%s\n", datos.nombre);
  50.   }
  51.  

Cuando lo compilo sólo me imprime la primera cadena, ¿por qué? Por favor, contestadme pronto esta tarde tengo examen de recuperación. Gracias.
3  Programación / Programación C/C++ / ejercicio de examen en: 8 Junio 2010, 20:55 pm
Hoy he tenido el examen y el enunciado es este, a ver si hay alguien que pueda resolverlo.
Según nos ha dicho el profesor no es necesario definir el struct.
Me ha salido de pena el examen.

Escribe un programa en C, que estará formado por un módulo principal y por un módulo que será llamado desde el anterior. El programa principal deberá leer de teclado el nombre de 12 ficheros con los datos de las ventas de cada mes del año y cada una de estas ventas está formada por un registro (struct venta) que incorporamos mediante el fichero ventas.h. El programa principal debe crear un fichero donde guardará el valor mayor de cada uno de los 12 ficheros. El proceso consistirá en:

     1.    Crear el fichero para los valores mayores de las ventas (max_ventas.dat).
     2.    Leer los 12 nombres de ficheros.
     3.    Por cada fichero con ventas, lo abrirá y le pasará el puntero a fichero al otro módulo que se encargará de buscar el registro con valor de venta mayor (el campo a usar es total_venta), devolviendo este registro al programa principal.
     4.    Grabar en el fichero el registro que nos ha devuelto el módulo que busca el mayor.
     5.    Cerrar el fichero max_ventas.dat y terminar el programa.
4  Programación / Programación C/C++ / buscar deuda mayor en: 7 Junio 2010, 15:44 pm
Hola, tengo el siguiente ejercicio que pide los datos de los clientes y quiero hacer un subprograma que me busque la deuda mayor y la muestre por pantalla. Lo he intentado, pero no me sale, me da errores.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define LEE_CHAR(c)\
  6. c=getchar();\
  7. while((c=='\n') || (c==' ') || (c=='\t'))\
  8. c=getchar();
  9.  
  10. #define LEE_CAD(c,n) { int i=0; \
  11.                      c[i]=getchar();\
  12.     while((c[i]=='\n') || (c[i]=='\t')) c[i]=getchar();\
  13.     while ((c[i]!='\n') && (i < (n-1))){ \
  14.        i++;\
  15. c[i]=getchar(); }\
  16.     c[i]='\0'; }
  17.  
  18. #define TAM_NOMBRE 100
  19. #define TAM_DIR 100
  20. #define NUM_CLIENTES 10
  21. struct cliente{
  22. char nombre[TAM_NOMBRE];
  23.        char direccion[TAM_DIR];
  24.        double deuda;
  25. };
  26. int main(){
  27. void crear_fich();
  28.        void deuda_mayor();
  29.        char sel;
  30. FILE *pf; //Puntero a fichero
  31.  
  32.        /* Abre el fichero para trabajar con él en Lectura / Escritura */
  33.        if((pf = fopen("datos.dat", "wb+")) == NULL) {/*"rb+"*/
  34.           /* Si no existe, ejecuta el módulo que lo cree */
  35.   crear_fich();
  36.   /* Una vez creado lo habre en lectura/escritura */
  37.           if((pf = fopen("datos.dat", "rb+")) == NULL) {
  38. perror("Fichero no accesible");
  39.                exit(1);
  40.   }
  41.        }
  42.  
  43. do{
  44. printf("MENÚ\n----\n");
  45.  
  46. printf("1). Dar de alta un cliente.\n");
  47.                printf("2). Mostrar la deuda mayor.\n");
  48.                printf("3). salir y eliminar.\n");
  49.                printf("0). Salir\n\nOpción(0-2): ");
  50.  
  51. do{
  52. LEE_CHAR(sel);
  53. }while( (sel<'0') || (sel>'3') );
  54.  
  55. switch(sel){
  56. case '1':{
  57. crear_fich(pf);
  58.    /* Una vez creado lo abre en lectura/escritura */
  59.    if((pf = fopen("datos.dat", "rb+")) == NULL) {
  60. perror("Fichero no accesible");
  61.                 exit(2);
  62.    }
  63. break;}
  64.                                case '2':{ deuda_mayor(pf);
  65.                                        break;}
  66.                                case '3':{ fclose(pf); pf=NULL; remove("datos.dat"); sel= '0';
  67. break;}
  68.                } //switch
  69. }while(sel!='0');
  70.  
  71. exit(0);
  72. }//main()
  73. ////////////////////////////////////////
  74. void crear_fich(FILE* pf) {
  75.         struct cliente cli[NUM_CLIENTES];
  76.         int i=0;
  77.         char otro;
  78.  
  79. if((pf = fopen("datos.dat", "ab")) == NULL) {
  80. perror("Al crear el fichero de datos");
  81.                exit(2);
  82.         }
  83.  
  84.         /* Lectura de los ciclistas */
  85.         do {
  86.  
  87. cli[i].deuda = 0.0;
  88.                printf("Nombre: "); LEE_CAD(cli[i].nombre, TAM_NOMBRE);
  89.                printf("Dirección: "); LEE_CAD(cli[i].direccion, TAM_DIR);
  90.                printf("Deuda: "); scanf("%lf", &cli[i].deuda);
  91.                /*Escribe el cliente en el fichero */
  92.                fwrite(&cli, sizeof(struct cliente), 1, pf);
  93. printf("¿Otro? (s/n) ");
  94.                LEE_CHAR(otro);
  95.        }while((otro=='s') || (otro=='S'));
  96. if(fclose(pf) == EOF){
  97. printf("Error al cerrar el fichero, compruebe si hay información.\n");
  98.                exit(3);
  99.        }
  100. } /* crear_fich()*/
  101. //////////////////////////////////
  102. void deuda_mayor(FILE *pf){
  103.        struct cliente cli[NUM_CLIENTES];  
  104.        int i=0;
  105.        int deuda_mayor;
  106.        deuda_mayor=0;
  107.        for(i=0; i<NUM_CLIENTES; i++){
  108.            rewind(pf);
  109.            fread(&cli,sizeof(struct cliente),1,pf);
  110.            while(!feof(pf)){
  111.                for(i=1; i<NUM_CLIENTES; i++){
  112.                   if(cli[i].deuda > cli[deuda_mayor].deuda);
  113.                      deuda_mayor=i;
  114.                }
  115.            }
  116.            printf("%s %.2lf\n", cli[deuda_mayor].nombre,cli[deuda_mayor].deuda);
  117.        }
  118. }

Cuando le doy la opción 2 que es mostrar la deuda mayor no hace nada.




5  Programación / Programación C/C++ / sustiyuir el salto de linea por coma en: 6 Junio 2010, 21:34 pm
Hola, tengo un fichero binario con varios registros, lo que quiero es sustituir el salto de linea que separa a cada registro por una coma, para así a la hora de imprimirlos me saga cada registro separado por una coma.

Primero se trata de abrir el fichero binario en lectura ir leyendo caracter a caracter y en cuanto encuentra el salto de linea sustituirlo por la coma y cuando llegue al final cerrar el fichero.

Yo he empezado haciendo esto, pero me da error de lectura.

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.         char nom_fich[50];
  5.         char caracter;
  6.         FILE *pf;
  7.  
  8.         printf("Introduzca nombre del fichero: ");
  9.         scanf("%49s", nom_fich);
  10.  
  11.         if((pf = fopen("datos.dat", "rb")) == NULL) {
  12. printf("Error al abrir el fichero.\n");
  13.         }
  14.         else{
  15.             caracter = getc(pf);
  16.             while(caracter != EOF){
  17.                printf("%c", caracter);
  18.                caracter = getc(pf);
  19.             }
  20.             if(feof(pf)==0){
  21.               printf("Error de lectura.\n");
  22.             }
  23.             fclose(pf);
  24.         }
  25.         return(0);
  26. }
6  Programación / Scripting / acceso directo a página web en: 2 Junio 2010, 13:23 pm
Hola, tengo que crear un script en visual basic que cree un enlace a la página web www.google.com. En el programa aparecerá un menú donde elegiremos donde crear el enlace. El enlace se podrá crear en el escritorio (Desktop) o en mis documentos (My Documents). Si no se introduce ninguna de las dos opciones anteriores o es incorrecto nos dará un mensaje de error.

Es una de las preguntas que me han salido en el examen y he sacado un 4. Me gustaría que me ayudarais a resolver este ejercicio, ya que no puedo practicar en casa porque no tengo Windows.
Si me podéis decir alguna pagina donde haya ejercicios resueltos de Visual Basic Script os lo agradecería. Gracias.
7  Programación / Programación C/C++ / ordenar por nombre o deuda con la función qsort en: 2 Junio 2010, 13:21 pm
El siguiente programa ordena los nombres alfabéticamente usando qsort, lo que quiero es mediante un switch darle la opción de ordenar por el nombre u ordenar por la deuda. Lo he intentado varias veces y no me sale. Este es el código:

Código
  1. /* Programa de ejemplo de gestió de memoria dinámica. El programa tomará
  2. los registros de un fichero y reservará la memoria necesaria para poder
  3. guardarlos en memoria y ordenarlos con el qsort(), una vez ordenados los
  4. volverá a guardar en el fichero */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9. /* macro para leer cadenas con caracteres blanco filtrando los return y
  10.    blancos iniciales  */
  11. #define lee_cad(cad,n,fin) cad[0]=getchar(); \
  12.                            while(((int)cad[0] == 10) || ((int)cad[0] == 32)) \
  13.                               cad[0]=getchar();\
  14.                            n=0; \
  15.                            while(((int)cad[n]!= 10) && (n < fin)){ \
  16.               n++; cad[n]=getchar();} \
  17.           cad[n]='\0';
  18.  
  19. struct registro{
  20.   char nombre[50];
  21.   float deuda;
  22. };
  23.  
  24. int main(){
  25.  FILE * df;
  26.  struct registro cliente;
  27.  int i,fin;
  28.  char op;
  29.  int num_registros;
  30.  struct registro *punt_memoria;
  31.  int compara();
  32.  
  33.  if((df=fopen("apuestas.dat","wb")) == NULL){
  34.     printf("\nError al crear el fichero apuestas.dat\n");
  35.     exit(1);
  36.  }
  37.  
  38.  
  39.  do{
  40.     printf("Nombre del apostante: ");
  41.     lee_cad(cliente.nombre,i,50);
  42.     //scanf("%49s",cliente.nombre);
  43.     printf("Deuda? ");
  44.     scanf("%f",&cliente.deuda);
  45.     fwrite(&cliente,sizeof(cliente),1,df);
  46.     printf("Otro(0 --> No / 1 --> Sí) ");
  47.     scanf("%d",&fin);
  48.  }
  49.  while(fin!=0);
  50.  
  51.  fclose(df);
  52.  
  53.  if((df=fopen("apuestas.dat","rb")) == NULL){
  54.     printf("\nError al abrir el fichero apuestas.dat\n");
  55.     exit(1);
  56.  }
  57.  /* Para ver cuantos registros hay en el fichero, pongo el puntero
  58.   al final, obtengo su posición y divido por el tamaño del registro */
  59.  fseek(df,0,SEEK_END);
  60.  
  61.  num_registros = ftell(df)/sizeof(cliente);
  62.  
  63.  /* Reservo la memoria necesaria para estos registros */
  64.  punt_memoria = (struct registro *)calloc(num_registros, sizeof(cliente));
  65.  
  66.  /* Leo los registro del fichero y los guardo en memoria */
  67.  
  68.  rewind(df); /* Llego el descriptor de fichero al principio */
  69.  /* Leo todos los registros y los guardo en la zona reservada de memoria */
  70.  fread(punt_memoria,sizeof(cliente),num_registros,df);
  71.  
  72.  fclose(df);
  73.  /* Ordeno el vector con qsort() */
  74.  
  75.  qsort(punt_memoria,num_registros,sizeof(cliente),compara);
  76.  
  77.  /* Guarda los registros ordenados en el fichero */
  78.  if((df=fopen("apuestas.dat","wb")) == NULL){
  79.     printf("\nError al crear el fichero apuestas.dat\n");
  80.     exit(1);
  81.  }
  82.  fwrite(punt_memoria,sizeof(cliente),num_registros,df);
  83.  fclose(df);
  84.  
  85.  /* Mostrar el contenido del fichero ordenado */
  86.  if((df=fopen("apuestas.dat","rb")) == NULL){
  87.     printf("\nError al abrir el fichero apuestas.dat\n");
  88.     exit(1);
  89.  }
  90.  fread(punt_memoria,sizeof(cliente),num_registros,df);
  91.  for(i=0; i < num_registros; i++)
  92.    printf("%s  %.1f\n",(punt_memoria+i)->nombre, (punt_memoria+i)->deuda);
  93.  fclose(df);
  94.  free(punt_memoria);
  95. } /* main() */
  96.  
  97. /* La función compara usa strcmp para ordenar alfabéticamente
  98.    el fichero */
  99.  
  100. int compara(struct registro *r1, struct registro *r2){
  101.    return(strcmp(r1->nombre, r2->nombre));
  102. }
8  Programación / Programación Visual Basic / decir si un caracter es vocal, consonante, número o signo de puntuación en: 24 Mayo 2010, 11:44 am
Hola, tengo que hacer un script que pida por teclado un carácter y determine si es una vocal, consonante, número o signo de puntuación. ¿Podéis echarme una mano?, ando muy perdida con esto de Visual Basic y el jueves tengo examen. Gracias.
9  Programación / Programación Visual Basic / ordenar tres numeros de teclado ascendentemente en: 24 Mayo 2010, 11:40 am
Hola, el siguiente script en Visual Basic ordena tres números tomados de teclado y quería saber si está bien:

Código
  1. Option Explicit
  2. Dim a, b, c
  3. var = InputBox("Introduce tre números:")
  4. MsgBox(a, b, c)
  5. If (( a > b) && (a > c)) Then
  6.    If (b > c)
  7.     MsgBox(c, b, a)
  8.    Else
  9.         MsgBox(b, c, a)
  10. End If
  11. If (( b > a) && (b > c)) Then
  12.      If (a > c)
  13.         MsgBox(c, a, b)
  14.      Else
  15.           MsgBox(a, c, b)
  16. End If
  17. If (( c > a) && ( c > b)) Then
  18.     If ( a > b)
  19.        MsgBox(b, a, c)
  20.     Else
  21.          MsgBox(a, b, c)
  22. End If
10  Programación / Programación Visual Basic / una subcadena dentro de una cadena en: 23 Mayo 2010, 18:31 pm
Hola, tengo que hacer un script en visual basic que me cuente cuantas veces aparece una subcadena dentro de una cadena. No me aclaro Ej: estrella La letra e aparece dos veces
Debo introducir la cadena de teclado usando InputBox.
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines