problema con este codigo

Iniciado por letisen, 23 Enero 2014, 16:32 PM

0 Miembros y 1 Visitante están viendo este tema.

letisen

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 "

#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();
           
}

dato000

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



letisen

Cita de: 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


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

dato000

cambiaste también las funciones??? también deben ser de un tipo acorde a los valores que manejas.



letisen

yes i change it. this is my code now but also didnt work.

#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();
   
   
}

dato000

este es totalmente diferente al inicial.



letisen

si lo cambie, usando ahora "long long int" en vez de "int" pero igual no me funciona.

dato000

Cita de: 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.

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.