Raiz cuadrada en c

Iniciado por JOSE23, 21 Febrero 2011, 16:09 PM

0 Miembros y 1 Visitante están viendo este tema.

JOSE23

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...




#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();
}


Ferno

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)

JOSE23

Y como puedo decirle al programa que cada vez que se utiliza sqrt debe de tener un valor diferente, no lo entiendo

satu

#3
- 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
Breakbeat como forma de vida

JOSE23

haciendo lo que me indica Satu; solo consigo que me diga la raiz de un numero, no de cada uno de los valores...

Ferno

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)

satu

Hola

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

Saludos
Breakbeat como forma de vida

JOSE23


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();
}

satu

Cita de: JORIPICO en 21 Febrero 2011, 17:31 PM

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)       esto sobra, solo sirve para comprobar si un numero es par
   // for (i=n;i<m;i++)      esto tambien sobra
        {  // esto es lo que te faltaba
        raiz=sqrt(i);
        printf ("\n NUMERO ENTERO %i\t RAIZ %lf",i,raiz);
        }
// fflush(stdin);    esto = caca
getchar();
}

Breakbeat como forma de vida

JOSE23

Gracias, me parece que me complico yo solo