Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C]Programma risoluzione equazioni

    Salve ho creato un programma per la risoluzione di equazioni di primo e secondo grado, e vorrei sapere se esiste un modo per visualizzare il risultato come frazione e non come numero con virgola es 1/2 al posto di 0.5

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Forse con qualche di terze parti ... sicuramente non con quelle standard del C.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Io avevo pensato di fare una cosa del genere:

    creo le variabili (num)numeratore e (den)denominatore

    calcolo il numeratore che nel caso di un equazione di secondo grado è:

    num=-b+-sqrt(delta);
    den=2*a;
    printf("X1 è: %g/%g", num,den);

    Non so se ho scritto correttamente ma ancora non ho provato a farlo, solo che il problema sarebbe che non mi fa la semplificazione della frazione ad esempio mi stampa 4/2 invece di stamparmi 2.

    Esiste una libreria di terze parti con una funzione del genere?

  4. #4
    per trasformare un numero con la virgola in frazione avevo già creato un algoritmo una volta. E avevo implementato anche la semplificazione. se non ricordo male prima trasformavo il numero decimale in stringa e poi ricopiavo la stringa dopo aver eliminato il carattere della virgola. Da lì ritrasformavo la stringa in un numero int. In base alla posizione della virgola nella prima stringa poi creavo un denominatore appropriato.

  5. #5
    Se vuoi ti do il codice, ma forse è meglio se ci arrivi da solo con quello che ti ho detto, se hai intenzione di seguire il mio metodo...

  6. #6
    Sto provando a fare una cosa diciamo più semplice, in pratica mi baso sul calcolo dell'mcd, utilizzo una funzione che creo all'interno del programma che mi calcola il mcd e faccio:

    mettendo il caso di un equazione di secondo grado con deltra uguale a 0


    num=-b;
    den=2*a;
    mcd=getmcd(num,den);
    num=num/mcd;
    den=den/mcd;
    printf("La soluzione e' una ed e': %d/%d", num,den);

    Solo che dato che non sono arrivato a come si richiama la funzione non so come richiamarla all'interno del programma

    L'applicazione è questa:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int getmcd(int,int);
    int a,b,c,num,den;
    float x,x1,x2,DELTA;
    char scelta;

    main()
    {
    printf("Calcolatore di Equazioni di Primo e Secondo Grado\n\n");
    printf("Inserisci coefficiente X quadra(se eq. primo grado inserire 0)\n");
    scanf("%d",&a);
    printf("Inserisci coefficente X\n");
    scanf("%d",&b);
    printf("Inserisci termine noto\n");
    scanf("%d",&c);

    if (a==0)
    {x=c/b;
    printf("La X vale: %g\n\n", x);
    }
    else
    DELTA=b*b-4*a*c;
    printf("Il Delta e': %f\n\n", DELTA);

    if (DELTA>0)
    {x1=(-b-sqrt(DELTA))/2*a;
    x2=(-b+sqrt(DELTA))/2*a;
    printf("X1 e': %g X2 e': %g\n\n", x1,x2);
    }

    else if (DELTA==0)
    {num=-b;
    den=2*a;
    mcd=getmcd(num,den);
    num=num/mcd;
    den=den/mcd;
    printf("La soluzione e' una ed e': %d/%d", num,den);
    }

    else
    {printf("L'equazione non ha soluzioni\n\n");
    }
    printf("Se vuoi inserire una nuova equazione premi y,altrimenti premi un tasto qualsiasi\n");
    getchar();
    scanf("%c",&scelta);
    if (scelta=='y')
    {
    system("cls");
    return main();
    }
    else exit(0);




    int getmcd(int a,int b);
    {
    int max,min,tmp;

    max=(a>b) ? a : b;
    if (max==a)
    min=b;
    else
    min=a;
    while ((max%min)!=0)
    {
    max=max-min;
    if (max<min)
    {
    tmp=max;
    max=min;
    min=tmp;
    }

    }
    return min;
    }

    }

    Ho applicato l'mcd solo nella parte per il delta uguale a 0 ma nn riesce a chiamarmi la funzione, che cosa sbaglio??

  7. #7
    Mi sono dimenticato di inserire mcd fra le variabili

    Niente non mi richiama la funzione lo stesso, mi da questo errore:

    [Linker error] undefined reference to `getmcd(int, int)'

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.