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

    C-Tavola_numerica: appena apro il programma, stampa in output messaggio di errore.

    Dato un numero inserito sulla riga di comando stampare la tavola numerica di tutti i numeri da 1 a quel numero. Il numero deve essere compreso tra 1 e 1000 e devono essere visualizzati a video il quadrato, il cubo, la radice quadrata e cubica di tutti i numeri ben incolonnati

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void quad_cub(int x, int *qptr, int *cptr)
    {
    *qptr=x*x;
    *cptr=x*x*x;
    }
    
    void rad_quad_cub (int y, double *rqptr, double *rcptr )
    {
    const float esp = 1/3;
    *rqptr=sqrt(y);
    *rcptr=pow(y, esp);
    }
    
    
    
    int main(int argc, char *argv[])
    {
    int lim,i;
    double rad_quad,rad_cub;
    int quad,cub;
    
    /*controllo se sulla linea di comando sono stati inseriti il
    nome del programma e il valore limite fino al quale calcolare
    le operazioni richieste*/
    if (argc!=2)
    {
    fprintf(stderr, "errore-non hai inserito il limite!\n");
    exit(1);
    
    }
    
    if (sscanf(argv[2],"%i", &lim)!=1)
    {
    fprintf(stderr,"errore-non hai inserito un numero!");
    exit(2);
    }
    
    /*controllo se il limite inserito è concorde con la traccia del problema*/
    if ((argv[2]<1)||(argv[2]>1000))
    {
    fprintf(stderr, "errore-limite inserito non concorde con la traccia del problema\n");
    exit(3);
    }
    
    for (i=1;i<=lim;i++)
    {
    quad_cub(i,&quad,&cub);
    rad_quad_cub(i,&rad_quad,&rad_cub);
    printf("\t%5d\t%8d\t%10d\t%8.6f\t%8.6f",i,quad,cub,rad_quad,rad_cub);
    }
    
    return 0;
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319

    Moderazione

    Ok, un passo avanti l'hai fatto rispetto a questa discussione... hai dato un titolo significativo.

    Tutto il resto (indicazione dell'errore, codice postato in modo leggibile con i tag CODE), invece... Il corpo del messaggio non è fatto solo per contenere il codice e la traccia dell'esercizio, ma anche e soprattutto per spiegare alla gente il problema.

    Nel titolo hai scritto "stampa in output messaggio di errore"... bene, allora riporta il messaggio di errore che viene stampato: otterresti degli aiuti molto più facilmente, se solo aiutassi gli altri a capire.

    Facciamo che io sistemo il codice (che è senza indentazione) e tu integri con l'informazione mancante.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    l'errore sarà sicuramente un segfault:
    codice:
    argv[2]
    si conta da zero
    0 = nome programma
    1 = primo argomento
    2 = secondo argomento

    codice:
    if ((argv[2]<1)||(argv[2]>1000))
    qui devi usare atoi()

    codice:
    if ((atoi(argv[1])<1)||(atoi(argv[1])>1000))

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.