Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: letisen en 23 Enero 2014, 16:32 pm



Título: problema con este codigo
Publicado por: letisen en 23 Enero 2014, 16:32 pm
tengo este codigo que funciona para la mayoriua de los inputs pero hay algunos para los que me regresa error, como por ejemplo para este input:
" -1000000000000000000 1 1000000000000000000 "

Código:
#include <iostream>
#include <cstdio>

using namespace std;
int x,y,m;
int aux=0;
int toPerfect(int a,int b,int per){
    if(a >= per || b >= per){
         aux=0;
       
    }else if(a<=0 && b<=0){
                 aux = -1;
           }else{
                 while(a < per && b < per){
                      if(a > b){
                           b = b+a;
                       }else{
                             a = a+b;   
                            }
                      aux++;       
                }
     }
   
     return aux;
}

int main(){
    cin >>x>>y>>m;
    cout << toPerfect(x,y,m) << endl;
    cin.get();
           
}


Título: Re: problema con este codigo
Publicado por: dato000 en 23 Enero 2014, 16:48 pm
son números demasiado grandes, una variable tipo int no admite ese tipo de valores, para eso usa long o arreglos o punteros (bueno es lo mismo pero diferente  :laugh: :silbar:) para esos valores tan grandes.

Consulta esta tabla:

http://www.zator.com/Cpp/E2_2_4.htm

slds


Título: Re: problema con este codigo
Publicado por: letisen en 23 Enero 2014, 17:35 pm
son números demasiado grandes, una variable tipo int no admite ese tipo de valores, para eso usa long o arreglos o punteros (bueno es lo mismo pero diferente  :laugh: :silbar:) para esos valores tan grandes.

Consulta esta tabla:

http://www.zator.com/Cpp/E2_2_4.htm

slds


Pero al usar "long" o "long long int" en vez de "int" simplemente no termina el programa, se queda en stand-by .


Título: Re: problema con este codigo
Publicado por: dato000 en 23 Enero 2014, 17:51 pm
cambiaste también las funciones??? también deben ser de un tipo acorde a los valores que manejas.


Título: Re: problema con este codigo
Publicado por: letisen en 23 Enero 2014, 18:02 pm
yes i change it. this is my code now but also didnt work.

Código:
#include <iostream>
#include <stdio.h>

using namespace std;

long long int n,k,cont=0;
long long int aux;
int main(){
    cin >>n>>k;
    //imprime impares hasta n
   
    for(long long int i=1;i<=n;i++){
            if( i%2 != 0){
                //cout << i << endl;
                 cont++;
                 if(cont == k){
                         aux=i;
                         } 
            }
         
    }
     
     //imprime pares hasta n
     for(long long int j=1;j<=n;j++){
            if( j%2 == 0){
                //cout << j << endl;
                 cont++;
                 if(cont == k){
                         aux=j;
                 }
            }
           
    }
   
    cout << aux << endl;
    cin.get();
   
   
}


Título: Re: problema con este codigo
Publicado por: dato000 en 23 Enero 2014, 18:05 pm
este es totalmente diferente al inicial.


Título: Re: problema con este codigo
Publicado por: letisen en 23 Enero 2014, 18:12 pm
si lo cambie, usando ahora "long long int" en vez de "int" pero igual no me funciona.


Título: Re: problema con este codigo
Publicado por: dato000 en 23 Enero 2014, 18:27 pm
si lo cambie, usando ahora "long long int" en vez de "int" pero igual no me funciona.

En absoluto, no utilizas la función toPerfect en este nuevo main.

Sigue usando main, y cuando quieras usar valores gigantezcos, almacena cada digito en un arreglo y lo conviertes con atoi, caracter por caracter.