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