Ayuda con un programa de c++

marmotau

Bovino maduro
#1
Que tal bakunos espero me puedan ayudar ya que me urge es una tarea que necesito correguirla pero la verdad no hayo el error ya que me devuelve un 0 al final(siempre) tengo un problema con este programa en c de un vector la cual necesito que haga lo sig
hace un programa que contenga una funcion, Digit(N,num)que devuelva el digito n-esimo de un numero num de tipo unsigned long iny, teniendo en cuenta que el digito 0 es el digito mas a la derecha (el menos significativo). Lafuncion devoldera -1 si el numero no tiene suficientes digitos(el vector comienza en 0 y al poner "el ultimo num o el total de num se pasa "). considerese la posibilidad de que Npueda ser un numero negativo, ej
Digit(0,3456)Devuelve 6
Digit(1,3456)Devuelve 5
Digit(4,3456)Devuelve -1


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

int N,num[5];
int i,aux;
void Digit();

int main(){
printf("Dame pos");
scanf("%d",&N);
printf("num serie");
scanf("%d",&num);
Digit();

system("pause");
return 0;
}

void Digit(){
if(N<5){
N=N-2*N;//lo convierto negativo para no voltear la cifra
for(i=4;i<N+3;i--){//el N mas tres es porque como sale negativo necesito que me escane hasta una posicion despues del # que sepide
aux=num;
}
printf("=%d",aux);
}
else{
printf("=-1");
}
}

Nota: Ojala me puedan ayudar se que este no es un espacio para resolver dudas de este tipo o al menos yo no lo eh visto pero lo que si se es que la mayoria de los programadores bakunos saben de esto ojala me puedan ayudar :)
 
#3
Almacena los numeros en un vector, y simplemente cuando pidas el index lo devuelves:


unsigned int arregloNumeros = { 3, 4, 5, 7};

if (index >= totalNums)
return -1;
printf("%d", arregloNumeros[index]);
 

menxo

Bovino adolescente
#4
a que te refieres con que N pueda ser negativo? no quisiste decir num?, eso es mas bien c
El Programa esta escrito en c++, no?

No creo que te pueda ayudar mucho, pero si no quieres que te devuelca negativo un numero, pon que ese numero que te da negativo te lo escriba con valor absoluto.
 

marmotau

Bovino maduro
#5
no al contrario esa es una notacion como recomendacion me dijeron que N lo hiciera negativo para asi cuando el ciclo que va en el vector se detuviera por ejemplo tenemos que me da lo sig 3,54321 por lo cual me tendra que devolver el 3ero de la derecha a la izq ((4)recordando que empieza desde el 0), el ciclo acabara segun sea el numero N entonces al hacerlo negativo quedaria -4, sumar en este caso 5(que es el total de num) para asi llegar a la posicion 1 del vector y me de el 4 y claro esta hecho en c++ lo estoy haciendo en dev c
 

animatrix92

Bovino adolescente
#6
HTML:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int N,serie;
int aux=10;

int Digit(int N,int Dig);

int main(){
printf("Dame pos");
scanf("%d",&N);
printf("num serie");
scanf("%d",&serie);
printf("%d",Digit(N,serie));//imprime el resultado de la funcion
system("pause");
return 0;
}

int Digit(int N, int Dig){// ejemplo Digit(1,3456)Devuelve 5
    if(N==0){ //N=1 no entra al if
        return Dig%aux;    
    }
    else if(N>0){//N=1 > a 0 entra al if

        for(int i=0;i<N;i++){//entra al ciclo mientras i<N que vale 1
            aux*=10;
        }//cuando sale aux=100

        int res=(Dig%aux-Dig%(aux/10))/(aux/10);//(3456%100-3456%(100/10))/(100/10)=5
        
        if(res==0){//res=5 no entra
            return -1;
        }
        else{//regresa res
            return res;
        }
    }
    else {
        N*=-1;
        for(int i=0;i<N-1;i++){
            aux*=10;
        }
        int res=(Dig%aux-Dig%(aux/10))/(aux/10);
        
        if(res==0){
            return -1;
        }
        else{
            return res;
        }
    }

}
umm esto esta sin arreglos, ya que con un arreglo quedaria estatico, tendrias que espeficarlo en el codigo, si usas un vector de la STL ps ahi si podrias meter nlongitud pero creo que es todavia algo avanzado para ti, y el codigo esta en c ya que no utilizas ninguna libreria de c++, el codigo se puede mejorar pero ya es noche XD, si tienes duda con lo que hace, ps ahi preguntas, si quieres ponerlo en un arreglo ps la vdd seria mucho mas sencillo, quite la libreria conio y

p.d. cuando pongas codigo trata de ponerlo entre etiquetas HTML ya que queda mas legible y es mas facil comprenderlo
 
Arriba