Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: [C] Puntatori

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143

    [C] Puntatori

    Ciao,
    in università ho da poco fatto i puntatori ma siccome stavo male non ho potuto seguire quindi ora mi ritrovo indietro. Ho letto le slide del prof e un pò qua e la sul web e mi sembra di aver capito ma poi quando vado a svolgere l'esercizio più facile del mondo non so come farlo..
    Come questo

    Date le seguenti enumerazioni:
    codice:
    typedef enum {FALSE, TRUE} bool;
    typedef enum {ERROR, OK} status;
    Implementare la seguente funzione:

    codice:
    status divisione_sicura(double num, double den, double* ris);
    se den diverso da 0 viene restituito in ris il risultato della divisione, la funzione restituisce OK
    altrimenti, la funzione restituisce ERROR.
    Io ho scritto:

    codice:
    #include <stdio.h>
    #define N 5
    
    typedef enum {FALSE, TRUE} bool;
    typedef enum {ERROR, OK} status;
    
    status divisione_sicura(double num, double den, double* ris);
    
    menu() {
    	//system("clear");
    	printf("\n0 - Uscita");
    	printf("\n1 - divisione_sicura");	
    	printf("\n2 - addizione_modulo_n");
    	printf("\n3 - conta_occorrenze");
    	printf("\n4 - parse_int");	
    	printf("\n5 - quali_parsificabili_con_max_cifre");
    	printf("\nInserisci una risposta: ");
    	int risp;
    	scanf("%d", &risp);
    	getchar();
    	return risp;
    }
    
    main() {
    
    	double num;
    	double den;
    	double* ris;
    
    	while(1) {
    		int scelta = menu();
    		switch(scelta) {
    			case 0: 
    				exit(0);
    			case 1: 
    				printf("\nInserisci un numeratore: ", num);
    				scanf("%lf", &num);
    				printf("\nInserisci un denominatore: ", den);
    				scanf("%lf", &den);
    				divisione_sicura(num, den, ris);
    				break;
    			/*case 2:
    				indiceminmax();
    				break;
    			case 3:
    				cercainarray();
    				break;
    			case 4:
    				ordinati();
    				break;	
    			case 5:
    				piuLungaNegativa();
    				break;*/		
    			default: 
    				exit(0);
    		}
    	}
    }
    
    status divisione_sicura(double num, double den, double* ris) {
    	if(den != 0) {
    		*ris = num / den;
    		return OK;
    	}
    	else
    		return ERROR;
    }
    Quando lo compito mi dice:
    codice:
    In function 'main' warning: incompatible implicit declaration of built-in function 'exit' [enabled by default]
    Il menu fatto in questo modo l'ho eseguito in altri programmi più volte e mi è sempre andato.. Quindi mi sembra strano che il problema sia quello.. Le parti commentate ignoratele (servono a me per aggiungere altri metodi).
    Chi mi aiuta?
    Grazie infinitamente..

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Se il problema è solo quel warning ti basta includere stdlib.h per evitarlo.
    Poi fammi sapere se il programma funziona come dovrebbe.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Penso che ci siano altri problemi.

    Dovrebbe essere

    codice:
    double ris;
    e quindi

    codice:
       printf("\nInserisci un numeratore: ");
       scanf("%lf", &num);
       printf("\nInserisci un denominatore: ");
       scanf("%lf", &den);
       divisione_sicura(num, den, &ris);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Scritto come dice oregon mi da errore.. Come l'ho scritto io invece con l'aggiunta di <stdlib.h> compila ma non mi scrive il risultato.. cioè non mi stampa ERROR o OK.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non ho capito cosa intendi ...

    Hai incluso stdlib.h ? Hai fatto le modifiche che ti ho suggerito ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Ho modificato il post di prima perchè avevo sbagliato a fare il quote..
    Ho modificato come hai scritto tu ma il compilatore da errore..

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da vfldj
    il compilatore da errore..
    Quale errore?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Spero di non andare off-topic.. Su wikibooks c'è scritto
    codice:
    int main (void)
    {
        int *a, *b, c = 10;
     
        b = a = &c;
    }
     printf("La variabile c, puntata da a, vale %d, mentre la" 
            "stessa variabile puntata da b vale %d.", *a, *b);
    Questo codice stamperà due volte il numero 10.

    Ma non dovrebbe stampare due volte l'indirizzo della cella b il cui contenuto è 10? Bo..
    L'operatore & non indica l'indirizzo di memoria?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma perché non hai risposto alla mia domanda indicando l'errore del compilatore?

    Cosa c'entra quest'altro codice?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Dice questo
    codice:
    In function ‘main’:
    error: lvalue required as left operand of assignment

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.