Creazione terzo vettore

di il
22 risposte

22 Risposte - Pagina 2

  • Re: Creazione terzo vettore

    Bug_Digitale ha scritto:


    E in che senso quanto valgono gli undici?

    Gli indici. i e j.

    comunque ho provato a mettere anche l'incremento ma non va. E scusa non funziona anche così la programmazione? cioè sbagliare anche tante volte alla fin fine ci sta, basta capire che si sbaglia e non rifarlo (pure se evidentemente io non lo sto capendo ahahaha)
    Sì, ma quando sbagli devi cercare il problema, non cambiare a caso finché ci azzecchi. Nella tua testa deve fare in un certo modo? Vedi se effettivamente funziona così, con due o tre iterazioni su carta scrivendo per ognuna di esse il valore delle variabili, oppure facendoli stampare a video.
    Posta il codice.
  • Re: Creazione terzo vettore

    Alexv ha scritto:


    Bug_Digitale ha scritto:


    E in che senso quanto valgono gli undici?

    Gli indici. i e j.

    comunque ho provato a mettere anche l'incremento ma non va. E scusa non funziona anche così la programmazione? cioè sbagliare anche tante volte alla fin fine ci sta, basta capire che si sbaglia e non rifarlo (pure se evidentemente io non lo sto capendo ahahaha)
    Sì, ma quando sbagli devi cercare il problema, non cambiare a caso finché ci azzecchi. Nella tua testa deve fare in un certo modo? Vedi se effettivamente funziona così, con due o tre iterazioni su carta scrivendo per ognuna di esse il valore delle variabili, oppure facendoli stampare a video.
    Posta il codice.
    ah capito capito. E si hai ragione, sto da un bel po' a cercare di capire il problema ahah, proverò a fare come dici, grazie :).
    Il codice è rimasto bene o male lo stesso, ho solo aggiunto l'incremento di i
    
    #include<stdio.h>
    #define N 2
    #define M 2*N
    
    void terzoVettore(int vett1[], int vett2[]){
    	int j, i, doppioVett[M];
    	
    	printf("Gli elementi del terzo vettore sono: ");
    	for(j=0;j<M;j++){
    		if(j%2==0){
    			doppioVett[j]=vett1[i];
    			printf("%d\n",doppioVett[j]);
    			i++;
    		}else{
    			doppioVett[j]=vett2[i];
    			printf("%d\n",doppioVett[j]);
    			i++;
    		}
    	}
    }
    
    main(){
    	
    	int vett1[N], vett2[N],i, j;
    	
    	printf("Inserisci i numeri del primo vettore: ");
    	for(i=0;i<N;i++){
    	scanf("%d",&vett1[i]);
    	}
    	printf("Inserisci i numeri del secondo vettore:");
    	for(j=0;j<N;j++){
    	scanf("%d",&vett2[j]);
    	}
    	
    	terzoVettore(vett1, vett2);
    	
    }
    
  • Re: Creazione terzo vettore

    Ci sei quasi. Solo che siccome i aumenta ogni volta, adesso prendi:
    doppioVett(0) = vett1(0)
    doppioVett(1) = vett2(1)
    doppioVett(2) = vett1(2)
    Ecc...
    in questi primi 3 passaggi, ti sei già perso vett1(1). È evidente un i che insegue j va troppo veloce, con un piccolo accorgimento puoi risolvere.
  • Re: Creazione terzo vettore

    Alexv ha scritto:


    Ci sei quasi. Solo che siccome i aumenta ogni volta, adesso prendi:
    doppioVett(0) = vett1(0)
    doppioVett(1) = vett2(1)
    doppioVett(2) = vett1(2)
    Ecc...
    in questi primi 3 passaggi, ti sei già perso vett1(1). È evidente un i che insegue j va troppo veloce, con un piccolo accorgimento puoi risolvere.
    okay quindi devo fare in modo che i incrementi nello stesso momento no? se mettessi la i nel ciclo for ma al di fuori degli if dovrebbe andare bene?
  • Re: Creazione terzo vettore

    Così come hai fatto, non è del tutto sbagliato, ma se devi tenere il segno di due vettori, e non di uno solo, la cosa più semplice è scontata da fare è...
  • Re: Creazione terzo vettore

    Alexv ha scritto:


    Così come hai fatto, non è del tutto sbagliato, ma se devi tenere il segno di due vettori, e non di uno solo, la cosa più semplice è scontata da fare è...
    utilizzare una nuova variabile da usare come contatore (o magari due)?
  • Re: Creazione terzo vettore

    Esatto. Una i per ciascun vettore.
  • Re: Creazione terzo vettore

    Alexv ha scritto:


    Esatto. Una i per ciascun vettore.
    scusa il ritardo nella risposta. Ma in effetti, mettono i++ negli if, non ho già un contatore? cioè ho capito che va troppo veloce, se ne mettessi 2 così da incrementare uno alla volta entrambi? Però se effettivamente ne mettessi 2 dovrei sostituire anche la i in questo vettore no?
    
    doppioVett[j]=vett2[i];
    printf("%d\n",doppioVett[j]);
    
    perché nel primo vettore magari uso come contatore i e qui magari cambio il contatore per non farlo uguale

    AGGIORNAMENTO: provando a fare come ti ho detto mi piazza bene i numeri del secondo vettore, mentre quelli del primo li fa diventare 0
    
    for(j=0;j<M;j++){
    		if(j%2==0){
    			doppioVett[j]=vett1[i];
    			printf("%d\n",doppioVett[j]);
    			i++;
    		}else{
    			doppioVett[j]=vett2[a];
    			printf("%d\n",doppioVett[j]);
    			a++;
    		}
    
    invece cambiando anche il contatore di i con un altro contatore mi scrive praticamente solo i numeri del primo vettore e in quelli del secondo mette 0..
    
    for(j=0;j<M;j++){
    		if(j%2==0){
    			doppioVett[j]=vett1[k];
    			printf("%d\n",doppioVett[j]);
    			k++;
    		}else{
    			doppioVett[j]=vett2[a];
    			printf("%d\n",doppioVett[j]);
    			a++;
    		}
    
    non capisco questa differenza al cambio di i, alla fin fine k e i in questo momento sono identici..

    AGGIORNAMENTO PT.2: ok ho risolto, non avevo inizializzato le variabili =0... ahahah, facendolo funziona tutto perfettamente :). Grazie mille per la pazienza ahha
Devi accedere o registrarti per scrivere nel forum
22 risposte