Título: Posición de un dígito Publicado por: lohayne en 15 Abril 2018, 20:00 pm hola
¿alguien podría ayudarme con una función en la que pongo un número y cualquier posición y el programa me devuelve el dígito del número que está en esa posición. De izquierda a derecha. Por ejemplo (358, 1) = 3 El dígito de 358 en la posición 1 es 3 Hice un código, pero la función relacionada con la posición sigue yendo mal Título: Re: Posición de un dígito Publicado por: Kenji-chan en 15 Abril 2018, 20:42 pm pon tu código
Título: Re: Posición de un dígito Publicado por: lohayne en 15 Abril 2018, 20:51 pm #include<stdio.h>
#include<math.h> int contdigitos(int &n); int posicao (int &num,int &n); int maiordig (int n); //main int main () { int n=0,pos,num; scanf("%i",&n); int numdigitos= contdigitos(n); int npos=posicao(num,n); printf("\n numero de digitos:%i",numdigitos); printf("\n entre com um numero: "); scanf("%d", &n); printf("coloque a posicao: "); scanf("%d", &pos); printf("%dth digit of %d is %d.\n", pos, n,npos); int largedig= maiordig(n); printf("maior digito:%i",largedig); return 0;} // numero de digitos int contdigitos(int &n) { if (n < 10) { return 1; } int contador = 0; while (n > 0) { n /= 10; contador++; } return contador; } //num = posição int posicao(int &num,int &n){ int r, t1, t2; t1 = pow(10, num +1); r = n % t1; if (num > 0) { t2 = pow(10, num); r = r / t2; } return r; } int maiordig (int n) { int digit, maior=0; while (n>0){ digit=n%10; if(digit>maior) maior=digit; n=n/10;} return maior ;} El ejercicio original se compone de 3 funciones, pero sólo la función que pide la posición va mal Título: Re: Posición de un dígito Publicado por: Kenji-chan en 15 Abril 2018, 21:05 pm por que no tratas el numero como un string (char*) de esa forma podras recorrer sus posición para saber que dígito ocupa que posición
de este modo Código
Título: Re: Posición de un dígito Publicado por: MAFUS en 15 Abril 2018, 22:32 pm Ahí va mi versión, desde 0. Se deben tener algunas consideraciones, tal y como muestra el código
Código
Título: Re: Posición de un dígito Publicado por: lohayne en 15 Abril 2018, 22:37 pm #include<stdio.h>
#include<math.h> int contdigitos(int &n); int maiordig (int &n); //main int main () { char numero [15]; int n,pos=0,num; scanf("%i",&n); int numdigitos= contdigitos(n); printf("\n numero de digitos:%i",numdigitos); int largedig= maiordig(n); printf("maior digito:%i",largedig); fprintf(stdout, "introduzca un digito: "); scanf("%s", numero); fprintf(stdout, "ntrodusca una posicion: "); scanf("%d", &pos); fprintf(stdout, "%dth digito de %s es %c.\n", pos, numero, numero[pos-1]); return 0;} // numero de digitos int contdigitos(int &n) { if (n < 10) { return 1; } int contador = 0; while (n > 0) { n /= 10; contador++; } return contador; } int maiordig (int &n) { int digit, maior=0; while (n>0){ digit=n%10; if(digit>maior) maior=digit; n=n/10;} return maior ;} jajaja Ahora la posición es correcta, pero mi función para mayor dígito esta volviendo 0 y no tengo ni idea de por qué Título: Re: Posición de un dígito Publicado por: lohayne en 15 Abril 2018, 22:48 pm El código funcionó
No sé cómo Agradecêlos, ayudaron mucho Título: Re: Posición de un dígito Publicado por: MAFUS en 16 Abril 2018, 00:32 am Estas mezclando C y C++ en un compilador de C++.
Cuando en C++ pasas un argumento a una función cuyo argumento esté prototipo con un & pasas una referencia y por tanto ese dato será modificado. En contdigitos has variado el valor de n, cuando se lo entregas a maiordig ya no tienes el valor n original sino el que te dejó contdigitos. |