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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Temas
Páginas: 1 2 3 4 [5] 6
41  Programación / Programación C/C++ / Crear y escribir cosas en un archivo en C? en: 12 Septiembre 2016, 01:04 am
Hola

Tengo que hacer un programa en el cual el usuario ingrese el documento, el nombre, y la nacionalidad. Como es una practica de structs, decidi poner las variables en un nuevo tipo de dato. Lo que tengo que hacer es crear un archivo de texto .txt y guardar todo el contenido en ese archivo.
Lo vengo haciendo pero quizas no estoy entendiendo bien del todo la funcion fprintf y al momento de ejecutar el codigo no guarda en el txt.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 5
  4. struct s_datos
  5. {
  6.    int doc;
  7.    char nombre[50];
  8.    char pais[70];
  9. };
  10. typedef struct s_datos t_dato;
  11.  
  12.  
  13. int main()
  14. {
  15.    FILE*arch=NULL;
  16.    int i=0;
  17.    char letraa,letrab;
  18.    t_dato persona[N];
  19.    arch=fopen("C:\\Users\\PC\\Desktop\\datos.txt","w");
  20.    if(arch==NULL)
  21.        return 0;
  22.    for(i=0;i<N;i++)
  23.    {
  24.        printf ("Ingrese el numero de documento: ");
  25.        scanf("%d",&(persona[i].doc));
  26.        letraa=getchar();
  27.        printf ("Ingrese el nombre: \n");
  28.        gets(persona[i].nombre);
  29.        printf ("Ingrese nacionalidad: \n");
  30.        gets(persona[i].pais);
  31.        letrab=getchar();
  32.        fprintf(arch,"%d,%s,%s\n",persona[i].doc,persona[i].nombre,persona[i].pais);
  33.        printf ("Llegue");
  34.    }
  35.  
  36. fclose(arch);
  37.    return 0;
  38. }
  39.  
42  Programación / Programación C/C++ / Ven algo raro en este codigo basico con structs? en C en: 11 Septiembre 2016, 22:23 pm
Hola

Tengo que hacer un programa en el cual a partir de un archivo .csv que se encuentra en mi escritorio, lo que tengo que hacer es leerlo y guardarlo en un arreglo. Este arreglo es un tipo de dato creado por mi (struct)
El tema es que cuando ejecuto el programa no sale nada, no tira error, simplemente queda la consola en negro.
En el archivo .csv estan los datos de 10 puntos (x e y).

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct punto
  5. {
  6.    int x;
  7.    int y;
  8.  
  9. };
  10. typedef struct punto tipoPunto;
  11.  
  12. void LECTURA (tipoPunto arreglo[10]);
  13.  
  14. int main()
  15. {
  16.    tipoPunto arreglo[10];
  17.    LECTURA(arreglo);
  18.  
  19.    return 0;
  20. }
  21. void LECTURA (tipoPunto arreglo[10])
  22. {
  23.    FILE*arch;
  24.    int i=0,j=0;
  25.    arch=fopen("C:\\Users\\Pablo-PC\\Desktop\\puntos.csv","r");
  26.    while (!feof(arch))
  27.    {
  28.        fscanf(arch,"%d,%d\n",&arreglo[i].x,&arreglo[i].y);
  29.        i++;
  30.    }
  31.    fclose(arch);
  32.  
  33.        for (j=0;j<10;j++)
  34.    {
  35.        printf ("Punto %d = %d - %d",i,arreglo[j].x,arreglo[j].y);
  36.    }
  37.  
  38. }
43  Programación / Programación C/C++ / Ordenar una matriz en C? en: 6 Septiembre 2016, 01:06 am
Hola

Tengo un problema con este ejercicio. Me piden ordenar una matriz de enteros, de menor a mayor usando burbujeo.
Lo que hago es realizar la carga aleatoria de la matriz, imprimirla y luego debo imprimir la matriz nuevamente pero modificada.

La cuestion es que me dan el siguiente codigo para hacer el burbujeo pero al ser bidimensional no le encuentro la logica, no puedo reconocer en este codigo de burbujeo la forma bidimensional

Código
  1. void ordenar(int a[], int longitud)
  2. {
  3. int i, j, aux;
  4. for (i = 0; i < longitud; i++)
  5. {
  6. for (j = i + 1; j < longitud; j++)
  7. {
  8. if (a[j] < a[i])
  9. {
  10. aux = a[i]; a[i] =
  11. a[j]; a[j] = aux;
  12. }
  13. }
  14. }
  15. }

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. void CARGA (int arreglo[3][3]);
  5. void IMPRIMIR(int arreglo[3][3]);
  6. void MODIFICAR(int arreglo[3][3]);
  7.  
  8. int main()
  9. {
  10.    srand(time(NULL));
  11.    int arreglo[3][3],arreglin[3];
  12.    printf ("La matriz sin modificar es : \n");
  13.    CARGA(arreglo);
  14.    printf ("\n");
  15.    IMPRIMIR(arreglo);
  16. printf ("\n");
  17. MODIFICAR(arreglo);
  18.  
  19.  
  20.  
  21.    return 0;
  22. }
  23. void CARGA (int arreglo[3][3])
  24. {
  25.    int fila=0,columna=0;
  26.  
  27.    while (fila<3)
  28.    {
  29.        arreglo[fila][columna]=rand()%11+1;
  30.        columna++;
  31.        arreglo[fila][columna]=rand()%11+1;
  32.        columna++;
  33.        arreglo[fila][columna]=rand()%11+1;
  34.        columna++;
  35.        fila++;
  36.        columna=0;
  37.    }
  38. }
  39.  
  40. void IMPRIMIR(int arreglo[3][3])
  41. {
  42. int fila=0,columna=0;
  43.  
  44. for (fila=0;fila<3;fila++)
  45. {
  46.     for (columna=0;columna<3;columna++)
  47.     {
  48.         printf (" %d ",arreglo[fila][columna]);
  49.     }
  50.     printf ("\n");
  51. }
  52.  
  53.  
  54.  
  55.  
  56. }
  57.  
  58. void MODIFICAR(int arreglo[3][3])
  59. {
  60.    int fila=0,columna=0;
  61.  
  62.    for (fila=0;fila<3;fila++)
  63.    {
  64.        for (columna=fila+1;columna<3;columna++)
  65.        {
  66.  
  67.  
  68.  
  69.  
  70.        }
  71.    }
  72. }
  73.  
  74.  
44  Programación / Programación C/C++ / Como hacer un shift a derecha en un char? en: 4 Septiembre 2016, 23:41 pm
Hola

Tengo problemas con el siguiente ejercicio "Realizar una función que efectúe el SHIFT A DERECHA completando con 0 desde la izquierda. Aplicarla en
un programa de ejemplo. "

Se hacerlo con el shift a la izquierda pero no me sale con el shift a derecha, ni tampoco se como completar con 0 desde la izquierda, estoy re perdido con este.

Basicamente el programa tiene que

- Pedir letra
- Realizar la funcion
- Mostrar la letra en binario.

Con el de la izquierda no tengo problemas y me quedo asi

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    char letra;
  7.    int i=7;
  8.    printf ("Ingrese una letra: \n");
  9.    letra=getche();
  10.    printf ("\n");
  11.    while (i>=0)
  12.    {
  13.        if (letra&(1<<i))
  14.        {
  15.            printf ("1");
  16.        }
  17.        else
  18.        {
  19.            printf ("0");
  20.        }
  21.  
  22.    i--;
  23.  
  24.  
  25.    }
  26.  
  27.  
  28.  
  29.  
  30.    return 0;
  31.  
  32.  
  33. }

Como tendria que modificarlo para que me quede como me piden?..Porque siempre use el izquierdo.
45  Programación / Programación C/C++ / (Consulta)En el While se saltea el Fgets o el Gets Nose porque en: 30 Agosto 2016, 00:44 am
Tengo que hacer un listado de equipos de futbol con sus respectivos puntos, partidos ganados, etc. El problema es que por el momento estoy haciendo la carga y en la primera pasada del ciclo va perfecto, ahora cuando empieza nuevamente se saltea la funcion fgets...Lo intente con fgets y con gets y ninguno de los 2 cambia el resultado.


El problema esta en esta linea 29.
En este caso puedo poner el fgets como lo puse o puedo poner "gets(nombre").



Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. void CARGA (char nombre[5][20],int arreglo[5][8]);
  5.  
  6. int main()
  7. {
  8.  
  9.    char nombre[5][20];
  10.    int arreglo[5][8];
  11.    CARGA(nombre,arreglo);
  12.  
  13.  
  14.  
  15.   return 0;
  16. }
  17.  
  18.  
  19.  
  20.  
  21.  
  22. void CARGA (char nombre[5][20],int arreglo[5][8])
  23. {
  24.      int i=0,total=0,ganado=0,empate=0,perdido=0,favor=0,contra=0,dif=0,puntito=0;
  25.  
  26.    while (i<5)
  27.    {
  28.        printf ("Ingrese el nombre del equipo: ");
  29.        fgets(nombre[i],20,stdin);
  30.        printf ("Ingrese la cantidad de partidos jugados: ");
  31.        scanf("%d",&total);
  32.        printf ("Ingrese la cantidad de partidos ganados: ");
  33.        scanf("%d",&ganado);
  34.        printf ("Ingrese la cantidad de partidos empatados: ");
  35.        scanf("%d",&empate);
  36.        printf ("Ingrese la cantidad de partidos perdidos : ");
  37.        scanf("%d",&perdido);
  38.        printf ("Ingrese la cantidad de goles a favor:  ");
  39.        scanf ("%d",&favor);
  40.        printf ("Ingrese la cantidad de goles en contra:  ");
  41.        scanf ("%d",&contra);
  42.        dif=favor-contra;
  43.        puntito=3*ganado+empate;
  44.  
  45.        arreglo[i][0]=puntito;
  46.        arreglo[i][1]=total;
  47.        arreglo[i][2]=ganado;
  48.        arreglo[i][3]=empate;
  49.        arreglo[i][4]=perdido;
  50.        arreglo[i][5]=favor;
  51.        arreglo[i][6]=contra;
  52.        arreglo[i][7]=dif;
  53.        i++;
  54.    }
  55. }
  56.  

Quizas es algo muy tonto pero no es la primera vez que me pasa y se hacerlo sin usar fgets o gets pero mi intencion ya que hace muy poco descubri estas funciones, es aprovecharla y ahorrar codigo.
46  Programación / Programación C/C++ / (Consulta) Porque no me funciona gets(string) en: 28 Agosto 2016, 18:09 pm
Hola

Quiero realizar un programa en donde me pida algunos datos y quiero guardar uno de ellos en un arreglo con la funcion gets(string). El problema es que al realizar la carga es como que se saltea la funcion y me pide ingresar los datos del proximo dato.

La parte donde falla es la siguiente

Código
  1.  fila=0;
  2.        printf ("\nIngrese el nombre del alumno: ");
  3.        gets(nombre);
  4.        printf ("\nIngrese el numero de comision:  ");
  5.        scanf ("%d",&comision);
  6.        printf  ("\n%s",nombre);
  7.  
  8.  

Al ejecutarlo directamente se saltea el gets y empieza por "Ingrese el numero de comision". A este codigo le faltan declarar variables, etc pero quizas no estoy entendiendo el funcionamiento de la funcion, que desventajas tiene ,etc o porque se saltea?.

Muchas gracias
47  Programación / Programación C/C++ / (Consulta) Duda sobre funcionamiento de la Funcion strcmp en: 27 Agosto 2016, 19:20 pm
Hola


Esta funcion devuelve 0 si las cadenas de texto son iguales (incluyendo mayúsculas y minúsculas); si la primera cadena es mayor que la segunda, devuelve un número positivo; si es mayor la segunda, devuelve un valor negativo..

Supongamos que tengo los siguientes arreglos:

 char s1[5] = "Abeja";
 char s2[5] = "Azul";

Mi duda es como se analiza cual es mayor o menor.
No entiendo como la funcion va recorriendo cada uno de los arreglos y decidir cual es mayor o menor.
La primera letra de ambos arreglos es la "A", luego ahi cambian de letra.
Como puedo pensar logicamente a esta funcion?....Va recorriendo letra x letra o que?...Y cuando dice mayor o menor se refiere al numero ascii de cada letra?
48  Programación / Programación C/C++ / (Consulta) Funcion FgetS en arreglo bidemensional en: 27 Agosto 2016, 04:22 am
Hola

Estoy recien empezando a ver archivos y queria saber como puedo copiar el contenido de un archivo de texto (.txt) en un arreglo bidemensional.
La idea seria que tengo un txt con varios nombres cargados

"Milan
Real Madrid
Ajax
Arsenal
Bayern Munich "

Y quiero pasar cada uno de los nombres a un arreglo de manera que si yo quiero imprimir el nombre "Milan", tendria que poner printf ("%s",arreglo[0]);

El codigo que hice hasta ahora es el siguiente.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    char arreglo[5][20],fila=0,columna=0,aux;
  7.    FILE* arch;
  8.    arch=fopen("C:\\Users\\Usuario\\Desktop\\Equipos.txt","r");
  9.  
  10.    while (!feof(arch))
  11.    {
  12.        fgets(arreglo,20,arch);
  13.  
  14.    }
  15.  
  16.  
  17.    fclose(arch);
  18.    return 0;
  19. }
  20.  

El problema es que al intentar poner un printf para que muestre lo que hay en la posicion 0, no me sale nada o sale cualquier cosa, entonces basicamente no entiendo lo que hace la funcion fgets.
Entiendo que copia linea por linea, pero no se la manera de pasar esto a un arreglo ya que no me sale.
49  Programación / Programación C/C++ / Problema de Burbujeo en una Matriz! en: 26 Agosto 2016, 03:43 am
Hola

Tengo el siguiente problema. Necesito cargar nombres en una matriz y ordenar esa lista basandome en la primera letra. El nombre que tenga la primera letra mas cercana a la "A" iria primero y el mas cercano a la "Z" ultimo.

El codigo que hice hasta ahora es el siguiente.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void IMPRIMIR(char arreglo[5][20]);
  4. void ORDENAR(char arreglo[5][20]);
  5. int main()
  6. {
  7.    char arreglo1[5][20];                ///ARREGLO DONDE GUARDO NOMBRES
  8.  
  9.    char letra='4';
  10.    int bandera=0;
  11.    int fila=0,columnachar=0;
  12.  
  13.  
  14.    while ((arreglo1[fila][0]!='\0' || bandera==0)&& fila<5)
  15.    {
  16.        printf ("\nIngrese el nombre :  ");
  17.  
  18.        while (letra!='\r')
  19.        {
  20.            letra=getche();
  21.            if (letra!='\r')
  22.            {
  23.                arreglo1[fila][columnachar]=letra;
  24.                columnachar++;
  25.            }
  26.            if (letra=='\r')
  27.            {
  28.                if (columnachar==0)
  29.                {
  30.                    bandera=1;
  31.                }
  32.                if (bandera==0)
  33.                {
  34.  
  35.                arreglo1[fila][columnachar]='\0';
  36.                fila++;
  37.                columnachar=0;
  38.                }
  39.  
  40.            }
  41.  
  42.        }
  43.        letra='4';
  44.  
  45.  
  46.    }
  47.    IMPRIMIR(arreglo1);
  48.  
  49.  
  50.    return 0;
  51. }
  52.  
  53.  
  54. void IMPRIMIR(char arreglo1[5][20])
  55. {
  56. int fila=0,columna=0;
  57.  
  58. printf ("\n");
  59.    while (fila<5)
  60.    {
  61.        printf ("%s\n",arreglo1[fila]);
  62.        fila++;
  63.    }
  64. }
  65.  
  66.  
  67.  
  68.  

Este codigo solo incluye la carga en la matriz...pero nose como ordenarlo.
Me dicen que tengo que ordenarlo basandome en este codigo

Código
  1. void ordenar(int a[], int longitud)
  2. {
  3. int i, j, aux;
  4. for (i = 0; i < longitud; i++)
  5. {
  6. for (j = i + 1; j < longitud; j++)
  7. {
  8. if (a[j] < a[i])
  9. {
  10. aux = a[i]; a[i] =
  11. a[j]; a[j] = aux;
  12. }
  13. }
  14. }
  15. }

El problema es que intento hacerlo pero no me sale...La tanda de ejercicios incluye que lo ordenemos basandonos en la primera letra, y luego en todas las letras;..

Teoricamente tendria que comparar a cada posicion con la de la otra fila y si es mayor, crear un auxiliar, guardarlo y luego cambiarlos de lugar y asi para cada uno, lo he intentado pero no hay caso.
50  Programación / Programación C/C++ / (Consulta) Ejercicio en C - Errores que no logro entender. en: 21 Agosto 2016, 17:33 pm
Hola

Estaba haciendo un ejercicio de mi practica de informatica. El ejercicio es el siguiente



El codigo que hice hasta ahora es el siguiente

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. void CARGADATOS(int arreglo2[5][8],int fila);
  5. void IMPRIMIR(char arreglo1[5][20],int arreglo2[5][8]);
  6. int main()
  7. {
  8.    char arreglo1[5][20];                ///ARREGLO DONDE GUARDO NOMBRES DE EQUIPOS
  9.    int arreglo2[5][8];                  ///ARREGLO DONDE GUARDO LOS NUMEROS
  10.    char letra='4';
  11.    int bandera=0;
  12.    int fila=0,columnachar=0;
  13.  
  14.  
  15.    while (arreglo1[fila][0]!='\0' && bandera==0 && fila<5)
  16.    {
  17.        printf ("\nIngrese el nombre del equipo:  ");
  18.  
  19.        while (letra!='\r')               ///SI ES DISTINTO DE ENTER, GUARDA EN EL ARREGLO LA LETRA Y AUMENTA COLUMNA
  20.        {
  21.            letra=getche();
  22.            if (letra!='\r')
  23.            {
  24.                arreglo1[fila][columnachar]=letra;
  25.                columnachar++;
  26.            }
  27.            if (letra=='\r')            ///SI ES UN ENTER, SI LA COLUMNA ESTA EN 0, PONGO BANDERA EN 1 ASI NO ENCTRA Y TERNINA EL CICLO
  28.            {
  29.                if (columnachar==0)
  30.                {
  31.                    bandera=1;
  32.                }
  33.                if (bandera==0)   /// SI ES UN ENTER Y LA BANDERA ESTA EN 0, LLAMO A LA FUNCION PARA CARGAR LOS NUMEROS, Y PONGO \0
  34.                {                 ///TERMINO LA FILA, PONGO UN \0, AUMENTA LA FILA Y LA COLUMNA LA VUELVO A 0..
  35.                CARGADATOS(arreglo2,fila);
  36.                arreglo1[fila][columnachar]='\0';
  37.                fila++;
  38.                columnachar=0;
  39.                }
  40.  
  41.            }
  42.  
  43.        }
  44.        letra='-4';    ///PONGO EN LETRA UN NUMERO PARA QUE ENTRE EN LA PROXIMA FILA.
  45.  
  46.    }
  47.    IMPRIMIR(arreglo1,arreglo2);
  48.  
  49.  
  50.  
  51.  
  52.    return 0;
  53. }
  54.  
  55. void CARGADATOS(int arreglo2[5][8],int fila)
  56. {
  57.    int columna=0,puntos=0,ganados=0,empatados=0,perdidos=0,golesafavor=0,golesrecibidos=0,diferencia=0,partidosjugados=0;
  58.  
  59.    printf ("Ingrese la cantidad de partidos jugados: ");
  60.    scanf ("%d",&partidosjugados);
  61.    printf ("Ingrese la cantidad de partidos ganados: ");
  62.    scanf ("%d",&ganados);
  63.    printf ("Ingrese la cantidad de partidos empatados: ");
  64.    scanf ("%d",&empatados);
  65.    printf ("Ingrese la cantidad de goles a favor: ");
  66.    scanf ("%d",&golesafavor);
  67.    printf ("Ingrese la cantidad de goles recibidos: ");
  68.    scanf ("%d",&golesrecibidos);
  69.  
  70.    puntos=ganados*3 + empatados;
  71.    diferencia=golesafavor-golesrecibidos;
  72.  
  73.  
  74.    arreglo2[fila][columna]=puntos;
  75.    columna++;
  76.    arreglo2[fila][columna]=partidosjugados;
  77.    columna++;
  78.     arreglo2[fila][columna]=ganados;
  79.    columna++;
  80.     arreglo2[fila][columna]=empatados;
  81.    columna++;
  82.     arreglo2[fila][columna]=perdidos;
  83.    columna++;
  84.     arreglo2[fila][columna]=golesafavor;
  85.    columna++;
  86.     arreglo2[fila][columna]=golesrecibidos;
  87.    columna++;
  88.     arreglo2[fila][columna]=diferencia;
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97. }
  98.  
  99. void IMPRIMIR(char arreglo1[5][20],int arreglo2[5][8])
  100. {
  101.    int fila=0,columna=0;
  102.  
  103.   for (fila=0;fila<5;fila++)
  104.   {
  105.       printf ("%s",arreglo1[fila]);    ///IMPRIMO EL NOMBRE DE UN EQUIPO
  106.       for (columna=0;columna<8;columna++)
  107.       {
  108.  
  109.           printf ("  %d  ",arreglo2[fila][columna]);  /// CON EL FOR DE ADENTRO IMPRIMO TODA LA COLUMNA DE NUMEROS.
  110.  
  111.  
  112.       }
  113.       printf ("\n");
  114.   }
  115.  
  116.  
  117.  
  118.  
  119. }
  120.  


El problema es que al momento de ejecutarlo tira todos numeros y letras raras. El compilador que uso es el codeblocks que informa si tengo algun error, en este caso lanzo lo siguiente que no logro entender que significa.

Linea 44

Warning: multi-character character constant (-Wmultichar)
Warning: overflow in implicit constant conversion (-Woverflow)
Páginas: 1 2 3 4 [5] 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines