Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: [C] Fusione di Array

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    16

    [C] Fusione di Array

    Salve a tutti,
    sono nuovo del forum, quindi vi chiedo preventivamente di ignorare e aiutarmi nel caso in cui io commetta qualche errore all'interno del forum.
    Sono iscritto al primo anno di informatica. A breve (giorno 5 Febbraio) devo dare un esame di programmazione 1, ho studiato solo che il libro trattava esclusivamente di parte teorica e poco e niente di pratica (scrittura di programmi, ecc...).
    Prima dell'esame il professore ci ha chiesto di creare 2 programmi dandoci diverse tracce.
    Io come prima ho scelto la fusione degli array, ma mi sto trovando in netta difficoltà, sono praticamente in bianco, e per questo è inutile che vi metta qui qualche esempio di quello che ho provato a fare perché è praticamente inutile.
    Quindi vi chiedo (quasi vi supplico) di darmi una mano a sviluppare il programma e a farmi comprendere il tutto.

    La traccia è questa:

    Fusione di Array
    Supponi di avere a disposizione due arrayA e B di dimensione rispettivamente pari ad m ed n. Sia m che n sono interi positivi e supponiamo che m ≠ n. Infine, supponiamo che A sia ordinato in senso crescente (ovvero l'elemento di valore minimo in A e l'elemento A[0]) mentre B sia ordinato in senso decrescente (ovvero l'elemento di valore massimo in B e l'elemento B[0]).
    L'obiettivo dell'esercizio e calcolare l'array C ottenuto facendo l'unione di A e B. L'unione di due
    array A e B e definita come l'insieme degli elementi che appartengono ad A oppure a B. Se un elemento figura sia in A che in B allora deve essere preso una sola volta.
    Risolvi i seguenti esercizi:
    1. Scrivi una funzioneC che calcoli l'unione C di A e B; C deve essere ordinato in senso crescente.
    2. Scrivi una funzione C che calcoli l'unione C di A e B; C deve essere ordinato in senso decrescente.
    3. Supponiamo che sia m = n. Quanto vale la complessità computazionale (espressa tramite la notazione O(·)) dell'algoritmo da te proposto?
    4. Come cambia la complessità computazionale del tuo algoritmo se invece supponiamo che sia
    m > n? In questo caso m e strettamente maggiore di n. Cosa succede invece se n > m?

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    1)2) basta che peschi sempre i minimi (i massimi) dagli array e li confronti. Quando finisci gli elementi di uno gli elementi dell'altro saranno tutti maggiori o tuttalpiù uguali all'ultimo elemento inserito.
    3)4) sono prettamente teoriche, pensaci tu dopo l'implementazione.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    16
    Il problema sta appunto nell'implementazione, ho scritto(con molta fatica) due array che generano numeri casuali in ordine crescente uno e decrescente l'altro. Se non fosse stato per internet non sarei riuscito a scrivere i codici. E vorrei sapere se mi conviene dare un limite ai numeri che genera o no, dato che genera numeri a 4 o 5 cifre

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    A parte che l'esercizio è scrivere due funzioni che uniscano gli array.
    In ogni caso non si può risolverti un esercizio scolastico.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    16
    In che senso non si può risolvere un esercizio scolastico?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    16
    Comunque questo è quello che ho tentato di fare, solo che ovviamente non funziona credo che il problema sia il printf, poi non so se ci sia qualche altra anomalia.
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        int A[] = {0, 2, 4, 6,};
        int m = 4;
        int B[] = {9, 8, 7, 6, 3, 1};
        int n = 6;
        int C[10];
        int i, j, k;
        i = 0;
        j = n;
        k = 0;
        while (i<m && j<n)
        {
             if (A[i]<B[j])
             {
                   C[k]=A[i];
                   i++;
             }
             else
             {
                   C[k]=B[j];
                   j--;
             }
             k++;      
        }
        while (i<m)
        {
             C[k]=A[i];
             i++;
             k++;
        }
        while (j<n)
        {
             C[k]=B[j];
             j--;
             k++;
        }
        printf("L'array C e' [%d] = %d\n",k,C[k]);  
        system("pause");
    }
    Ultima modifica di MItaly; 30-01-2015 a 22:51 Motivo: Corretto tag CODE

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Usa i tag CODE per il codice, non QUOTE.
    In ogni caso devo controllare se (j >= 0) non se (j < n). E dovresti partire da (j = n-1) non da (j = n).
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    16
    Come ho detto precedentemente sono nuovo e mi scuso per gli eventuali errori riguardanti il forum, ma essendo che l'esame è alle porte non mi sono messo a leggere il regolamento del forum. Comunque adesso che ho seguito i tuoi consigli il programma funziona l'unico problema è che se ci sono elementi in comune nei due array me li inserisce entrambi quando invece dovrebbe metterne uno solo.

  9. #9
    Quote Originariamente inviata da shiony Visualizza il messaggio
    In che senso non si può risolvere un esercizio scolastico?
    Nel senso che normalmente non si fornisce "risoluzione on demand" di esercizi (che didatticamente è sostanzialmente inutile), ma si cerca di "guidare" alla soluzione partendo dal codice scritto da chi pone la domanda. La cosa è specificata nel regolamento (che un giorno o l'altro mi deciderò ad alleggerire un attimo ):
    Niente "pappa pronta": non vengono tollerate le richieste di codice già pronto all'uso, la commissione di programmi da realizzare in forma retribuita o gratuita, oppure la risoluzione delegata a terzi di esercizi e problemi.
    L'utente che apre la discussione ha il compito di fornire la propria proposta (o tentativo) di risoluzione ed eventualmente il codice sorgente scritto; in assenza di questi elementi, è comunque obbligatorio indicare con precisione i dettagli del problema, le indagini già fatte e il dubbio specifico in merito, senza limitarsi a porre la questione e delegare ad altri il lavoro.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    16
    Si infatti nel primo messaggio che ho messo non ho scritto: " voglio svolto l'esercizio", perché ovviamente so che in forum come questi è quasi una blasfemia . Le mie parole sono state queste: " Quindi vi chiedo (quasi vi supplico) di darmi una mano a sviluppare il programma e a farmi comprendere il tutto."
    Comunque come ho scritto sopra l'ultimo problema che mi è rimasto è riguardante gli elementi in comune

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.