elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Algún consejo sobre como enfocar este problema para solucionarlo?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Algún consejo sobre como enfocar este problema para solucionarlo?  (Leído 3,021 veces)
Enri_f99

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Algún consejo sobre como enfocar este problema para solucionarlo?
« en: 24 Noviembre 2017, 17:42 pm »

Hola buenas, veréis tengo que tratar de crear un  programa que compla la siguiente precondición y postcondición:
/*
 * Pre: <a> y <b> almacenan sendas cadenas de caracteres con la secuencia
 *      de dígitos de dos números naturales seguidos por el carácter NUL, 
 *      cuyo código ASCII es el '\0'. Sea nA el número de dígitos de <a>
 *      y nB el número de dígitos de <b>. Los caracteres a[nA-1] y b[nB-1]
 *      representan las unidades, los caracteres a[nA-2] y b[nB-2] las decenas y 
 *      así sucesivamente y, finalmente, los caracteres a[0] y b[0] representan
 *      los dígitos mas significativos de <a> y <b>, respectivamente.
 * Post: <suma> almacena la secuencia de dígitos de la suma de los naturales
 *       representados por <a> y <b>. Sea nS el número de dígitos de suma.
 *       El carácter suma[nS-1] representa las unidades de la suma, el carácter
 *       suma[nS-2] representa las decenas y así sucesivamente y, finalmente,
 *       el carácter suma[0] representa el dígito más significativo de la suma.
 */


EL comienzo de la función es este :
void sumar (const char a[], const char b[], char suma[]){

He intentado enfocarlo de diversas maneras pero finalmente en vano, si alguien tiene una idea sorbre como enfocarlo agradecería mucho su ayuda.
Adjunto también el código que he intentado hacer pero que no ha funcionado por si veis algún fallo:
  int Long_a = strlen(a);
    int Long_b = strlen(b);
    if (Long_a == Long_b){
        bool seLlevaUna = false;
        int acarreo;
        for(int i= Long_a -1; i >= 0; i--){
            char ResSuma = (a - '0') + (b - '0');
            if(seLlevaUna = true){
                 acarreo = '1';
            } else {acarreo = '0';}
            if(ResSuma >= '10'){ seLlevaUna = true;
            suma = ResSuma - '10'+ acarreo;}
            else { seLlevaUna = false;
            suma = ResSuma + acarreo;
            }
    }
    } else{
        int diferencia_long;
        if(Long_a > Long_b){
        diferencia_long = Long_a - Long_b;
        for(int i = Long_a-1; i >=0; i--){
            suma = (a - '0')+(b[i-diferencia_long] - '0');
        }
    }
       
        else{diferencia_long = Long_b-Long_a;
        for(int i = Long_b-1; i >=0; i--){
            suma = (b - '0')+(a[i-diferencia_long] - '0');
            }
        }
    }
}
       

Gracias por adelantado, un saludo.


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Algún consejo sobre como enfocar este problema para solucionarlo?
« Respuesta #1 en: 25 Noviembre 2017, 00:16 am »

Esto ResSuma >= '10' en C no existe. Las comillas simples son para indicar un (1) dato de tipo carácter, por tanto tener dos encerrados entre comillas simples es un error per se. Seguro que querías decir el valor numérico por tanto quita las comillas.


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Algún consejo sobre como enfocar este problema para solucionarlo?
« Respuesta #2 en: 25 Noviembre 2017, 14:59 pm »

= es para asignar
== es para comparar

Por ejemplo si haces
if( variable = xxxx ) { ... }

estas ASIGNANDO el valor xxx a la variable, no comparandola con xxx.

Tu codigo esta lleno de asignaciones cuando querias comparar.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines