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

    [C] Scambio posizione...

    Scusate ma:
    [Tralascio la funzione main che richiama la funzione massimo()..]


    codice:
    massimo(int x,int y,int z){
    	int max=x;
    	if (y>max) max=y;
    	if (z>max) max=z;
    	return max;}
    e
    codice:
    massimo(int x,int y,int z){
    	int max=x;               
    	if (y>max) y=max;       // il cambiamento rispetto a prima è qui--> y=max
    	if (z>max) z=max;
    	return max;}
    non sono la stessissima cosa? Sembra di no, infatti nel primo caso tutto funzia, ma nel secondo caso come massimo dà sempre il valore x... Mi spiegate perchè è un errore così grave che stravolge un programma così facile?
    Inoltre
    codice:
    massimo(int x,int y,int z){
    	int max;
    	x=max;    //il cambiamento è qui
    	if (y>max) y=max;
    	if (z>max) z=max;
    	return max;
    
    }
    dà come massimo un numero -85954785 o simile.... why?

  2. #2

    Re: [C] Scambio posizione...

    codice:
    massimo(int x,int y,int z){
    	int max=x;
    	if (y>max) max=y;
    	if (z>max) max=z;
    	return max;}
    e

    codice:
    massimo(int x,int y,int z){
    	int max=x;               
    	if (y>max) y=max;
    	if (z>max) z=max;
    	return max;}
    non sono assolutamente la stessa cosa. La prima è corretta, la seconda no. Nella seconda assegni a max il valore di x e poi non lo modifichi più.

    Inoltre

    codice:
    massimo(int x,int y,int z){
    	int max;
    	x=max;    //il cambiamento è qui
    	if (y>max) y=max;
    	if (z>max) z=max;
    	return max;
    
    }
    hai dichiarato max ma non le hai assegnato un valore, quindi il suo valore dipende dal contenuto della locazione di memoria in cui viene allocata.
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Dire A = B in matematica implica che B = A, tuttavia tu stai programmando, non stai scrivendo un' equazione, per cui
    A = B significa:

    leggi il valore di B e scrivilo in A
    ed e' quindi molto diverso da:

    B = A, cioe':
    leggi il valore di A e scrivilo in B.

    Degli esempi che hai fatto e' il primo ad essere corretto.

    Nel secondo, invece, aver invertito max = y con y = max significa che il valore di max, una volta assegnato pari ad x, non viene piu' modificato, e' per questo che, restituendolo, restituisci sempre il valore di x.

    Per l'ultimo caso ti hanno gia' risposto.
    Ciao,
    Lorenzo

  4. #4
    Un appunto x Alexxio: quando leggi un manuale di programmazione salti i primi capitoli?
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

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.