Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: JOSE23 en 21 Febrero 2011, 16:09 pm



Título: Raiz cuadrada en c
Publicado por: JOSE23 en 21 Febrero 2011, 16:09 pm
HOLA, TENGO QUE HACER UN EJERCICIO DE CLASE, ES EL SIGUIENTE.

Introducir dos números enteros y positivos (M y N). Diseñar un programa que calcule la raiz cuadrada de todos los números enteros comprendidos entre ambos (inclusive), mostrando tanto el número como su raiz en dos columnas. SOLO SE PUEDE UTILIZAR EL FOR.

El problema lo tengo con la raíz, no se como sacarlas. Agrego el codigo por si alguien puede darme una posible solución...

Código:


#include <stdio.h>
#include <math.h>
// Función Principal
main ()
{
int i,m,n,num;
double raiz;
raiz=sqrt(i);
printf ("\n Introduce el primer numero, el mayor (ENTERO Y POSITIVO): ");
scanf  ("%i",&m);
printf ("\n Introduce el segundo numero, el menor (ENTERO Y POSITIVO): ");
scanf  ("%i",&n);

for (i=n;i<=m;i++)
    if (i%2==0) printf ("\n NUMERO ENTERO %i\tRAIZ %lf",i,raiz);
   
   
fflush(stdin);
getchar();
}



Título: Re: Raiz cuadrada en c
Publicado por: Ferno en 21 Febrero 2011, 16:19 pm
Mira bien lo que estás haciendo.
Estás declarando una variable de tipo int "i" y luego usas sqrt(i) a dicha variable.
Pero dicha variable no posee NINGUN VALOR. Apenas la creaste!!
Esa función sqrt(i) debes aplicarla a cada valor que se encuentre entre tu N y tu M, por ende, debe poseer un valor diferente cada vez que se utiliza, por ende, debe ir dentro del ciclo for.

PD: Revisa bien ese error, y piensa en lo que hiciste! Le estás sacando raiz cuadrada a la nada, debido a que no le asignaste ningún valor a la variable "i". (De más está decir que tampoco cumplía con lo pedido en tu enunciado)


Título: Re: Raiz cuadrada en c
Publicado por: JOSE23 en 21 Febrero 2011, 16:32 pm
Y como puedo decirle al programa que cada vez que se utiliza sqrt debe de tener un valor diferente, no lo entiendo


Título: Re: Raiz cuadrada en c
Publicado por: satu en 21 Febrero 2011, 16:58 pm
- Pides el valor de M y N
- for( i = N, i<=M, i++)
-- raiz = sqrt(i)
-- Muestras i y raiz

EDITO: he añadido guiones (-) para que se entienda mejor


Título: Re: Raiz cuadrada en c
Publicado por: JOSE23 en 21 Febrero 2011, 17:12 pm
haciendo lo que me indica Satu; solo consigo que me diga la raiz de un numero, no de cada uno de los valores...


Título: Re: Raiz cuadrada en c
Publicado por: Ferno en 21 Febrero 2011, 17:27 pm
No, porque dentro del for, el valor de la variable "i" va iterando, creciendo de 1 en 1. Por ende, cada vez que se ejecute sqrt en el for, te dirá la raiz de cada valor que toma "i" (el cual, como te dije, va aumentando)


Título: Re: Raiz cuadrada en c
Publicado por: satu en 21 Febrero 2011, 17:28 pm
Hola

Postea lo que hayas hecho basándote en lo que te he dicho para que veamos donde falla

Saludos


Título: Re: Raiz cuadrada en c
Publicado por: JOSE23 en 21 Febrero 2011, 17:31 pm
Código:
main ()
{
int i,m,n,num,a;
double raiz;

printf ("\n Introduce el primer numero, el mayor (ENTERO Y POSITIVO): ");
scanf  ("%i",&m);
printf ("\n Introduce el segundo numero, el menor (ENTERO Y POSITIVO): ");
scanf  ("%i",&n);

for (i=n;i<=m;i++)
    if (i%2==0)
for (i=n;i<m;i++)
raiz=sqrt(i);

 printf ("\n NUMERO ENTERO %i\t RAIZ %lf",i,raiz);
fflush(stdin);
getchar();
}


Título: Re: Raiz cuadrada en c
Publicado por: satu en 21 Febrero 2011, 17:38 pm
Código
  1. main ()
  2. {
  3. int i,m,n,num,a;
  4. double raiz;
  5.  
  6. printf ("\n Introduce el primer numero, el mayor (ENTERO Y POSITIVO): ");
  7. scanf ("%i",&m);
  8. printf ("\n Introduce el segundo numero, el menor (ENTERO Y POSITIVO): ");
  9. scanf ("%i",&n);
  10.  
  11. for (i=n;i<=m;i++)
  12.   // if (i%2==0)       esto sobra, solo sirve para comprobar si un numero es par
  13.   // for (i=n;i<m;i++)      esto tambien sobra
  14.        {  // esto es lo que te faltaba
  15.        raiz=sqrt(i);
  16.        printf ("\n NUMERO ENTERO %i\t RAIZ %lf",i,raiz);
  17.        }
  18. // fflush(stdin);    esto = caca
  19. }
  20.  


Título: Re: Raiz cuadrada en c
Publicado por: JOSE23 en 21 Febrero 2011, 17:43 pm
Gracias, me parece que me complico yo solo


Título: Re: Raiz cuadrada en c
Publicado por: satu en 21 Febrero 2011, 17:50 pm
De nada, para eso estamos.

He visto que cometes algunos errores, como por ejemplo incluir librerias de C como stdio.h (en el título pones C++) o fflush(stdin)
Para C++ debes incluir <cstdio> o <cmath> sin el .h

Léete esto (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html) que escribió LH que te vendrá muy bien

Saludos


Título: Re: Raiz cuadrada en c
Publicado por: JOSE23 en 21 Febrero 2011, 18:06 pm
Estoy utilizando el programa Dev - C++