Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di tonyzz
    Registrato dal
    Sep 2006
    Messaggi
    82

    [C] dati due vettori stampare i valori del primo non contenuti nel secondo..

    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


  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Puoi postare ciò che hai fatto e chiedere lumi sugli eventuali errori.
    Chiedere di farti l'esercizio non è ammesso nel forum.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di tonyzz
    Registrato dal
    Sep 2006
    Messaggi
    82
    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");
    }

  4. #4
    Utente di HTML.it L'avatar di kk.87
    Registrato dal
    May 2008
    Messaggi
    45
    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
    }

  5. #5
    Utente di HTML.it L'avatar di tonyzz
    Registrato dal
    Sep 2006
    Messaggi
    82
    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

  6. #6
    Utente di HTML.it L'avatar di kk.87
    Registrato dal
    May 2008
    Messaggi
    45
    utiliazziamo un for quando sappiamo quante volte il codice deve essere ripetuto, un while quando nn lo sappiamo.

  7. #7
    Utente di HTML.it L'avatar di tonyzz
    Registrato dal
    Sep 2006
    Messaggi
    82
    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

  8. #8
    Utente di HTML.it L'avatar di kk.87
    Registrato dal
    May 2008
    Messaggi
    45
    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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.