Esercizio vettori

di il
4 risposte

Esercizio vettori

Buongiorno ragazzi, mi potreste aiutare a capire dove sbaglio ?
Devo inserire una sequenza di numeri non superiore a 10 all'interno di un vettore, dopodiché devo salvare in un secondo vettore solo i numeri pari inseriti.


#include<stdio.h>
#define N 10

int main()

{
	
	int vettore[N];
	int vettore2[N];
	int numero, i, j; 
	
	do{
		printf("Quanti numeri saranno inseriti ?");
		scanf("%d", &numero);
		if(numero>N || numero<0){
			
			printf("Errore! Il numero deve essere compreso tra 0 e %d", N);
		}
		}while(numero>N || numero<0);
	
	
	printf("Inserisci una sequenza di %d numeri\n \n", numero);
	
	for(i=0; i<numero; i++){
		
		printf("Inserisci numero:\n");
		scanf("%d", &vettore[i]);
		
	}
	
	printf("Hai inserito i seguenti numeri: \n");
	for(i=0; i<numero; i++){
		
		printf("Elemento %d: %d\n", i+1, vettore[i]);
	}
	
	
	for(i=0; i<numero; i++){
		
		if(vettore[i]%2 == 0){
			for(j=0; j<numero; j++){
			
			vettore2[j]=vettore[i];
		}
		}
			
	}
	
	printf("I numeri pari inseriti sono i sequenti:\n");
	
	for(j=0; j<numero; j++)
	printf("%d\n", vettore2[j]);
	
}

4 Risposte

  • Re: Esercizio vettori

    Questo pezzo qui mi lascia un po' perplesso:
    
       
       for(i=0; i<numero; i++){
          
          if(vettore[i]%2 == 0){
             for(j=0; j<numero; j++){
             
             vettore2[j]=vettore[i];
    		}	
          }
             
       }
       
    Eliminerei come prima cosa il secondo for all'interno dell'if e proverei ad iterare i e j insieme. Infine ricordati di mettere una variabile che conta quante volte entri nella condizione if(vettore%2 == 0) altrimenti non tieni traccia di quanti numeri pari ci sono. Cosa che ti servirà quando andrai a stampare i numeri pari e quindi in questa porzione di codice:
       printf("I numeri pari inseriti sono i sequenti:\n");
       
       for(j=0; j<numero; j++)
       printf("%d\n", vettore2[j]);
       
  • Re: Esercizio vettori

    Ti ringrazio per i suggerimenti, in effetti la parte in cui devo salvare i valori all'interno del secondo valore è quella che mi da più grattacapi.
    Ho provato a fare in questo modo e già va un po' meglio ma non sono ancora soddisfatto.
    Ho tolto il ciclo for e adesso effettivamentemi salva i numeri pari all'interno del secondo vettore, il problema è che poi mi stampa pure i valori delle varie celle del vettore in cui non è salvato alcun valore.
    Per esempio:

    Inserisco 4 numeri. 6 - 7 -8- 11. Il programma mi dirà che tra i numeri inseriti 6 e 8 sono numeri pari e poi mi stamperà anche valori non inseriti. Come posso evitare di fare questo ?
    for(i=0, j=0; i<numero; i++){
    		if(vettore[i]%2 == 0){
    		vettore2[j]=vettore[i];
    		j++;
    		}
    	}
    	printf("I numeri pari inseriti sono i sequenti:\n");
    	 for(j=0; j<numero; j++)
       printf("%d\n", vettore2[j]);

    Grazie
  • Re: Esercizio vettori

    Li stampa perché il ciclo for finale è sbagliato. Leggilo bene. Se stampi i valori fino a 'numero' è ovvio che stamperà tutti.

    Tu invece devi tenere presente che quanti sono i valori inseriti te lo dice proprio j

    Riflettici
  • Re: Esercizio vettori

    Ti avevo dato già un indizio quando ti ho scritto questo:
    Infine ricordati di mettere una variabile che conta quante volte entri nella condizione if(vettore%2 == 0) altrimenti non tieni traccia di quanti numeri pari ci sono.


    In via alternativa come dice oregon guardando la variabile j questa (alla fine del for) conosce quanti valori pari hai inserito. Se ci rifletti bene dovrebbe accendersi la "lampadina"
Devi accedere o registrarti per scrivere nel forum
4 risposte