Inquietud programa

Quería saber si me puedes ayudar con el siguiente ya que he adelantado cosas pero me falta algo y no he podido saber que es, adjunto el enunciado del programa
" Implementar un programa que devuelva el dígito n-esimo de un numero num de tipo long int, teniendo en cuenta que el dígito 0 es el dígito más a la derecha (el menos significativo). El programadebe imprimir -1 si el numero no tiene suficientes dígitos. Considere la posibilidad de que N pueda ser un numero negativo".
Ejemplos:
num. 3456 digito 0: imprime 6
num. -3456 digito 1: imprime 5
num. 3456 digito 4: imprime -1
El programa es este
#include <conio.h>
#include<stdio.h>
int
main(void)
{
int d, drev =0, digito, cont=0, pos, p;
printf( "Intro un numero: ");
scanf("%d", &d);
printf( "Intro posicion: ");
scanf("%d", &pos);
while(d > 0)
{
drev = drev * 10;
digito = d%10;
drev = drev + digito;
d = d / 10;
cont++;
}
printf("\nLa posicion es: %d es %d", pos);
getch();
}

1 Respuesta

Respuesta
1
Corregí tu código y aquí lo tienes:
#include<stdio.h>
#include<math.h>
int main(void) {
long int num;
int digito, cont=0, pos;
printf( "Intro un numero: ");
scanf("%d", &num);
printf( "Intro posicion: ");
scanf("%d", &pos);
num = abs(num);
while(num > 0) {
digito = num%10;
num = num / 10;
if (pos == cont) break;
cont++;
}
if (num == 0) digito=-1;
printf("\nEl digito en la posicion %d es %d",pos,digito);
}
Quite unas cuantas variables, le saque el valor absoluto al numero, para que no fastidie el signo -, puse una comparación para ver si es la posición que quiero y al ultimo si se salio del rango de dígito es -1.
Saludos.
PD: Intenta utilizar nombres de variables que no sean letras. Para los for (int i ..) el i esta bien, pero para un numero llamarlo de, como que me perdí en un comienzo ^^.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas