Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    4

    [C] unione di due array di stringhe con ordinamento

    Ciao a tutti, chi mi aiuta a svolgere questo esercizio?

    Chiedere all’utente di fornire in input due array di stringhe di dimensione a piacere. Restituire in output un unico array, unione dei due precedenti, ordinato alfabeticamente.
    Scrivere in un file gli array forniti in partenza e l’array risultato.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>


    #pragma warning(disable:4996)
    #define MAXCHAR 100




    void unione(char *A[], char *B[], char *C[], int n1, int n2);// esegue la fusione tra i due array in un unico array
    void stampa(char *C[], int n3);
    void ordinamento(char *C[], int n3);
    void swap(char *a, char *b);










    void main() { //inserimento dati
    char *A[MAXCHAR];// primo array
    char *B[MAXCHAR];//secondo array
    char *C[MAXCHAR];//array risultante comprente tutti gli elementi del primo e tutti gli eleemnti del secondo
    int n1, n2, n3;
    n3 = n1 + n2;
    int i;
    printf("Inserisci il numero di elementi del primo vettore:\n");
    scanf("%d", &n1);

    for (i = 0; i < n1; i++) {
    A[i] = (char*)malloc(MAXCHAR * sizeof(char));
    printf("Inserisci il %d numero: ", i+1);
    scanf("%s", A[i]);


    }
    printf("Inserisci il numero di elementi del secondo vettore:\n");
    scanf("%d", &n2);

    for (i= 0; i< n2; i++) {
    B[i] = (char*)malloc(MAXCHAR * sizeof(char));
    printf("Inserisci il %d numero: ", i+1 );
    scanf("%s", B[i]);
    }

    unione(A, B, C, n1, n2);

    free(A);
    free(B);
    free(C);


    }


    void unione(char *A[], char *B[], char *C[], int n1, int n2){ /*funziona che prende glie elementi del primo array
    e gli elementi del secono array e li inserisce in un terzo array*/
    int i;
    for (i = 0; i < n1; i++) {
    strcpy(C[i], A[i]);
    }


    for (i = 0; i < n2; i++) {
    strcpy(C[n1 + i], B[i]);
    }








    for (int i = 0; i < n1 + n2; i++) {
    printf("%d:%s\n", i, C[i]);
    printf("\n");


    }

    sono bloccata qui, mi carica solo gli elementi degli array senza copiarli nel secondo array.
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Forse fai un po' di confusione ...

    Questo

    char *A[MAXCHAR]

    è un array di MAXCHAR puntatori a stringhe ... Non è quello che pensi tu ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    4
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Forse fai un po' di confusione ...

    Questo

    char *A[MAXCHAR]

    è un array di MAXCHAR puntatori a stringhe ... Non è quello che pensi tu ...

    si, del tipo in A[0] mela A[1] pera e cosi via, idem per l'array B

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da hipnose Visualizza il messaggio
    si, del tipo in A[0] mela A[1] pera e cosi via, idem per l'array B
    A[0] punta a "mela" ma non si capisce perché MAXCHAR ... La grandezza del vettore dovrebbe essere uguale al numero massimo di stringhe...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    4
    Quote Originariamente inviata da oregon Visualizza il messaggio
    A[0] punta a "mela" ma non si capisce perché MAXCHAR ... La grandezza del vettore dovrebbe essere uguale al numero massimo di stringhe...
    numero massimo di caratteri che può contenere

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    4
    gli array me li carica bene, ma non riesco ad unirli nell'array C...non riesco a capire dove sto sbagliando

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non hai capito quello che ho scritto ... te lo spiegherà il professore ...

    La copia non funziona perché gli elementi di C non sono allocati (anzi, potrebbe andare tutto in crash)

    Le free sono tutte sbagliate
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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