Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    [C] come riporto tutto in void???

    #include <malloc.h>
    #include <stdio.h>

    int horner(float *coeff, int n, int c);

    int main(){

    int i, c, n;
    float *coeff;

    printf("Inserire il grado del polinomio: ");
    scanf("%d", &n);

    if(!(coeff = (float *)malloc(n*sizeof(float))))
    abort();

    printf("\nInserire uno ad uno i valori dei coefficienti: \n");
    for(i = 0; i <= n; i++){
    printf("Inserire il valore del coeff %d: ", i);
    scanf("%f", &coeff[i]);
    }

    printf("\nInserisci il valore del punto c: ");
    scanf("%d",&c);

    printf("%d", horner(coeff, n, c));

    free(coeff);
    }

    int horner(float *coeff, int n, int c){

    int i, p;

    p = coeff[n];
    for(i = n-1; i >= 0; i--)
    {
    p = p * c + coeff[i];
    }
    return p;
    }

  2. #2

    specifica meglio la domanda

    void sta per generico. Ha due usi. Come tipo di ritorno di una funzione significa che la funzione non ritorna nulla. Come tipo di puntatore significa "puntatore ad un oggetto generico". In questo caso, prima di poter usare l'oggetto puntato, di solito e' necessario effettuare un cast da "* void" a "* tipo effettivo dell'oggetto".
    ciao ciao !!
    _______________
    home : cristianolongo.altervista.org
    e-mail : cristiano_longo@yahoo.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    siccome domani ho la prova intercorso e non ho ancora un buon libro su C ti dispiacerebbe riscrivere il programma che ho postato in void?

    ti ringrazio infinitamente....

  4. #4

    continuo a non capire la domanda

    comunque per la mia esperienza accademica, posso ipotizzare la risposta.
    codice:
    int horner(void *coeff, int n, int c);

    codice:
    int horner(void *coeff, int n, int c){ 
    
     int i, p; 
     float* coeff1 = (float*)coeff;
    
     p = coeff1[n]; 
     for(i = n-1; i >= 0; i--) 
      p = p * c + coeff1[i]; 
    
     return p; 
    }
    ciao ciao !!
    _______________
    home : cristianolongo.altervista.org
    e-mail : cristiano_longo@yahoo.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    a quanto mi è stato detto la function la devo scrivere di tipo void.

    cioè void horner al posto di int horner. Solo che se scrivo void mi dà errore

  6. #6
    Utente di HTML.it L'avatar di pixer
    Registrato dal
    Oct 2000
    Messaggi
    614
    Originariamente inviato da Metallica
    a quanto mi è stato detto la function la devo scrivere di tipo void.

    cioè void horner al posto di int horner. Solo che se scrivo void mi dà errore
    ma void non può ritornare valori
    MySQL Worker - The OpenSource Multiplatform MySQL database Administrator (C++ powered)
    .:[ It resumes the development !! ]:.


  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Originariamente inviato da pixer
    ma void non può ritornare valori
    apputno però il testo della prova era scrivere una function di tipo void che calcoli il valore di un polinomio mediante il metodo di horner.

  8. #8

    Re: [C] come riporto tutto in void???

    Originariamente inviato da Metallica
    #include <malloc.h>
    #include <stdio.h>

    int p; // p = variabile globale

    void horner(float *coeff, int n, int c); //Adesso è void

    int main(){

    int i, c, n;
    float *coeff;

    printf("Inserire il grado del polinomio: ");
    scanf("%d", &n);

    if(!(coeff = (float *)malloc(n*sizeof(float))))
    abort();

    printf("\nInserire uno ad uno i valori dei coefficienti: \n");
    for(i = 0; i <= n; i++){
    printf("Inserire il valore del coeff %d: ", i);
    scanf("%f", &coeff[i]);
    }

    printf("\nInserisci il valore del punto c: ");
    scanf("%d",&c);

    horner(coeff, n, c) // chiama la funzione che calcola p

    printf("%d", p); // scrive p

    free(coeff);
    }

    void horner(float *coeff, int n, int c){ // void...

    int i;

    p = coeff[n];
    for(i = n-1; i >= 0; i--)
    {
    p = p * c + coeff[i]; // calcola p
    } // ma non lo ritorna
    }
    Non ho provato ma spero che vada...

  9. #9
    Originariamente inviato da Metallica
    a quanto mi è stato detto la function la devo scrivere di tipo void.
    Assicuratene perchè a me sembra una bagianata. LA soluzione più corretta mi sembra quella che hai postato tu. Attenta ai cattivi consigli e non fidarti mai di nessuno.

    cioè void horner al posto di int horner. Solo che se scrivo void mi dà errore
    Certo, perchè horner ritorna un valore. Puoi fare due cose :
    A) usare un parametro di ritorno

    void horner(float *coeff, int n, int c, int *ret){
    int i, p;

    p = coeff[n];
    for(i = n-1; i >= 0; i--)
    p = p * c + coeff[i];

    *ret=p;
    }

    int main(){

    int i, c, n, r;
    float *coeff;

    printf("Inserire il grado del polinomio: ");
    scanf("%d", &n);

    if(!(coeff = (float *)malloc(n*sizeof(float))))
    abort();

    printf("\nInserire uno ad uno i valori dei coefficienti: \n");
    for(i = 0; i <= n; i++){
    printf("Inserire il valore del coeff %d: ", i);
    scanf("%f", &coeff[i]);
    }

    printf("\nInserisci il valore del punto c: ");
    scanf("%d",&c);

    //nuovo
    horner(coeff, n, c, &r);
    printf("%d", r);

    free(coeff);
    }
    B) ritornare un puntatore a void, ma non credo sia il caso ...
    ciao ciao !!
    _______________
    home : cristianolongo.altervista.org
    e-mail : cristiano_longo@yahoo.it

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    sì ecco la prima è la soluzione + adatta credo ritornare un puntatore al risultato...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.