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

    [C] Realloc e stringhe!!

    Raga tra poco ho un esame di C e sto vedendo alcuni appelli vecchi... e questo mi sconvolge!!
    Non voglio sapere la soluzione, ma solamente un consiglio sul procedimento, perchè non so assolutamente dove iniziare!

    Scrivere un programma che si pone l'obiettivo di leggere e poi memorizzare una serie di
    stringhe (non si sa quante) di lunghezza variabile, senza occupare memoria oltre quella
    necessaria. Il programma acquisisce da input, all'inizio, il numero di stringhe che si
    vogliono memorizzare (0 se nessuna), e dovrà effettuare poi la memorizzazione solo di
    quelle richieste. Il programma inoltre, prima di acquisire da input ogni stringa, acquisirà,
    sempre da input, la lunghezza della stringa che segue, che deve essere comprensiva di
    terminatore. Se la stringa fornita è più lunga di quanto dichiarato, i caratteri in eccesso non
    devono essere memorizzati. Per uscire si digiterà 0 alla richiesta della lunghezza.
    L’input del programma sarà quindi del tipo:
    <numero di stringhe>
    <lunghezza della prima stringa>
    <valore della prima stringa>

    <lunghezza ultima stringa>
    <valore ultima stringa>
    Si chiede di stampare alla fine del programma tutte e sole le stringhe memorizzate,
    prima di liberare la memoria.
    Non si può usare la funzione realloc(), né si possono utilizzare variabili con
    allocazione non fissa, ad esempio:
    {
    <leggi n>;
    char Stringa[n];
    }
    Sarà ulteriormente (e di molto) valutata la stesura dello stesso programma senza
    che si sappia da input il numero di stringhe da memorizzare. In questo, e solo in
    questo, caso è ammessa la realloc().

    Avevo pensato di prendere in input il numero delle stringhe da inserire! E poi fare un for ogni volta ed utilizzare una malloc!
    ES.
    for(i=0;i<n;i++)
    {scanf("%d",&dim);
    s=(char *)malloc(dim * sizeof(char));
    }

    Non so se questo procedimento è giusto, però vorrei sapere come risolvere il problema in quell'altra maniera, senza che si sappia da input il numero di stringhe da memorizzare, utilizzando la realloc!
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di 810106
    Registrato dal
    Jun 2008
    Messaggi
    67

    MMM...

    Ci sarebbero un sacco di possibità, ma tutto dipende da che punto sei con lo studio del C. Ad esempio
    se già hai studiato le strutture puoi implementarlo tramite vettore/lista di puntatori a strutture contenenti i dati sulla stringa.

    A che punto sei con gli studi? more Infoo!

  3. #3
    Puoi usare un puntatore a puntatore o una lista.
    Nel primo caso ad ogni cliclo aumenti la dimensione del puntatore a puntatore di uno e allochi la memoria necessaria per la stringa.
    Nel secondo caso aggiungi semplicemente un nodo.
    Per prendere solo n caratteri fai una funzione che legge solo n caratteri dallo stdin.

    EDIT: ho letto che non puoi utilizzare realloc, quindi ti conviene utilizzare una lista.

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Originariamente inviato da menphisx
    EDIT: ho letto che non puoi utilizzare realloc, quindi ti conviene utilizzare una lista.
    ed è anche notevolmente piu' pratica.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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.