Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: r1ghtz0 en Marzo 09, 2012, 09:59:57 pm

Título: Ayuda con dos ejercicios en C
Publicado por: r1ghtz0 en Marzo 09, 2012, 09:59:57 pm
Buneas tardes estoy empezando a porgramar y quisiera que me ayudaran con estos ejercicios de Arrays en lenguaje C.

1- Escribir un programa que lea del teclado un vector de 10 numeros enteros, lo invierta y lo muestre nuevamente.

2- Escribir un programa que cuente el número de palabras de más de cuatro caracteres en una frase. Esta se almacena en forma de vector cuyo ultimo elemento es el caracter "." (punto).

Analicé los dos ejercicio paso por paso hasta llegar a una codificación más o meno lógica pero al final el compilador me tira un error y se cierra el programa, no coloqué la codificación aquí porque ya las borré en mi computadora.
Título: Re:Ayuda con dos ejercicios en C
Publicado por: aneraka en Marzo 09, 2012, 10:07:02 pm
Pues men sería buenos que pusieras algo, el foro es para ayudar mas no para hacer trabajos :)
Título: Re:Ayuda con dos ejercicios en C
Publicado por: r1ghtz0 en Marzo 09, 2012, 10:26:05 pm
Pues men sería buenos que pusieras algo, el foro es para ayudar mas no para hacer trabajos :)
En el primer ejercicio introdusco este codigo:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int vector[10], x, y, temp;
 
  scanf("%d", vector[11]);
 
  for(x= 0 ; x< 10 ; x++){
         for(y= 0 ; y<= 10 ; y++){
               if(vector
                    temp= vector
                    vector
                    vector[y]= temp;
                    }
               }
         }
         for(x= 0; x< 10 ; x++){
         printf("\n %d", vector
         }
 
  system("PAUSE");   
  return 0;
}

El compilador no invierte la cadena do los numeros si no, las desordena.
Título: Re:Ayuda con dos ejercicios en C
Publicado por: piou en Marzo 09, 2012, 11:22:00 pm
vector hace referencia a &vector[0], están mezclando direcciones de memoria con índices del array.

¿Qué es lo que pretendes que pase al hacer vector = temp? Respóndeme a esa pregunta, por favor, y te podré ayudar a entender mejor los arrays.

Te dejo un pseudo código a ver si te sale:

Código: [Seleccionar]
for i=0:n/2
   temp = vector[i];
   vector[i] = vector[n-1-i];
   vector[n-1-i] = i;
end

Probablemente no funcione tal cual, pero puedes coger la idea, deberás calibrar un poco los índices y tener en cuenta el caso n par/impar, al hacer n/2.
Título: Re:Ayuda con dos ejercicios en C
Publicado por: $i$tr0 en Marzo 10, 2012, 03:15:18 am
hola amigos del foro

soy novato en esto de programar  asi que estaba buscando que me explicaran como llenar un vector desde el teclado e imprimirlo bueno encontre como hacerlo
vi que aqui hay un ejercicio que trata de lo mismo y ademas imprimirlo al reves. tambien encontre la solucion pero no al 100%  ya que despues de imprimir los valores que le di al vector muestra unos valores basura y luego si muestra los valores al reves ¿que hacer para limpiar los valores basura que muestra?
pd:los code los tome de un tutorial
#include <stdio.h>
#include <stdlib.h>

int main()

{

      int vector[10];
      int numero;         

       for(numero=0;numero<=9;numero++)

      {

       printf("Numero para guardar en vector[%d]: ",numero);

       scanf("%d",&vector[numero]);           

      }
     
      for(numero=0;numero<=9;numero++)

      {

       printf("\nValor Vector[%d]=%d\n",numero,vector[numero]);

      }

    while(vector[numero++] !=9);
   
 
   
    while(numero>=0)
    printf("%d ",vector[numero--]);

   
getch();
}
Título: Re:Ayuda con dos ejercicios en C
Publicado por: Neutron en Marzo 10, 2012, 03:21:53 am
$i$tr0 como que editaste el mensaje no? Ya te habia pegado por mp el ejercicio pero veo que has hecho cambios. Como no tengo mucho tiempo ahora pongo lo mismo del mp xD
Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int vector[10],i;
 
 /*inicio un ciclo for para recibir los valores y llenar el vector*/ 
   
    for (i=0; i<10; i++)   
    {
    printf("\nIntrodusca el valor para la posicion %d: ",i);
     scanf("%d",&vector[i]);
    }
/* Aqui imprimos el vector al reves  */
     printf("\nLos valores del vector son: \n");
     for (i=9; i >= 0; i--)
    {
     printf("%d\n",vector[i]); 
    }
getchar();
return 0;
}

Ojo: Que has cambiado el codigo. Pero como estaba antes de editar se veia mas o menos asi, lo unico que ahi esta corregido el problema. En fin, la idea es que veas como entrar desde el teclado los valores e imprimirlo.

Espero que sirva.

Un saludo!
Título: Re:Ayuda con dos ejercicios en C
Publicado por: $i$tr0 en Marzo 10, 2012, 02:52:16 pm
ok amigo pero ahora el problema es que despues de imprimir los valores del vector se deben volver a imprimir pero esta vez al reves  con el while que le coloque lo hace pero antes escribe unos valores basura

¿como hago para limpiar esos valores?


gracias
Título: Re:Ayuda con dos ejercicios en C
Publicado por: hacker fashion en Marzo 10, 2012, 04:17:32 pm
Chicos a mi tambien podrian ayudarme con 2 programas en C?

1-Escribir un programa en C para resolver triangulos  rectangulos
a) encuentra el tercer angulo
b) encuentra la hipotenusa
c) encuentra un cateto

2- Escribir un programa en C que resuelva la ecuacion de 2do grado


Me ayudan?
Título: Re:Ayuda con dos ejercicios en C
Publicado por: piou en Marzo 10, 2012, 05:54:22 pm
Chicos a mi tambien podrian ayudarme con 2 programas en C?

1-Escribir un programa en C para resolver triangulos  rectangulos
a) encuentra el tercer angulo
b) encuentra la hipotenusa
c) encuentra un cateto

2- Escribir un programa en C que resuelva la ecuacion de 2do grado


Me ayudan?

Primero, ¿sabrías resolver eso con papel y lápiz?

Dinos lo que llevas y ayudamos.
Título: Re:Ayuda con dos ejercicios en C
Publicado por: Neutron en Marzo 10, 2012, 06:35:53 pm
ok amigo pero ahora el problema es que despues de imprimir los valores del vector se deben volver a imprimir pero esta vez al reves  con el while que le coloque lo hace pero antes escribe unos valores basura

¿como hago para limpiar esos valores?


gracias
Ya edite el mensaje, ahora lo imprime al reves, es simple, pero lo hize con bucle for para no escribir mucho xD

P.S: Te recomiendo el libro "La esencia de la logica de la programacion".

P.S2: Cuando postes codigo por favor ponnerlo entre [*code][*/code] (pero sin los asteriscos(*)) porque es dificil leer el codigo como los has puesto.

Saludos!
Título: Re:Ayuda con dos ejercicios en C
Publicado por: hacker fashion en Marzo 12, 2012, 01:30:08 am
Chicos a mi tambien podrian ayudarme con 2 programas en C?

1-Escribir un programa en C para resolver triangulos  rectangulos
a) encuentra el tercer angulo
b) encuentra la hipotenusa
c) encuentra un cateto

2- Escribir un programa en C que resuelva la ecuacion de 2do grado


Me ayudan?

Primero, ¿sabrías resolver eso con papel y lápiz?

Dinos lo que llevas y ayudamos.

No Piou aun no llevo nada de ninguno de los 2, estoy en blanco nose como hacerlo, hize un tercer programa que es con el unico que pude mira aqui lo dejo


 
Código: [Seleccionar]
/*
 * Nombre del programa: factorialUsuario.c
 * Fecha: 07-03-12
 *
 * Descripción:
 * Programa que calcula el factorial de un número
 * introducido por el usuario
 * DEBE utilizar el ciclo for
 */

#include <stdio.h>
int main (void){
 int numero, factorial, contar;

 printf("Hola\nVamos clacular un facorial\n");
 printf("Escribe un numero para calcularle el factorial: ");
 scanf("%d", &numero);
 factorial=numero;
 /* En un principio se asigna a la variable factorial
 * el valor inicial del usuario. Después viene la multiplicación*/

 for (contar=numero; contar>1; contar--){
 factorial=factorial*(contar-1);
 }

 printf("El factorial de %d es: %d \n", numero, factorial);
 getchar();
 return 0;

}

Título: Re:Ayuda con dos ejercicios en C
Publicado por: Moli en Marzo 12, 2012, 02:11:23 am
Hola hacker fashion xD un año sin saber de ti :) (apenas entré ayer y hice mi segunda presentación jejej) ¿cómo has estado?...espero que suuuuper chevere! ^^

creo que esto te ayuda a resolver el problema de la ecuación de segundo grado, no lo he corrido, lo hice directamente en vim y lo estoy post así, ya que si falta corrección aquí todos te ayudamos :D

Código: [Seleccionar]
/*
 * Calculo de ecuacion de segundo grado
 * by: ginny [Moli]
 */

#include <stdio.h>
#include <math.h>

main()
{
float x, x1, x2, a, b, c, discriminante;

if (a != 0)
    discriminante = b**2 -4 *a * c;
    if (discriminante >= 0)
        x1 = (-b + math.sqrt(discriminante)) / (2*a);
        x2 = (-b - math.sqrt(discriminante)) / (2*a);
        if (x1 == x2)
            printf("La solucion de la ecuacion es: %.2f\n", &x1);
        else
            printf("Las soluciones de la ecuacion son: x1=%.2f y x2=%.2f\n", &x1, &x2);
    else
        printf("No hay soluciones reales \n");
else
    if (b != 0)
        x = -c/b;
        printf("La solucion de la ecuacion es: x=%.2f\n", &x);
    else
        if (c != 0)
            printf("La ecuacion no tiene solucion\n");
        else
            printf("La ecuacion tiene infinitas soluciones\n");

return 0;
}

espero no tener tantos errores  :-\... nahh pero si le hacen la corección para que te funcione me parece super chevere :)



Y este de la misma forma lo hice y lo monté directamente (si tiene errores debug plis :)....)

Código: [Seleccionar]
/*
 * calculo de pitagoras, buscar la hipotenusa, un cateto y un angulo:
 * by ginny [Moli]
 */

#include<stdio.h>
#include<math.h>

main()
{

float angulo, angulo_resp, hip, cat_op, cat_ady;
int a, b, c, d;

/*menu de seleccion*/
printf("Pulse 1 si desea el calculo del angulo faltante\n");
scanf("%d", &a);

printf("Pulse 2 si desea el calculo de la hipotenusa\n");
scanf("%d", &b);

printf("Pulse 3 si desea el calculo del cateto Opuesto\n");
scanf("%d", &c);

printf("Pulse 4 si desea el calculo del Cateto Adyacente\n");
scanf("%d, &d);

if (a == 1)
    /* Consigue el valor del angulo faltante */
 
    printf("Ingresa el valor de un angulo: \n");
    scanf("%f", &angulo);
    angulo_resp = 180 - (90 + angulo);
    printf("El angulo faltante es: %.2f\n", &angulo_resp);

if (b == 2)
    /*Consigue el valor de la hipotenusa*/

    printf("Ingresa el valor del Cateto Opuesto\n");
    scanf("%f", &cat_op);

    printf("Ingresa el valor del Cateto Adyacente\n");
    scanf("%f", &cat_ady);

    hip = math.sqrt(cat_op**2 + cat_ady**2);
    printf("El valor de la hipotenusa es: %.2f\n", &hip);

if (c == 3)
    /*Consigue el cateto Opuesto*/
    printf("ingresa el valor del cateto Adyacente\n");
    scanf("%f", &cat_ady);

    printf("Ingresa el valor de la hipotenusa\n");
    scanf("%f", &hip);

    cat_op = math.sqrt(hip**2 - cat_ady**2);
    printf("El cateto Opuesto %.2f\n", &cat_op);

if (c == 4)
     
    /*Consigue el cateto Adyacente*/

    printf("Ingresa el valor del cateto Opuesto\n");
    scanf("%f", &cat_op);

    printf("Ingresa el valor de la hipotenusa\n");
    scanf("%f", &hip);

    cat_ady = math.sqrt(hip**2 - cat_op**2)
    printf("El valor del cateto Adyacente es: %.2f\n", &cat_ady);

return 0;
}

Existen otras formas de hacer esto, pero depende de los datos de entrada porque se podrían usar ángulos también y se obtienen respuestas a través de las funciones sen(x), cos(x), por mencionar un ejemplo...

Ya saben si ven errores debug plis y disculpen si son muchos... es que los hice tan rápido como pude porque no se la diferencia de horario :) (quizas en sus casas es madrugada  :-\)... por cierto existen otras formas de hacer un "menú" mucho más eficiente, pero al menos allí va la idea... :P
Título: Re:Ayuda con dos ejercicios en C
Publicado por: piou en Marzo 12, 2012, 04:43:53 pm
Bueno, es que me pareció raro porque son programas directos si sabes cómo hacerlo a papel y lápiz. Para la hipotenusa de un triángulo rectángulo, por pitágoras:

(http://www.texify.com/img/%5CLARGE%5C%21h%5E2%20%3D%20a%5E2%2Bb%5E2.gif)

Así que

(http://www.texify.com/img/%5CLARGE%5C%21h%20%3D%20%5Csqrt%7Ba%5E2%2Bb%5E2%7D.gif)

La librería math.h tiene la función sqrt() que peudes usar para hacer raíces cuadradas, o usar pow y elevar a ½.

Para la ecuación de segundo grado, la solución general es:

(http://www.texify.com/img/%5CLARGE%5C%21x%20%3D%20%5Cfrac%7B-b%5Cpm%20%5Csqrt%7Bb%5E2-4ac%7D%7D%7B2a%7D.gif)

Asegurándote siempre que a no sea igual a 0, para no dividir por 0, aunque en ese caso no sería una ecuación de segundo grado, y asegurándote también, si quieres soluciones reales, de que el determinante sea mayor que 0:
b²-4ac > 0
Título: Re:Ayuda con dos ejercicios en C
Publicado por: Moli en Marzo 12, 2012, 07:03:25 pm
Hola! :P....

Piou el code que puse si está bueno??
plis y gracias!.. es no mas para saber porque... lo monté sin compilar ni nada de nada...sinó lo quito?
Título: Re:Ayuda con dos ejercicios en C
Publicado por: piou en Marzo 12, 2012, 07:10:08 pm
A simple vista diría que sí, aunque sobra el ; detrás de un if en el primer código.
Título: Re:Ayuda con dos ejercicios en C
Publicado por: hacker fashion en Marzo 13, 2012, 04:51:40 am
Me estan ayudando demaciado chicos,  les debo una bien grande,  voy a probarlo en Geany y si todo sale correcto les pego las capturas del programa en ejecucion 
Título: Re:Ayuda con dos ejercicios en C
Publicado por: Moli en Marzo 13, 2012, 04:59:54 am
Super chevere! xD como has estado? hacker fashion.. por cierto cambié mi nick antes era Bi074, pero ahora usaré Moli, espero que me recuerdes  :'( ejje..me ausenté por un año..

Espero que el ejercicio corra adecuadamente :P
Título: Re:Ayuda con dos ejercicios en C
Publicado por: hacker fashion en Marzo 13, 2012, 05:02:23 am
Muy bien gracias Molitu como estas?   jaja si me di cuenta de tu cambio de nick, a que se debe?
Título: Re:Ayuda con dos ejercicios en C
Publicado por: Moli en Marzo 13, 2012, 05:07:55 am
Citar
[Muy bien gracias Molitu como estas?   jaja si me di cuenta de tu cambio de nick, a que se debe?

Super genial xD... grax por preguntar!!  ;)... ha es que así me dicen de cariño mis amigos y amigas y buee lo tomé como mi nick oficial! :D jejeje... Bi074 era bien... pero algo raro jajaj... Moli es casi que mi nombre ;)
Título: Re:Ayuda con dos ejercicios en C
Publicado por: hacker fashion en Marzo 13, 2012, 05:15:47 am
Ah y yo puedo decirte Moli verdad? jaja, te extrañe, tanto tiempo sin platicar =/
Título: Re:Ayuda con dos ejercicios en C
Publicado por: Moli en Marzo 13, 2012, 05:21:35 am
Oyeee claro! claro que si.... puedes decirme moli :)... si full tiempo perdida un año ... peroo.. ya estoy aquí en HxC  ;), sinceramente a este foro le tengo muucho cariño (tengo mi pequeña historia :D sobre el hacking y el HxC) y quiero de veras ayudar lo máximo que pueda :P
Título: Re:Ayuda con dos ejercicios en C
Publicado por: hacker fashion en Marzo 13, 2012, 05:28:51 am
jajaja lugo me cuentas esa historia no?  creeo que sera muy interesante!
Título: Re:Ayuda con dos ejercicios en C
Publicado por: dalrick en Marzo 13, 2012, 05:39:10 am
Moli and hacker fashion estan tomando el post para ellas solas xD...  ;D
Título: Re:Ayuda con dos ejercicios en C
Publicado por: hacker fashion en Marzo 13, 2012, 05:48:59 am
Haber si no me regaña Piou  mejor ya no dire nada, solo por inbox jaja