Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C] Semplice esercizio sulle funzioni..

    Sto realizzando un programma molto facile (per voi almeno ) che tramite una funzione calcola l'area del rettangolo oppure del triangolo, in base a ciò che viene scritto dall'utente (con area e altezza dati in input). Ecco il codice :

    #include<stdio.h>

    int area(int b, int h, char f);
    int b,h;
    char f;
    main() {

    do{
    printf("Scrivi r per rettangolo e t per triangolo : ");
    scanf("%c",&f);
    }while((f!='r')&&(f!='t')) ;

    printf("Dimmi la base della figura scelta : ");
    scanf("%d",&b);
    printf("Dimmi l'altezza della figura scelta : ");
    scanf("%d",&h);
    printf("L'area é : %d",area(b,h,f));
    }
    int area(int b,int h, char f) {
    int x;
    if(f='r') {
    x=b*h;
    return x; }
    else {
    x=b*h/2;
    return x; }
    }

    I problemi sono due :
    1) Se scrivo una lettera diversa da r e t mi stampa il messaggio "scrivi r o t" due volte.
    2) Mi calcola l'area del rettangolo anche se é un triangolo...
    So che saranno errori stupidi, ma non riesco a trovarli ;_;
    grazie per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154

    Re: [C] Semplice esercizio sulle funzioni..

    ...
    int area(int b,int h, char f) {
    int x;
    if(f='r') {
    ...
    Sinceramente, per il primo errore non so, il secondo potrebbe dipendere dal fatto che nell' if della funzione il controllo di uguaglianza è errato. Dovrebbe essere "==" e non "=".
    Facci sapere.
    Ciaux

  3. #3
    é vero !! Ora funziona ^__^ grazie mille !!!!!!!!!!!!!!!

  4. #4
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154
    Ciao, ho provato il programma e credo ti scriva 2 volte "Scrivi r per rettangolo e t per triangolo : " perchè legge anche il carattere di new line (\n) quando gli passi la r o la t con la scanf... anche se non ti so dire perchè.
    Prova così:
    codice:
    do
    {
     if (f != '\n')
           printf("Scrivi r per rettangolo e t per triangolo : ");
     scanf("%c",&f);
    }while((f!='r')&&(f!='t')) ;
    Fammi sapere. Ciaux

  5. #5
    Dimmi se cosi' ti và:
    codice:
    do{
       printf("Scrivi r per rettangolo e t per triangolo : ");
       scanf("%c",&f);
       fflush(stdin);
      }while((f!='r')&&(f!='t')) ;
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  6. #6
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154
    Mi sembra non vada con fflush
    A proposito, se con la scanf gli passa un char, come mai gli legge anche il new line?

  7. #7
    Funziona in tutti e due i modi ma come mai mi prende la new line ? VVoVe: VVoVe: VVoVe:

  8. #8
    Originariamente inviato da andrea_NET-_DSL
    Dimmi se cosi' ti và:
    codice:
       fflush(stdin);
    Questo ha tutta l'aria di un comportamento indefinito, secondo lo standard.
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  9. #9
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154
    Originariamente inviato da Lasentinella
    Funziona in tutti e due i modi ma come mai mi prende la new line ? VVoVe: VVoVe: VVoVe:
    Cacchietto... a me con fflush non funziona... continua a scrivermi cmq 2 volte la frase.
    Ripeto la domanda voglioso di una risposta
    Come mai la scanf legge anche il new line se gli passa come paramentro solo un char?

  10. #10
    vorrei saperlo anche io

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.