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();
}
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)
Y como puedo decirle al programa que cada vez que se utiliza sqrt debe de tener un valor diferente, no lo entiendo
- 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
haciendo lo que me indica Satu; solo consigo que me diga la raiz de un numero, no de cada uno de los valores...
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)
Hola
Postea lo que hayas hecho basándote en lo que te he dicho para que veamos donde falla
Saludos
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();
}
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();
}
Gracias, me parece que me complico yo solo
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
Estoy utilizando el programa Dev - C++