PDA

Visualizza la versione completa : [C] dati due vettori stampare i valori del primo non contenuti nel secondo..


tonyzz
09-09-2008, 14:48
Ciao a tutti,
da quasta mattina che provo a fare questo esercizio in C ma non mi viene proprio:

Scrivere un programma che ricevuti in ingresso due array monodimensionali di numeri interi di dimensione diversa, arr1 e arr2, stampi a video tutti gli elementi di arr1 non presenti in arr2.

Potreste gentilmente farmi vededere come si fa? Non capisco se devo inserire i valori da stampare in una struct o si pu fare direttamente nel ciclo for..
Non so proprio come farlo..

grazie mille a chi mi vorr aiutare

:)

LeleFT
09-09-2008, 15:05
Puoi postare ci che hai fatto e chiedere lumi sugli eventuali errori.
Chiedere di farti l'esercizio non ammesso nel forum.


Ciao. :ciauz:

tonyzz
09-09-2008, 15:25
Ok, non l'avevo postato perch sapevo che era sbagliatissimo, comunque questo:

#include <stdio.h>
#define N 4
#define M 6

typedef struct valori
{
int dato;
int cont;

}valori;

int main()
{
int arr1[N],arr2[M],i,j,k,f=0;
valori numeri[N];

for(i=0;i<N;i++){
printf("val primo array: ");
scanf("%d",&arr1[i]);
}

for(i=0;i<M;i++){
printf("val secondo array: ");
scanf("%d",&arr2[i]);
}


for(i=0;i<M;i++)
for(j=0;j<N;j++){

if(arr1[j]!=arr2[i]){

for(k=0;k<f;k++){

if(numeri[k].dato==arr1[j]){
numeri[f].cont++;
break;
}
}
if(k==f){
numeri[f].dato=arr1[j];
numeri[f].cont=1;
k++;
}

for(i=0;i<f;i++)
printf("%d",numeri[i]);

system("pause");
}

kk.87
09-09-2008, 16:09
Potresti utilizzare un ciclo for per scorrere l'array1 e uno while all'interno del for per scorrere il secondo.

for (i=0;i<N;i++){
while (A1[i]!=A2[j]) and (j<M){
j++
}
if (j=M) // quindi avremo che l'elemento del primo array nn c' nel secondo
stampa valore
}

tonyzz
09-09-2008, 16:52
Hai ragione, grazie per la dritta :) . Il mio problema sempre nell'analizzare le condizioni per cicli for e while.. non che sapresti consigliarmi una procedura di ragionamento per evitare di incappare in castronerie come quella che ho scritto prima?

grazie ciao

kk.87
09-09-2008, 17:51
utiliazziamo un for quando sappiamo quante volte il codice deve essere ripetuto, un while quando nn lo sappiamo.

tonyzz
09-09-2008, 17:57
Ok ti ringrazio..

Ho apportato la tua modifica, ma il prog non gira come dovrebbe..
che ho sbagliato?

#include <stdio.h>
#define N 4
#define M 6


int main()
{
int arr1[N],arr2[M],i,j=0;


for(i=0;i<N;i++){
printf("\nval primo array: ");
scanf("%d",&arr1[i]);
}

for(i=0;i<M;i++){
printf("\nval secondo array: ");
scanf("%d",&arr2[i]);
}


for(i=0;i<N;i++)
{

while(arr1[i]!=arr2[j]&& j<M){
j++;
}
if(j==M)
printf("\n%d",arr1[i]);
}

}






system("pause");

}


grazie :)

kk.87
09-09-2008, 18:04
alla fine di ogni ciclo for devi porre j=0, in modo tale che ti va a controllare il secondo array sempre dall'inizio, per ogni elemento del primo array

Loading