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

    [C] Verificare l'ordinamento di un vettore

    Ciao a tutti! Sto facendo un programma che controlla se un array di interi ha gli elementi pari disposti in ordine crescente e gli elementi dispari disposti in ordine decrescente. Ho scritto questo codice, ma a quanto pare non riesce ha uscire dal primo ciclo.
    codice:
    #include <stdio.h>
    
    int main()
    {
    int i,j,ris;
    int V[]={1,5,2,4,3,3,4,2,5,1};
    ris=-1;
    
    for(i=0;i<10;i+2)
    {
    	for(j=i+2;j>i;j-2)
    	{
    	if(V[j]>V[i])
    	ris=0;
    	else
    	ris=1;
    	}
    
    }
    if(ris==0)
    printf("Gli elementi pari del vettore sono ordianti in ordine crescente\n");
    else
    printf("Gli elementi pari del vettore non sono ordianti in ordine crescente\n");
    ris=-1;
    for(i=1;i<10;i+2)
    {
    	for(j=i+2;j>i;j-2)
    	{
    	if(V[j]<V[i])
    	ris=0;
    	else
    	ris=1;
    	}
    }
    if(ris==0)
    printf("Gli elementi dispari del vettore sono ordianti in ordine decrescente\n");
    else
    printf("Gli elementi dispari del vettore non sono ordianti in ordine decrescente\n");
    
    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Nella prima for, secondo te

    i+2

    cosa fa ? Pensaci bene ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Si sposta di due elementi no?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da .arkSkull:.
    Si sposta di due elementi no?
    No
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ho modificato i+2 con i+=2... Però non fa quello che dovrebbe il programma... suggerimenti?

  6. #6
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Sbagli proprio a livello di concetto, supponi di avere un array fatto così
    3 2 1 2 4
    ed esegui il tuo algoritmo: avrai ke gli el pari sn ordinati!
    Questo xke 3<1 fa diventare la tua ris=1, ma 1<4 la fa tornare a 0! Devi settare l'algoritmo in modo che "basta una vola sola ke gli el nn sn in ordine ke ris diventa 1 e c resta x sempre!"...pensa tu a cm fare (suggerimento: or)

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da .arkSkull:.
    Ho modificato i+2 con i+=2... Però non fa quello che dovrebbe il programma... suggerimenti?
    Non ho detto che quello fosse l'unico problema, ma sicuramente era un errore ...

    Magari valuta questo pezzo di codice

    codice:
    ris=-1;
    for(i=0; i<8; i+=2)
       for(j=i+2; j>i; j-=2)
          if(V[j]>V[i])
             ris=0;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Adesso il programma funziona... anche se non ho usato nessun "or" come suggeriva Dark867.
    Ecco il codice:
    codice:
    #include <stdio.h>
    
    int main()
    {
    int i,j,ris;
    int V[]={1,5,2,4,3,3,4,2,5,1};
    ris=0;
    
    for(i=0;i<8;i+=2)
    {
    	for(j=i+2;j>i;j-=2)
    	{
    	if(V[j]<V[i])
    		ris=1;
    	}
    
    }
    if(ris==0)
    	printf("Gli elementi pari del vettore sono ordinati in ordine crescente\n");
    else
    	printf("Gli elementi pari del vettore non sono ordianti in ordine crescente\n");
    ris=0;
    for(i=1;i<8;i+=2)
    {
    	for(j=i+2;j>i;j-=2)
    	{
    	if(V[j]>V[i])
    		ris=1;
    	}
    }
    if(ris==0)
    	printf("Gli elementi dispari del vettore sono ordianti in ordine decrescente\n");
    else
    	printf("Gli elementi dispari del vettore non sono ordianti in ordine decrescente\n");
    
    return 0;
    }

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai usato praticamente il codice che ti ho suggerito ... hai invertito il significato della variabile res (non so perché) ma hai anche invertito < e > e quindi va bene ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Si va bene anke così.

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.