Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - ciao a tutti ho un problemino con un programmacon lista lineare
Forum - C/C++ - ciao a tutti ho un problemino con un programmacon lista lineare

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 19:07
Giovedì, 07/05/2009
ciao a tutti ho un problema con il seguente programma
il nostro professore ci ha dato da fare:
un programma in c++ che presa una stringa la memorizzi in una lista lineare con le funzioni copia lunghezza e comparazione.


sinceramente nn sò come fare avete qualche consiglio vi preannuncio che sulla pila e coda ci ho capito poco se potete aiutarmi grazie mille


:d

PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 20:50
Giovedì, 07/05/2009
Sucsa ma la tua richiesta non mi è chiara, potresti fare un esempio?
Inatanto ti linko un mio porgramma che spiega la pila: http://www.pierotofy.it/pages/sorgenti/dettagli/18049-%5BC ...

PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 21:29
Giovedì, 07/05/2009
si scusa mi sono spiegato male e comunque nn vedo nulla nel file che i hai postato
allora in pratica devo fare inserire una stringa e far si che ogni lettera sia  collegata mediante la pila o la coda,del tipo

(c) collegata ad (i)mediante puntatore e questa frase poi devo anche essere in grado di copiarla,contare la lunghezza e fare la comparazione
praticamente devo fare la pila con i caratteri della stringa uno a uno dimmi se mi sono spiegato ciao e grazie

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 17:35
Venerdì, 08/05/2009
Prima cosa : quando leggi una stringa, come dovresti sapere, in coda a tutti i caratteri letti viene inserito un carattere di terminazione che è '\0'.
Quindi trattando la stringa con un puntatore fai un bel while che scorre la stringa finche non trovi '\0'.

Poi all'interno del while per ogni carattere aggiungi un elemento alla stringa.

Poi per la terminazione della stringa ci son 2 soluzioni possibili che ti consiglio :
   1 - Aggiungi un ultimo elemento che contiene il '\0'
   2 - Fai si che l'ultimo elemento inserito punti, come elemento successivo, a NULL

Fatte queste considerazioni preliminari riuscire ad implementare le funzioni richieste non è difficile.

Spero di essere stato chiaro e di aiuto

:k:

PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 21:31
Venerdì, 08/05/2009
grazie mille
è un bel consiglio il problema è che dei punatori ho capito veramente poco mi spiegheresti come fare a scorrere la stringa con un puntatore?

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 21:49
Venerdì, 08/05/2009
un puntatore è un oggetto che punta ad un indirizzo in memoria.

ad esempio

Codice sorgente - presumibilmente C/C++

  1. int a = 10;
  2. int *p;
  3. p = &a;



dichiara un puntatore p che punta ad un indirizzo di memoria, che in questo caso è l'indirizzo ove è allocata la variabile a.
come dovresti sapere anche scrivere :

Codice sorgente - presumibilmente C/C++

  1. int v[100];



se consideri solamente v senza specificare l'indice ottieni l'indirizzo del primo elemento del vettore v :)

solo che a differenza di un vettore, ad un puntatore si possono applicare gli operatori aritmetici dato che vengono trattati come semplici variabili.

ora per quanto riguarda la lettura si farà così :


Codice sorgente - presumibilmente C++

  1. int main()
  2. {
  3.         char v[100];
  4.         char *p;
  5.  
  6.         scanf("%s", &v[0]); //legge la stringa
  7.         p = &v[0]; //p punterà al primo elmento di v
  8.  
  9.         //finchè p non punta al carattere di terminazione
  10.         while((*p) != '\0')
  11.         {
  12.                 printf("%c",*p); //stampa il valore a cui punta p
  13.                 p++; //incrementa p
  14.         }
  15.         return 0;
  16. }



Se proverai il programma vedrai che dopo aver letto la stringa iniziale essa verrà ristampata sfruttando il ciclo while.

Se hai altre domande fai pure.:k:

PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 21:55
Venerdì, 08/05/2009
scusami se sn duro ma sono stanchino stasera
allora il codice che mi hai postato serve a stampare la stringa inserita da un utente ma la salva in una lista lineare???oppure è semplicemente un mdodo di stampare la stringa mi scuso ancora

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 22:03
Venerdì, 08/05/2009
E' un semplice modo di sfruttare un puntatore per scorrere ogni singolo carattere della stringa.

Nel while ti consiglierei di scriverci il codice che ti servirà ad aggiungere un elemento alla lista :k:

Ultima modifica effettuata da andrea.b89 il 08/05/2009 alle 22:03
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 22:04
Venerdì, 08/05/2009
ok grazie mille

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo