C/Visual C - ayuda por fa

 
Vista:

ayuda por fa

Publicado por monica soto (6 intervenciones) el 20/08/2003 20:46:20
bueno tengo ke hacer un programa para la escuela, el cual me calcule la raiz cuadra sin utilizar la funcion sqtr, entonces me puse a investigar primero como se hace la raiz cuadrada porke ya no recordaba, ya ke tengo eso kiero empezar hacer el programa ya tengo mas o menos la idea de como hacerlo, pero el numero ke introduzca el usuario se tiene ke dividir en en parejas y no se si haya una funcion ke haga eso,porke para medir la cadena pues ya se ke se utiliza strlen, pero no se si haya una funcion ke separe la cadena como en visual ke esta mid, left, ritgh, epsero alguien me pueda ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda por fa

Publicado por BluSky (11 intervenciones) el 20/08/2003 21:34:39
Mónica, no entiendo muy bien lo que quieres pero intentaré contestarte basándome en tu última pregunta:
En C no hay (conozco) funcines similares a las que dices del VBasic. Pero te la preparas en un pis pas:
Te sacas copia de la cadena:
char *copia=new char[strlen(cadena_original)+1]
strcpy (copia, cadena_original)
y, supongamos que quieres extraer los 4 primeros caracteres de ésta: pues tiras un puntero a él y le pones un "\0":
char *p
p=copia+4
*p='\0'
y ahora, en Copia, tienes los 4 primeros caracteres.
Que los quieres por la derecha.... pues lo haces desde la derecha:
char *p
p=copia+strlen(copia)-4
(aquí sin "\0") y ahora en "P" tienes los 4 últimos.
Mira a ver si te vale con esto
Saludos
Sebas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda por fa

Publicado por monica soto (6 intervenciones) el 21/08/2003 07:25:54
bueno ya vez ke para hacer la raiz cuadrada tienes ke ir separando de dos en dos le cifra y eso es lo ke kiero hacer, agarrar las primeras dos cifras de izquierda a derecha para empezar hacer la riz cuadrada porke me dijeron ke no utilice el sqrt.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda por fa

Publicado por chuidiang (677 intervenciones) el 21/08/2003 10:32:54
Supongo que no tiene que ser con cadenas. El numero, suponiendolo entero, se acabará guardando en un int.
Para obtener en un int los numeros de 2 en 2 puedes usar la division y el modulo

int numero = 123456;

dosCifras = numero % 100; /* Estas son las dos ultimas cifras, es decir 56*/
numero = numero / 100; /* Esto da la division entera, sin decimales. Es decir 1234 */
dosCifras = numero %100; /* Otra vez las dos ultimas, es decir 34 */
etc

Metiendo esto en un bucle puedes obtener todos los grupos de 2 en 2 bastante rapido.

De todas formas, el metodo que pretendes utilizar me parece bastante engorroso. Te propongo otros

- Una pequeña trampa, que supongo no vale. La funcion pow() eleva un numero a otro. Si elevas a 0.5, estas haciendo la raiz cuadrada (sin usar sqrt() ;-) .
raiz = pow (numero, 0.5);
No hagas esto que seguro que te suspenden.

- Si tienes un nivel de matematicas algo avanzado, puedes hacer un desarrollo en serie de la raiz. Seguro que en algún libro de matemáticas o en internet lo encuentras y el programa se reduce a un bucle en el que se calcula la suma de un polinomio. Intenta buscar -- desarrollo en serie de Taylor de raiz cuadrada -- por internet.

- Utiliza un metodo de aproximacion. Creo que te lo cuento mejor con un poco de codigo. Si numero es del que quieres calcular la raiz, haces
min = 0;
max = numero;
raiz = (max + min)/2; /* raiz es donde guardaremos la raiz. Como valor inicial para probar, cogemos la mitad */

/* error es el error maximo que admitimos, puede ser, por ejemplo, 0.0001, es decir, cuatr
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar