Programmazione C

di il
51 risposte

51 Risposte - Pagina 2

  • Re: Programmazione C

    Gastaldo ma tu non leggi ... ti ho già detto che nella funzione inserisci manca l'inserimento dei dati nel vettore ... dove sta?
  • Re: Programmazione C

    oregon ha scritto:


    Gastaldo ma tu non leggi ... ti ho già detto che nella funzione inserisci manca l'inserimento dei dati nel vettore ... dove sta?
    Ho letto il tuo messaggio,ti ho risposto nella pagina 1 oregon,ti mando il file .exe del codice che ho scritto,se vedi il file.exe,l'inserimento lo esegue,la cosa strana e la linea dell'.exe numero 4,dove quando metto il numero intero negativo mi da il cout che volevo mettere,ma se inserisco dopo un numero non me lo considera come elemento del vettore e lo devo rimettere
    Allegati:
    25653_ec139910da033ba17196310ef8966d50.png
    25653_ec139910da033ba17196310ef8966d50.png
  • Re: Programmazione C

    Non so come compili quel codice ma utilizzi v al posto di v[ i ] ... almeno così si legge nel codice che hai postato.

    L'inserimento dovrebbe essere
    
    void inserisci(int v[]) 
    {
    	for (int i = 0; i < DIM; i++) 
    	{
    		do
    		{
    			cout << "Inserisci i numeri interi [" << i << "] ";
    
    			cin >> v[i];
    			if (v[i] < 0)
    				cout << "Errore,inserisci di nuovo il numero\n";
    		} while (v[i] < 0);
    	}
    }
    
    Guarda dove sbagliavi.
  • Re: Programmazione C

    oregon ha scritto:


    Non so come compili quel codice ma utilizzi v al posto di v[ i ] ... almeno così si legge nel codice che hai postato.

    L'inserimento dovrebbe essere
    
    void inserisci(int v[]) 
    {
    	for (int i = 0; i < DIM; i++) 
    	{
    		do
    		{
    			cout << "Inserisci i numeri interi [" << i << "] ";
    
    			cin >> v[i];
    			if (v[i] < 0)
    				cout << "Errore,inserisci di nuovo il numero\n";
    		} while (v[i] < 0);
    	}
    }
    
    Guarda dove sbagliavi.
    Ah si vero,ecco dov'era l'errore sulla funzione inserisci,ma non ho capito gli errori sulla funzione stampa
  • Re: Programmazione C

    Rivedi la funzione stampa perché non si capisce cosa tu voglia fare.

    Mancano delle parentesi e non si capisce perché usi due for ... di cui uno chiuso con il ;
  • Re: Programmazione C

    oregon ha scritto:


    Rivedi la funzione stampa perché non si capisce cosa tu voglia fare.

    Mancano delle parentesi e non si capisce perché usi due for ... di cui uno chiuso con il ;
    volevo creare una funzione che stampi in sequenza le righe del vettore,ma non ho capito come farlo,nel senso volevo fare
    Allegati:
    Ti mando gli screenshot per farti vedere quali errori e in quale riga di codice mi da gli errori,questi errori riguardano la funzione stampa,oregon mi potresti aiutare a risolverli?
    Ti mando gli screenshot per farti vedere quali errori e in quale riga di codice mi da gli errori,questi errori riguardano la funzione stampa,oregon mi potresti aiutare a risolverli?

    25653_36787389932b9e31896179221563df2d.png
    25653_36787389932b9e31896179221563df2d.png
  • Re: Programmazione C

    Mostra tutto il codice attuale con le modifiche che ti ho indicato. Avrai dimenticato qualche parentesi graffa (probabilmente nella funzione precedente)
  • Re: Programmazione C

    oregon ha scritto:


    Mostra tutto il codice attuale con le modifiche che ti ho indicato. Avrai dimenticato qualche parentesi graffa (probabilmente nella funzione precedente)
    Si,ci avevo riflettuto anch'io ho riscritto il codice dall'inizio ma niente
    #include<iostream>
    #define DIM 100
    using namespace std;
    void inserisci(int v[]);
    void ordine_decrescente(int v[]);
    void stampa_vettore(int v[]);
    int main() {
    	int v[DIM];
    	inserisci(v);
    	ordine_decrescente(v);
    	stampa_vettore(v);
    	system("Pause");
    }
    void inserisci(int v[]) {
    	for (int i = 0; i < DIM; i++) {
    		cout << "Inserisci i numeri interi [" << i << "]";
    		do {
    			cin >> v[i];
    			if (v[i] < 0) {
    				cout << "Errore,inserisci di nuovo il numero";
    			}
    		} while (v[i] < 0);
    	}
    }
    void ordine_decrescente(int v[]) {
    	int tmp;
    	int i;
    	for (int i = 0; i < DIM - 1; i++);
    	for (int j = i + 1; j < DIM; j++) {
    		if (v[i] > v[j]) {
    			tmp = v[i];
    			v[i] = v[j];
    			v[j] = tmp;
    			return;
    		}
    	}
    	void stampa_vettore(int v[]) {
    		int i;
    		for (i = 0; i < DIM; i++)
    {
    			cout << v[i] << endl;
    	
    }
    		
    }
  • Re: Programmazione C

    Gastaldo frequenti informatica all'università? Devi fare molta attenzione quando programmi altrimenti la vedo dura.

    L'errore è proprio nella funzione ordine_decrescente ... devi controllare le parentesi graffe come ti avevo detto, basta contarle per rendersi conto. E fai anche attenzione ai ; nella stessa funzione.

    Un consiglio ... inserisci qualche riga vuota tra una funzione e l'altra per leggere meglio e aggiusta un po' l'allineamento di tutte le parentesi (indentazione) per renderti conto dei problemi.
  • Re: Programmazione C

    oregon ha scritto:


    Gastaldo frequenti informatica all'università? Devi fare molta attenzione quando programmi altrimenti la vedo dura.

    L'errore è proprio nella funzione ordine_decrescente ... devi controllare le parentesi graffe come ti avevo detto, basta contarle per rendersi conto. E fai anche attenzione ai ; nella stessa funzione.

    Un consiglio ... inserisci qualche riga vuota tra una funzione e l'altra per leggere meglio e aggiusta un po' l'allineamento di tutte le parentesi (indentazione) per renderti conto dei problemi.
    Oregon ho ascoltato il tuo consiglio,ho risistemato il codice,mi da un errore nella funzione ordine decrescente che prima non mi dava cioè utilizzata variabile "i" non localizzata eppure è lo stesso codice di prima,ho solo sistemato le parentesi graffe,mi potresti aiutare?
    #include<iostream>
    
    #define DIM 10
    
    using namespace std;
    
    void inserisci(int v[]);
    
    void ordine_decrescente(int v[]);
    
    void stampa_vettore(int v[]);
    
    int main() {
    
    	int v[DIM];
    
    	inserisci(v);
    
    	ordine_decrescente(v);
    
    	stampa_vettore(v);
    
    	system("Pause");
    
    }
    
    void inserisci(int v[]) {
    
    	for (int i = 0; i < DIM; i++) {
    
    		cout << "Inserisci i numeri interi [" << i << "]";
    
    		do {
    
    			cin >> v[i];
    
    			if (v[i] < 0) {
    
    				cout << "Errore,inserisci di nuovo il numero";
    
    			}
    
    		} while (v[i] < 0);
    
    	}
    }
    void ordine_decresente(int v[]) {
    
    	int tmp;
    	int i;
    	for (int i = 0; i < DIM - 1; i++);
    
    	for (int j = i + 1; j < DIM; j++) {
    
    		if (v[i] > v[j]) {
    
    			tmp = v[i];
    
    			v[i] = v[j];
    
    			v[j] = tmp;
    
    			return;
    		}
    
    
    	}
    
    }
    
    	void stampa_vettore(int v[]) {
    
    		int i;
    
    		for (i = 0; i < DIM; i++)
    
    {
    			cout << v[i] << endl;
    	
    }
    		
    }
  • Re: Programmazione C

    Hai scritto ordine_decresente al posto di decrescente. Questa riga
    for (int i = 0; i < DIM - 1; i++);
    cosa dovrebbe fare? Perchè è come se avessi scritto i = DIM-1
  • Re: Programmazione C

    enricoscarsissimo ha scritto:


    Hai scritto ordine_decresente al posto di decrescente. Questa riga
    for (int i = 0; i < DIM - 1; i++);
    cosa dovrebbe fare? Perchè è come se avessi scritto i = DIM-1
    Mi sono basato sull’ordinamento a bolla,ho scritto dim-1 perché non si può scrivere il precedente dell’ultimo numero
  • Re: Programmazione C

    Si ho capito, ma ti sto dicendo che quel ; alla fine lo rende un ciclo fine a se stesso, cioè dopo che viene eseguito una volta non ritornerà mai più. Potresti sostituire quella riga con i = DIM-1 e non cambierebbe nulla nel programma.
    Se volevi fare due cicli concatenati andava messa la graffa al posto del punto e virgola

    Altra cosa, hai messo un return nelle graffe dell'if, il che significa che dopo aver effettuato la prima sostituzione il programma ordine_decrescente uscirà e non verrà più richiamato, penso tu lo volessi mettere fuori dai due cicli for
  • Re: Programmazione C

    Gastaldo, ti avevo detto di controllare i ; proprio per togliere quel ; alla fine del for ma non hai controllato affatto. Leggi con attenzione le risposte che ti vengono date.
  • Re: Programmazione C

    enricoscarsissimo ha scritto:


    Si ho capito, ma ti sto dicendo che quel ; alla fine lo rende un ciclo fine a se stesso, cioè dopo che viene eseguito una volta non ritornerà mai più. Potresti sostituire quella riga con i = DIM-1 e non cambierebbe nulla nel programma.
    Se volevi fare due cicli concatenati andava messa la graffa al posto del punto

    enricoscarsissimo ha scritto:


    Hai scritto ordine_decresente al posto di decrescente. Questa riga
    for (int i = 0; i < DIM - 1; i++);
    cosa dovrebbe fare? Perchè è come se avessi scritto i = DIM-1
    Quindi come lo potrei scrivere?io ho messo nel primo for il ;perchè non abbiamo più istruzioni ma un secondo for che invece ha più istruzioni,allora per i io lo volevo togliere però mettendo j=i+1 mi chiede di mettere int i anche se l’ho messo nel primo for
Devi accedere o registrarti per scrivere nel forum
51 risposte