Vettore:Memorizza solo val negativi,non multipli di 3 o pari

di il
3 risposte

Vettore:Memorizza solo val negativi,non multipli di 3 o pari

Salve ragazzi, prima di tutto vi scrivo l'esercizio:
Scrivere un programma C che definisca due vettori v1 e v2 di N elementi
di tipo intero e memorizzi nei vettori valori “accettabili” acquisiti da
tastiera secondo quanto segue:
a. In v1 siano memorizzati solo i valori positivi ed i valori negativi
multipli di 3
b. In v2 siano memorizzati solo i valori negativi non multipli di 3 e
dispari
c. Tutti gli altri valori acquisiti siano ignorati
d. L’inserimento si conclude quando uno dei due vettori è pieno; a
questo punto si stampi a video il contenuto dei vettori acquisiti.
Ora vi spiego: non riesco proprio a rendere l'if per il vettore 2 in modo da soddisfare la richiesta. Ho provato moltissimo ma non ci sono riuscito. Ecco il codice, manca l'ultima parte di stampare ma quella la so fare.
#include <stdio.h>
#include <stdlib.h>
#define N 5

int main()
{
    int v1[N], v2[N], i;
    printf("Inserire i valori del primo vettore v1. \nSolo numeri positivi, se negativi, devono essere multipli di 3.\n\n");
    for(i=0; i<N; i++)
    {
        printf("Inserire valore: ");
        scanf("%d", &v1[i]);
        if(v1[i]<0 && (v1[i]%3)!=0)
        {
            printf("Il valore non soddisfa la richiesta.\n");
            i--;
        }
    }
    printf("\n");
    printf("Inserire i valori del secondo vettore v2. \nSolo numeri negativi non multipli di 3 e dispari.\n\n");
    for(i=0; i<N; i++)
    {
        printf("Inserire valore: ");
        scanf("%d", &v2[i]);
        if(v2[i]>0 && (v2[i]%3==0 || v2[i%2==0]))
        {
            printf("Il valore non soddisfa la richiesta.\n");
            i--;
        }
    }
    return 0;
}

3 Risposte

  • Re: Vettore:Memorizza solo val negativi,non multipli di 3 o pari

    Secondo me il problem è da rivedere diversamente. Tu devi presentare all'utente solo la possibilità di inserire un valore poi devi decidere dove va collocato il valore. non li devi dire riempi il primo poi riempi il secondo.
  • Re: Vettore:Memorizza solo val negativi,non multipli di 3 o pari

    Ho provato a costruirlo, dove sbaglio? Non finisco mai di aggiungere valori:

    p.s. da aggiungere il #define N numero_a_scelta
        int v1[N], v2[N], i, dato, flag;
        flag=1;
        printf("Inserire i valori da inserire nei due vettori: \n");
        for(i=0; i<N; i++)
        {
            printf("Inserire valore: ");
            scanf("%d", &dato);
            if(dato>0 && (dato%3)==0)
            {
                v1[i]=dato;
            }
            else
            {
                if(dato<0 && dato%3!=0 && dato%2!=0)
                {
                    v2[i]=dato;
                }
                else
                 flag=0;
            }
            if(flag==0)
             i--;
        }
        return 0;
    }
  • Re: Vettore:Memorizza solo val negativi,non multipli di 3 o pari

    Se ho capito bene ti serve una cosa così:
    
     #include <stdio.h>
     #include <stdlib.h>
     #define N 5
    
     int main()
     {
         int v1[N], v2[N];
         int indiceV1 = 0;
    	 int indiceV2 = 0;
    	 int valore = 0;
    	 do
    	 {
    		printf("Inserisci un valore:\t");
    		scanf(" %d", &valore);
    		if(valore %3 == 0)
    		{
    			v1[indiceV1] = valore;
    			indiceV1++;
    		}
    		else
    		{
    			if((valore < 0)  && (valore %2 != 0))
    			{
    				v2[indiceV2] = valore;
    				indiceV2++;
    			}
    		}
    	 }while(indiceV1 < N && indiceV2 < N); 
         return 0;
     }
    
Devi accedere o registrarti per scrivere nel forum
3 risposte