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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11
81  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.
82  Programación / Programación C/C++ / Re: Ayuda do-while en: 26 Agosto 2016, 03:38 am
Porque quizas no tenes mas codigo que ese?... :rolleyes:
Si vos cargas las 2 variables despues el programa no va a hacer nada..por lo que vemos tu codigo esta bien pero faltaria ver el resto.
83  Programación / Programación C/C++ / Re: (Consulta) Ejercicio en C - Errores que no logro entender. en: 21 Agosto 2016, 19:04 pm
Código
  1. letra='-4';

Letra es un char, no puede tener 2 simbolos, '-'  y '4'.

si quieres manejarlo como numeros entonces debe de ser un entero y se declara asi:

Código
  1. int letra;
  2. letra =4;
  3. //algo mas
  4. letra = -4;

No he visto que hace todo tu codigo pero eso es lo del error que preguntas.

Saludos

Hola

Muchas gracias, si tenes razon!, que tonto q soy, muchas gracias!
84  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)
85  Programación / Programación C/C++ / (Consulta) Operadores logicos en C - And - Or- Negado -etc. en: 25 Julio 2016, 21:19 pm
Hola

Tengo una consulta sobre este tipo de operadores. Por ejemplo en el siguiente codigo

Código
  1. int main()
  2. {
  3. int x;
  4. if (!(!(2<x) || (x>7)))
  5. {
  6.    printf ("Excelente");
  7. }
  8.  
  9. }

Este codigo lo que hace es que si x es mayor  o igual a 3 y x es menor o igual a 7, que entre al if y que imprima la palabra "Excelente".
Lo que no entiendo es en que momento del codigo, el || se vuelve un && y en que momento del codigo los <> se vuelven >= o <=.
Que es lo que hace el negado exactamente este tipo de situaciones?


86  Programación / Programación C/C++ / (Consulta) Problema con rand en C - Problema de multiple Choice en: 25 Julio 2016, 17:45 pm
Hola

Tengo el siguiente problema pero nose como resolverlo.

Complete la instruccion de asignacion apra que la variable x almacene un valor generado al azar que pertneezca al conjunto : 45,48,51,54,57,60,63,66,69,72,75

Actualmente hice lo siguiente

Código
  1. x=((4+rand()%4)*10)+5;

Esto me va a dar valores entre el 45 y el 75, pero nose como sumarle +3. Tengo pensando que tengo que usar otro rand adicional pero no se como armarlo.
87  Programación / Programación C/C++ / Re: (Consulta)Ejercicio de numeros amigos en C - Ayuda! en: 24 Julio 2016, 19:23 pm
Hola

Tengo el siguiente ejercicio

Realizar una función que reciba como parámetro un arreglo de enteros positivos (cuyo tamaño se desconoce, termina en 0). La función debe retornar la cantidad de parejas de “números amigos” presentes en el arreglo. Dos números amigos son dos números enteros positivos a y b tales que a sea la suma de los divisores propios de b, y b sea la suma de los divisores propios de a. (Divisores propios son todos los divisores menos el propio numero).  Un ejemplo es el par de naturales (220, 284), ya que:
los divisores propios de 220 son 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110, que suman 284;
los divisores propios de 284 son 1, 2, 4, 71 y 142, que suman 220.

Ej: Para el arreglo a={7,56,1184,2,6232,220,33,11,6368,1210,100,284,0}
la función deberá retornar 3 ya que estan presentes las parejas de amigos
(1184, 1210), (6232, 6368) y (220, 284),.

No debo usar arreglos auxiliares.
Hasta ahora hice lo siguiente:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 9001
  4. void carga(int arreglo[N]);
  5. void contador(int arreglo[N]);
  6. int suma(int numero);
  7. int suma2(int numero2);
  8. int main()
  9. {
  10. int arreglo[N];
  11. printf ("Ingrese arreglo:\n");
  12. carga(arreglo);
  13. contador(arreglo);
  14.  
  15.  
  16.  
  17.    return 0;
  18. }
  19.  
  20. void carga(int arreglo[N])
  21. {
  22.    int numerin=-1,i=0;
  23.  
  24.    do
  25.    {
  26.        scanf ("%d",&numerin);
  27.  
  28.            if (numerin!=0)
  29.            {
  30.                if (numerin>0)
  31.                {
  32.                    arreglo[i]=numerin;
  33.                    i++;
  34.  
  35.                }
  36.            }
  37.  
  38.    }
  39.    while (numerin!=0 && i<N);
  40.  
  41. arreglo[i]=0;
  42. }
  43.  
  44. void contador(int arreglo[N])
  45. {
  46.    int numerin,i=0,j=0,numero=0,sumatoria=0,contador=0,numero2=0,sumatoria2=0;
  47.  
  48.    for (i=0;arreglo[i]!=0;i++)
  49.    {
  50.        numero2=arreglo[i];    ///GUARDO EL NUMERO
  51.        sumatoria2=suma(numero2); ///HAGO LA SUMATORIA DE DIVISORES DE ESE NUMERO
  52.  
  53.        for (j=1;arreglo[j]!=0;j++)
  54.        {
  55.            numero=arreglo[j];  ///GUARDO ESTE NUEVO NUMERO
  56.            sumatoria=suma2(numero);   ///HAGO LA SUMATORIA DE DIVISORES DE ESE NUMERO
  57.            if (numero2==sumatoria && numero==sumatoria2)
  58.            {
  59.                contador++;
  60.            }
  61.        }
  62.    }
  63.  
  64.  
  65.    printf ("\n%d",contador);
  66.  
  67. }
  68. int suma(int numero2)
  69. {
  70.    int div=1,sumita=0;
  71.    for (div=1;div<numero2;div++)
  72.    {
  73.        if (numero2%div==0)
  74.        {
  75.            sumita=sumita+div;
  76.        }
  77.  
  78.  
  79.  
  80.  
  81.  
  82.    }
  83.    return sumita;
  84. }
  85. int suma2(int numero)
  86. {
  87.    int div=1,sumita=0;
  88.  
  89.    for (div=1;div<numero;div++)
  90.    {
  91.        if (numero%div==0)
  92.        {
  93.            sumita=sumita+div;
  94.        }
  95.  
  96.  
  97.    }
  98.    return sumita;
  99. }
  100.  

Lo que hice fue cargar el arreglo, luego usar un for dentro de un for. En el primer for guarde el numero y realice la sumatoria de divisores del numero, dentro del otro for hice lo mismo y luego hice un if para comparar ambos  y si son iguales, suma en el contador

El problema es que el resultado siempre me da el doble de lo que me tendria que dar y nose donde esta el error. He probado el codigo de la sumatoria de divisores por separado es correcto.
Asi que probablemente el error este en los 2 for pero nose cual es. Si me pueden ayudar se los agradezco

Hola, disculpas, ya lo solucione. El problema es que se repetian los valores en el for.

Si tengo 1,2,3,4,5,6,7,8,9,10.

Y supongamos el 1 y el 4 son parejas...cuando en el for llegue al 4, al analizar el arreglo, me va a tomar el 1 tmb por eso cuenta 2 veces, por eso en el for no tengo que analizar toodo el arreglo sino desde donde se quedo.
88  Programación / Programación C/C++ / (Consulta)Ejercicio de numeros amigos en C - Ayuda! en: 24 Julio 2016, 19:12 pm
Hola

Tengo el siguiente ejercicio

Realizar una función que reciba como parámetro un arreglo de enteros positivos (cuyo tamaño se desconoce, termina en 0). La función debe retornar la cantidad de parejas de “números amigos” presentes en el arreglo. Dos números amigos son dos números enteros positivos a y b tales que a sea la suma de los divisores propios de b, y b sea la suma de los divisores propios de a. (Divisores propios son todos los divisores menos el propio numero).  Un ejemplo es el par de naturales (220, 284), ya que:
los divisores propios de 220 son 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110, que suman 284;
los divisores propios de 284 son 1, 2, 4, 71 y 142, que suman 220.

Ej: Para el arreglo a={7,56,1184,2,6232,220,33,11,6368,1210,100,284,0}
la función deberá retornar 3 ya que estan presentes las parejas de amigos
(1184, 1210), (6232, 6368) y (220, 284),.

No debo usar arreglos auxiliares.
Hasta ahora hice lo siguiente:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 9001
  4. void carga(int arreglo[N]);
  5. void contador(int arreglo[N]);
  6. int suma(int numero);
  7. int suma2(int numero2);
  8. int main()
  9. {
  10. int arreglo[N];
  11. printf ("Ingrese arreglo:\n");
  12. carga(arreglo);
  13. contador(arreglo);
  14.  
  15.  
  16.  
  17.    return 0;
  18. }
  19.  
  20. void carga(int arreglo[N])
  21. {
  22.    int numerin=-1,i=0;
  23.  
  24.    do
  25.    {
  26.        scanf ("%d",&numerin);
  27.  
  28.            if (numerin!=0)
  29.            {
  30.                if (numerin>0)
  31.                {
  32.                    arreglo[i]=numerin;
  33.                    i++;
  34.  
  35.                }
  36.            }
  37.  
  38.    }
  39.    while (numerin!=0 && i<N);
  40.  
  41. arreglo[i]=0;
  42. }
  43.  
  44. void contador(int arreglo[N])
  45. {
  46.    int numerin,i=0,j=0,numero=0,sumatoria=0,contador=0,numero2=0,sumatoria2=0;
  47.  
  48.    for (i=0;arreglo[i]!=0;i++)
  49.    {
  50.        numero2=arreglo[i];    ///GUARDO EL NUMERO
  51.        sumatoria2=suma(numero2); ///HAGO LA SUMATORIA DE DIVISORES DE ESE NUMERO
  52.  
  53.        for (j=1;arreglo[j]!=0;j++)
  54.        {
  55.            numero=arreglo[j];  ///GUARDO ESTE NUEVO NUMERO
  56.            sumatoria=suma2(numero);   ///HAGO LA SUMATORIA DE DIVISORES DE ESE NUMERO
  57.            if (numero2==sumatoria && numero==sumatoria2)
  58.            {
  59.                contador++;
  60.            }
  61.        }
  62.    }
  63.  
  64.  
  65.    printf ("\n%d",contador);
  66.  
  67. }
  68. int suma(int numero2)
  69. {
  70.    int div=1,sumita=0;
  71.    for (div=1;div<numero2;div++)
  72.    {
  73.        if (numero2%div==0)
  74.        {
  75.            sumita=sumita+div;
  76.        }
  77.  
  78.  
  79.  
  80.  
  81.  
  82.    }
  83.    return sumita;
  84. }
  85. int suma2(int numero)
  86. {
  87.    int div=1,sumita=0;
  88.  
  89.    for (div=1;div<numero;div++)
  90.    {
  91.        if (numero%div==0)
  92.        {
  93.            sumita=sumita+div;
  94.        }
  95.  
  96.  
  97.    }
  98.    return sumita;
  99. }
  100.  

Lo que hice fue cargar el arreglo, luego usar un for dentro de un for. En el primer for guarde el numero y realice la sumatoria de divisores del numero, dentro del otro for hice lo mismo y luego hice un if para comparar ambos  y si son iguales, suma en el contador

El problema es que el resultado siempre me da el doble de lo que me tendria que dar y nose donde esta el error. He probado el codigo de la sumatoria de divisores por separado es correcto.
Asi que probablemente el error este en los 2 for pero nose cual es. Si me pueden ayudar se los agradezco
89  Programación / Programación C/C++ / (Consulta) Que significa este return en C? en: 23 Julio 2016, 23:28 pm
Hola


Tengo una duda. Supongamos que tengo un main en donde pongo la mayor parte de mi programa, luego desde el main invoco a otra funcion que sea de tipo int y tome como parametro un valor del main (por ejemplo un numero).

Supongamos que en la función tengo 2 variables llamadas "numero" (el que agarre del main) y "deb" una variable que cree dentro de la nueva función.

Cuando hago el return de esa funcion pongo "numero==deb".

Que significa?.
Basicamente mi pregunta significa que pasa cuando en el return igualo 2 variables ...Que valor retornaria?.


90  Programación / Programación C/C++ / Re: [Ayuda]Validar tarjeta de credito en: 22 Julio 2016, 07:21 am
Hola

Soy novato con el C asi que te voy a responder desde mis limitados conocimientos (tomalo con pinzas).(Si es que esto es C lo que pusiste)

En el main que vos tenes pedis los valores pares e impares.
Luego estas llamando a la funcion validar. Supongo que lo queres hacer en el programa es que te ingresen pares y si son todos pares Ok y si ingresan luego impares y son todos impares, Ok , tarjeta valida!.

Ahora despues vos tenes 2 funciones mas "sumoddever" y  "impar2".. Para mi el problema es que  vos no estas llamando a estas funciones en el main. Necesitas llamarlas en el main ya que lo que vos ingresas solo queda guardado en las variables que declaraste en el main y no en las que estas poniendo en las otras funciones.

Aparte fijate que en la funcion Validar vos le estas pasando el valor de "Val" que es una variable que declaraste en el main pero que no le pusiste ningun valor, puede ser 0 o basura lo mas probable.

Para mi lo que tenes que validar son los valores "ever" y "odd"..

Pero te repito soy novato, nose casi nada de C, mis conocimientos son muy basicos y quizaste estoy mandando fruta...pero si te sirvio lo que te dije , indicame un poco mas en detalle el programa que queres hacer o que queres que haga  y te lo armo.
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines