Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Enri_f99

#1
Hola buenas, el siguiente programa debería mostrar una lista con los números de la suciesión de Fibonacci en las posiciones entre los dos números seleccionados pero al ejecutarlo solo dice "press any key to continue" alguna idea de por que es?
Código:


#include <iostream>
#include <cstring>
#include <H:/Prog1/biblioteca/NumerosGrandes/natGrandes.h>

using namespace std;

int main() {
    const int LONG_NUM = 1000;
    int n1,n2;
    char num[LONG_NUM];
   
    cout << "Terminos desde y hasta (0 o negativo para acabar):" << endl;
    cin >> n1;
    cin >> n2;
   
    while(n1!= 0 && n2 != 0) {
       
        if(n1 > 0 && n2 > 0 && n2 > n1){
            for(int a = n1; a <= n2; a++){
                int contador = 0;
                char A[LONG_NUM];
                srtcpy(A,"0");
                A[0] = '0';
                char B[LONG_NUM];
                srtcpy(B,"0");
                B[0] = '1';
                char Aux[LONG_NUM];
                strcpy(Aux,"0");
                while(contador != a) {
                    sumar(A,B,Aux);
                    strcpy(A,B);
                    strcpy(B,Aux);
                    contador ++;
                }
                cout << a << ". " << Aux << "\n";
            }
            cout << "Terminos desde y hasta (0 o negativo para acabar):";
            cin >> n1 ;
            cin >> n2;
        }
        else { cout << " El segundo numero debe ser mayor que el primero"; cin >> n1;
        cin >> n2;
        }
    }
        return 0;
}
#2
Hola buenas, no consigo que el siquiente programa funcione y no se cual es el problema ya que al ejecutarlo solo dice "press any key to continue", si alguien sabe por que es y me lo pudiera decir lo agradecería mucho.


#include <iostream>

using namespace std;

/*
* Pre: Introduce un número entero
* Post: Devuelve el número de la serie de Fibonnaci correspondiente a la posición
* del número indicado previamente
*/


char FibonacciChar(int n) {
     char F[1000];
     F[0] = '0';
     F[1] = '1';
     F[2] = '1';
     
     if(n == 1) {
         return F[1];
    }
    else if(n == 2) {
        return F[2];
    }
    else if(n == 0) {
        return F[0];
    }
    else {
        for( int i = 3 ; i <= n ; i++){
            F = F[i-1] + F[i-2] -2 * '0';
            F = F[n];
        }
        return F[n];
    }
}

/*
* Pre: Introduce dos números positivos siendo el primero el primer término
*  y el segundo el último término de la sucesión de Fibonacci que desea presentar.
* Post: Devuelve los números de fibonnaci de el rango especificado por los dos números.
*/

int main(){
    int n1,n2;
   
    cout << "Terminos desde y hasta (0 o nega   tivo para acabar):"<<endl;
    cin >> n1;
    cin >> n2;
    if(n1 > 0 && n2 > 0 && n2 > n1){
        for(int i = n1; i < n2; i++){
        cout << i << ". " << FibonacciChar(i) << "\n";
        }
        cout << n2 << ". " << FibonacciChar(n2) << "\n";
        cout << "Terminos desde y hasta (0 o negativo para acabar):"; cin >> n1 ;
        cin >> n2;
    }
     
    return 0;
}
#3
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.
#4
No se por qué el rpograma hace eso pero si alguien tiene alguna idea de por que puede ser agradecería mucho que me lo dijera, aquí dejo el código del programa:

#include <iostream>
#include "H:\Prog1\biblioteca\Enteros\calculos.h"

using namespace std;

/*
* Pre: Introduce dos números positivos siendo el primero el primer término
*  y el segundo el último término de la sucesión de Fibonacci que desea presentar.
* Post: Devuelve los números de fibonnaci de el rango especificado por los dos números.
*/

void FibonacciDesdeHasta(int n1,int n2){
   
    for(int i=n1; i < n2; i++){
        cout << i << ". " << fibonacci(i) << "\n";
    }
    cout << n2 << ". " << fibonacci(n2) << "\n";
   
}

int main(){
    int n1,n2;
    cout << "Terminos desde y hasta (0 o negativo para acabar):"; cin >> n1;
    cin >> n2;
    if(n1 > 0 && n2 > 0 && n2 > n1){
    FibonacciDesdeHasta(n1,n2);
    cout << "Terminos desde y hasta (0 o negativo para acabar):"; cin >> n1 ;
    cin >> n2;
    }
     
    return 0;
}
#5
Cita de: MAFUS en 18 Noviembre 2017, 19:23 PM
Te falta actualizar i al siguiente fibonacci(n). Tal y como está, aunque actualices n, i se queda igual.
Es verdad ni me había dado cuenta! gracias!
#7
Cita de: CalgaryCorpus en 17 Noviembre 2017, 21:51 PM
Tu ciclo while no cambia la condición.
Una vez false, siempre false.

Que me recomendarías que pusiera entonces?
#8
Hola!

He creado un pequeño programa en c++ el cual al decirle un número de dígitos, devuelve el primer termino de la serie de fibonacci con el número de dígitos indicado y la posición de ese termino en la serie. Sin embargo al ejecutalo e introducir el número de dígitos el programa deja de funcionar, si alguien me pudiera decir por que puede ser me sería de gran ayuda. Aquí dejo el código del programa , gracias por adelantado, un saludo.


#include <iostream>
#include  "../../biblioteca/Enteros/propiedades.h"
#include "../../biblioteca/Enteros/calculos.h" // Hago uso de unos módulos para poder utilizar ciertas funciones mas adelante como numCifras y fibonacci

using namespace std;

/*
* Pre: ---
* Post: Devuelve el primer término de la serie de Fibonacci con el número de cifras indicado
* e indica la posición del término en la sucesión.
*
*/

void PrimerTermino(int d){
     int n = 0;
     int i = fibonacci(n); // La función fibonacci devuelve el n-ésimo término de la sucesión de Fibonnaci
     int term;
     bool encontrada = false;
     
      while(!encontrada){
          if(numCifras(i) == d){ 
              encontrada = true;
              term = n;
          } else {
              n++;}
      }
     
}
     
int main(){
     int d,i,term;
     
     cout << "Numero de digitos (0 o negativo de acabar): ";
     cin >> d;
     PrimerTermino(d);
     
     cout << i << "Es el termino " << term << " de la sucesion de Fibonacci"<<endl;
      cout << " y es el primero con " << d << "digitos" << endl;
     
      return 0;
}