IPB

Benvenuto Visitatore ( Log In | Registrati )

Seguici su:    
 
Reply to this topicStart new topic
> Auto per un esercizio i c ;)
Eater
messaggio Monday 9 May 2011 - 19:54
Messaggio #1

Special User
Gruppo icone

Gruppo: Membri
Messaggi: 128
Iscritto il: Thu 30 December 2010 - 12:29
Utente Nr.: 52.048
Feedback: 0 (0%)




Salve ragazzi ormai è gia da un pò che sono qui e vedo che c'è gente che ne capisce davvero molto di linguaggio di programmazione C...
mi trovo davanti a questo esercizio, e non riesco a capire come posso rintracciare il nome dopo che l'esterno lo ha inserito da tastiera ... per il resto dovrei riuscire a farle, ma questo particolare mi confonde.

l'es è a questo indirizzo: http://www.liviula.net/informatica/terza/v...enzegriglia.pdf

(ovviamente rimuovete il link se non posso metterlo, ma è semplicemente il sito della mia prof xD)


--------------------


 Go to the top of the page
 
+Quote Post
Daviex
messaggio Monday 9 May 2011 - 20:02
Messaggio #2

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.856
Iscritto il: Thu 20 December 2007 - 18:35
Da: Messina
Utente Nr.: 23.776
Feedback: 0 (0%)

Codice Amico 3DS:
1521-4722-7425
Nintendo Network ID:
Daviex94



Se mi dai 10/15 minuti ti scrivo il programma e ti spiego la parte che ti interessa wink.gif

Messaggio modificato da Daviex il Monday 9 May 2011 - 20:04


--------------------


 Go to the top of the page
 
+Quote Post
Eater
messaggio Monday 9 May 2011 - 20:20
Messaggio #3

Special User
Gruppo icone

Gruppo: Membri
Messaggi: 128
Iscritto il: Thu 30 December 2010 - 12:29
Utente Nr.: 52.048
Feedback: 0 (0%)




CITAZIONE (Daviex @ Monday 9 May 2011 - 21:02) *
Se mi dai 10/15 minuti ti scrivo il programma e ti spiego la parte che ti interessa wink.gif

sisi grazie mille ;D


--------------------


 Go to the top of the page
 
+Quote Post
Pak_Gatsu
messaggio Monday 9 May 2011 - 20:28
Messaggio #4

No-Life GBARL
Gruppo icone

Gruppo: Veterani
Messaggi: 16.172
Iscritto il: Fri 3 September 2004 - 17:12
Da: Roma
Utente Nr.: 1.542
Feedback: 0 (0%)

Codice Amico Switch:
6861-2949-9189
Codice Amico 3DS:
2234-7478-7577
Nintendo Network ID:
PakGatsu
Dream Code Animal Crossing NL:
7500-2265-8704



Ma sono il solo che non riesce ad interpretare la tabella e a capire il problelma? biggrin.gif
Comunque per tornare in tema che strutture dati hai fatto e puoi usare?

Edit: Posto di aver capito il tuo dubbio (e la tabella), potresti rappresentare il tutto con una cosa del genere: http://www.liviula.net/informatica/libro/1...eArray2DInC.pdf
Una prima soluzione grezza potrebbe essere quella di scorrere l'array per trovare il nome digitato, letto da scanf, e prendere/elaborare i valori che ti servono. Visto che i nomi sono ordinati puoi anche evitare di fare iterazioni inutili durante la ricerca wink.gif

Messaggio modificato da Pak_Gatsu il Monday 9 May 2011 - 20:40


--------------------
Le mie gamertag
» Clicca per leggere lo Spoiler! «


Scambio giochi Steam, Origin, GOG ed Xbox 360 - Aggiornato al 02/01/2020
 Go to the top of the page
 
+Quote Post
Trivia
messaggio Monday 9 May 2011 - 20:30
Messaggio #5

Expert GBA/NDS
Gruppo icone

Gruppo: Moderatori
Messaggi: 1.939
Iscritto il: Thu 31 May 2007 - 10:06
Da: β Persei
Utente Nr.: 18.491
Feedback: 1 (100%)

Codice Amico 3DS:
2921-9207-0800
Nintendo Network ID:
Trivia89



Non sono sicuro di aver capito bene il tuo problema... chiaramente hai bisogno di un piccolo buffer (un array di char) per ospitare l'input dell'utente, hai bisogno di raccogliere questo input (con la funzione scanf, ad esempio)... qual è il punto in particolare in cui hai un disagio?

Edit: Avevo frainteso il tuo post; chiaramente per "rintracciare" il nome devi fare un confronto "cella per cella" tra le varie stringhe.
Verosimilmente avrai un array di struct, ciascuna con un campo nome; dunque userai un ciclo for per iterare sull'array, e posizione per posizione userai la funzione strcmp usando come argomenti l'input utente e il campo "nome" dell'elemento di turno dell'array.
Penso sia chiaro, ma chiaramente posso scriverti un po' di codice se ne hai bisogno.

Messaggio modificato da Trivia il Monday 9 May 2011 - 20:33


--------------------


~ And there is only one thing we say to Death: Not today. ~
 Go to the top of the page
 
+Quote Post
Daviex
messaggio Monday 9 May 2011 - 20:32
Messaggio #6

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.856
Iscritto il: Thu 20 December 2007 - 18:35
Da: Messina
Utente Nr.: 23.776
Feedback: 0 (0%)

Codice Amico 3DS:
1521-4722-7425
Nintendo Network ID:
Daviex94



Credo intenda nella parte in cui inserisce il nome è già stato inserito, e in quel caso lo rifaccia inserire


--------------------


 Go to the top of the page
 
+Quote Post
Eater
messaggio Monday 9 May 2011 - 20:33
Messaggio #7

Special User
Gruppo icone

Gruppo: Membri
Messaggi: 128
Iscritto il: Thu 30 December 2010 - 12:29
Utente Nr.: 52.048
Feedback: 0 (0%)




CITAZIONE (Pak_Gatsu @ Monday 9 May 2011 - 21:28) *
Ma sono il solo che non riesce ad interpretare la tabella? biggrin.gif
Vorrei aiutare ma non capendo come leggere la tabella non vorrei scrivere fesserie

bhe ti capisco questa prof. è abbastanza strana... cercherò di spiegartela io:

- i primi due rettangoli contengono rispettivamente cognome e nome;
- affianco vi è la data della lezione;
- quel vettore che segue la data contiene il numero corrispondente all'alunno (es: placido n° 7 nell'elenco);
- e infine il numero totale di assenti il giorno.

spero di aver chiarito il dubbio e di non aver fatto capitan ovviO xD


--------------------


 Go to the top of the page
 
+Quote Post
Daviex
messaggio Monday 9 May 2011 - 20:42
Messaggio #8

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.856
Iscritto il: Thu 20 December 2007 - 18:35
Da: Messina
Utente Nr.: 23.776
Feedback: 0 (0%)

Codice Amico 3DS:
1521-4722-7425
Nintendo Network ID:
Daviex94



Non lo avevo capito nemmeno io.

Comunque siccome devo uscire, ti spiego il concetto.

Creiamo due For, un con i = 0, i < n-1 ( numero alunni ); i++ mentre l'altro j = i+1; j < n; j++, all'interno metti l'inserimento e subito dopo un if che controlla se le stringhe inserite se sono uguali come:

if((strcmp(alun[i].nome, alun[j].nome) == 0) && (strcmp(alun[i].cognome, alun[j].cognome) == 0))

e all'interno altra cosa...

ORa devo andare, mi spiace di non poterti essere più d'aiuto di cosi.

Spero tu risolva biggrin.gif

Ciao


--------------------


 Go to the top of the page
 
+Quote Post
Eater
messaggio Monday 9 May 2011 - 20:47
Messaggio #9

Special User
Gruppo icone

Gruppo: Membri
Messaggi: 128
Iscritto il: Thu 30 December 2010 - 12:29
Utente Nr.: 52.048
Feedback: 0 (0%)




il vero problema è che non abbiamo mai usato la funzione strcmp o.o intuisco a cosa possa servire ma non ce ne hanno proprio mai parlato... comunque grazie lo stesso wink.gif

EDIT: umm inserisco il cognome in una stringa, poi faccio una lettura del vettore e individuo il numero nell'elenco, fatto cio faccio un altro confronto (questa volta nel vettore delle assenza) per trovare i giorni in cui l'alunno è stato assente... si ma questo confronto come lo faccio?? .-.

Messaggio modificato da Eater il Monday 9 May 2011 - 20:51


--------------------


 Go to the top of the page
 
+Quote Post
Pak_Gatsu
messaggio Monday 9 May 2011 - 20:48
Messaggio #10

No-Life GBARL
Gruppo icone

Gruppo: Veterani
Messaggi: 16.172
Iscritto il: Fri 3 September 2004 - 17:12
Da: Roma
Utente Nr.: 1.542
Feedback: 0 (0%)

Codice Amico Switch:
6861-2949-9189
Codice Amico 3DS:
2234-7478-7577
Nintendo Network ID:
PakGatsu
Dream Code Animal Crossing NL:
7500-2265-8704



Per quello basta fare rapida ricerca su internet... tanto per fare un esempio: http://digilander.libero.it/uzappi/C/libre...oni/strcmp.html
Magari il sito lascia un pò a desiderare ma in due secondi ho trovato una breve descrizione della funzione che ti fa capire come funziona. Se fai alcune prove in un semplice programmino tutto ti sarà più chiaro.

Edit: Per la funzione se dimostri di aver capito come funziona (non che ci voglia poi molto), e se ovviamente non è proibito o è richiesto dal testo di usare altro, non vedo perchè non usarla. Detto in altri modi se già esiste l'acqua calda perchè reinventarla? Ovviamente il mio è solo un consiglio da studente universitario che forse mal si adatta alla scuola...

Messaggio modificato da Pak_Gatsu il Monday 9 May 2011 - 21:08


--------------------
Le mie gamertag
» Clicca per leggere lo Spoiler! «


Scambio giochi Steam, Origin, GOG ed Xbox 360 - Aggiornato al 02/01/2020
 Go to the top of the page
 
+Quote Post
%IO ME MEDESIMO
messaggio Monday 9 May 2011 - 20:57
Messaggio #11

Boss GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 561
Iscritto il: Thu 13 September 2007 - 19:19
Da: Termoli
Utente Nr.: 21.453
Feedback: 0 (0%)




non so se ti può essere di aiuto mapotresti risolverlo tranquillamente con un vettore (nel quale inserire i dati delle assenze) e ovviamente cicli for


--------------------
FORZA INTER/ UN Pò DI TUTTO IN SPOILER:
» Clicca per leggere lo Spoiler! «
le mie console:
» Clicca per leggere lo Spoiler! «
PS1,PSP(rotta),NUOVA PSP SLIM E LITE GRIGIA,PS3(rotta),GAMECUBE,DS,GBA,WII

HO FINITO COMPLETAMENTE IL POKEDEX 493 SU 493 E QUESTI SONO I MIEI AL LIVELLO 100
» Clicca per leggere lo Spoiler! «
CHARIZARD,INFERNAPE,TYPHLOSION,BLAZIKEN,SWAMPERT,FERALIGATR,BLASTOISE,S
CEPTILE, VENOSAUR,MEGANIUM,TYRANITAR,NIDOKING,MILOTIC,MEWTWO,LUGIA,HOHO ,CELEBI,KYOGRE,GROUDON,RAYQUAZA,DEOXYS,DITTO.

CODICE AMICO :
» Clicca per leggere lo Spoiler! «
PERLA 1203-7209-8446,WORMS OPEN WARFARE 2 369491444362,42 CLASSICI SENZA TEMPO 0559-5883-1927

SPIDERPORK FANCLUB
BAN XBOX360 A HITLER
halo 3 su ps3 da non perdere
Statisticamente, il 98% degli utenti di Gbarl non usa il tasto Edit. Se fai parte del 2%, copia e incolla questa frase nella tua firma.


felice possessore di HTC HD2 con win mobile 6.5.x e android 2.1
 Go to the top of the page
 
+Quote Post
Eater
messaggio Monday 9 May 2011 - 21:01
Messaggio #12

Special User
Gruppo icone

Gruppo: Membri
Messaggi: 128
Iscritto il: Thu 30 December 2010 - 12:29
Utente Nr.: 52.048
Feedback: 0 (0%)




CITAZIONE (%IO ME MEDESIMO @ Monday 9 May 2011 - 21:57) *
non so se ti può essere di aiuto mapotresti risolverlo tranquillamente con un vettore (nel quale inserire i dati delle assenze) e ovviamente cicli for

si ma il mio problema è il confronto umm mi spiego meglio:
come faccio a trovare il nome digitato da tastiera all'interno del vettore?? ovviamente devo fare un confronto ma come??


p.s. magari potrei chiedere se posso usarla domani potrebbe risultare un punto a favore dato l'interessamento :trollface:
altrimenti mi spremo le meningi e provo a farle senza lo strcmp ...

Messaggio modificato da Eater il Monday 9 May 2011 - 21:17


--------------------


 Go to the top of the page
 
+Quote Post
Pak_Gatsu
messaggio Monday 9 May 2011 - 21:21
Messaggio #13

No-Life GBARL
Gruppo icone

Gruppo: Veterani
Messaggi: 16.172
Iscritto il: Fri 3 September 2004 - 17:12
Da: Roma
Utente Nr.: 1.542
Feedback: 0 (0%)

Codice Amico Switch:
6861-2949-9189
Codice Amico 3DS:
2234-7478-7577
Nintendo Network ID:
PakGatsu
Dream Code Animal Crossing NL:
7500-2265-8704



Sarà l'ora tarda ma ancora non ho capito il tuo problema e come sono rappresentati i nomi ed i cognomi nell'esercizio... comunque se proprio non vuoi usare questa funzione createne una te che lavora più o meno allo stesso modo. Ad esempio, posto che hai delle "stringhe" classiche confronta carattere per carattere i due nomi e ritorna un int che ti dice se sono o no uguali.
Ovviamente ti servirà anche un for che cicla su tutto l'array per fare i confronti.

Messaggio modificato da Pak_Gatsu il Monday 9 May 2011 - 21:24


--------------------
Le mie gamertag
» Clicca per leggere lo Spoiler! «


Scambio giochi Steam, Origin, GOG ed Xbox 360 - Aggiornato al 02/01/2020
 Go to the top of the page
 
+Quote Post
Gamera
messaggio Monday 9 May 2011 - 21:26
Messaggio #14

Utente GBARL
Gruppo icone

Gruppo: Membri
Messaggi: 73
Iscritto il: Wed 12 October 2005 - 13:43
Da: Crema
Utente Nr.: 7.895
Feedback: 0 (0%)

Codice Amico 3DS:
0645 - 5859 - 8806



QUOTE (Eater @ Monday 9 May 2011 - 22:01) *
QUOTE (%IO ME MEDESIMO @ Monday 9 May 2011 - 21:57) *
non so se ti può essere di aiuto mapotresti risolverlo tranquillamente con un vettore (nel quale inserire i dati delle assenze) e ovviamente cicli for

si ma il mio problema è il confronto umm mi spiego meglio:
come faccio a trovare il nome digitato da tastiera all'interno del vettore?? ovviamente devo fare un confronto ma come??


p.s. magari potrei chiedere se posso usarla domani potrebbe risultare un punto a favore dato l'interessamento :trollface:
altrimenti mi spremo le meningi e provo a farle senza lo strcmp ...



Ricorda che in C le stringhe sono vettori di caratteri. Se non vuoi usare la strcmp puoi confrontare le stringhe carattere per carattere. Una stringa finisce sempre con il carattere '\0' . Quindi se S è la tua stringa puoi fare un ciclo del tipo
i=0;
while (s[i]!='\0'){
....... e qui quello che ti serve ....
i++;
}


--------------------
Ciao ciao!
 Go to the top of the page
 
+Quote Post
Eater
messaggio Monday 9 May 2011 - 21:27
Messaggio #15

Special User
Gruppo icone

Gruppo: Membri
Messaggi: 128
Iscritto il: Thu 30 December 2010 - 12:29
Utente Nr.: 52.048
Feedback: 0 (0%)




CITAZIONE (Pak_Gatsu @ Monday 9 May 2011 - 22:21) *
Ancora non ho capito come sono rappresentate i nome ed i cognomi nell'esercizio ma se proprio non vuoi usare questa funzione createne una te che lavora più o meno allo stesso modo. Ad esempio, posto che sono delle "stringhe" classiche confronta carattere per carattere i due nomi e ritorna un int che ti dice se sono o no uguali.
Ovviamente ti servirà anche un for che cicla su tutto l'array per fare i confronti.

umm ... forse mi hai dato l'ispirazione giusta ... facendo così inizializzo un cont che appunto conti i confronti che ho fatto così da poter sapere anche il numero identificativo del cognome per poter visualizzale le relative giornate di assenze...


--------------------


 Go to the top of the page
 
+Quote Post
Trivia
messaggio Monday 9 May 2011 - 21:29
Messaggio #16

Expert GBA/NDS
Gruppo icone

Gruppo: Moderatori
Messaggi: 1.939
Iscritto il: Thu 31 May 2007 - 10:06
Da: β Persei
Utente Nr.: 18.491
Feedback: 1 (100%)

Codice Amico 3DS:
2921-9207-0800
Nintendo Network ID:
Trivia89



CITAZIONE (Eater @ Monday 9 May 2011 - 22:01) *
[...]

Non ti preoccupare per la strcmp di cui non hai mai sentito parlare... due suggerimenti:

1. Se studi informatica e immagini una carriera che riguardi l'informatica e la programmazione, non è mai troppo presto per iniziare ad anticipare i prof. e studiare autonomamente documentazione e man pages... migliorerai tantissimo in men che non si dica!

2. Un detto dice che i programmatori "non devono reinventare la ruota", ossia: esiste la strcmp, non preoccuparti ed usala!
Una versione che preferisco è "Non reinventare la ruota, a meno che tu non voglia capire meglio come funzionano le ruote", ossia immagina in cosa consiste un confronto tra due nomi; chiaramente è un confronto tra stringhe, che deve comportarsi "grossomodo" come un confronto a mezzo di operatore di uguaglianza... ma quando due stringhe sono uguali? Decisamente quando tutti i loro elementi sono uguali, dunque puoi provare a percorrerle con un ciclo e confrontare lettera per lettera; se tutte dovessero essere uguali avresti finalmente trovato il nome che cercavi. Chiaramente, una volta capito "cosa c'è sotto", puoi tranquillamente iniziare ad usare la funzione di libreria senza preoccuparti.

P.S. rispetto al codice di Daviex preciserei che solo uno dei due argomenti dovrebbe essere un array di strutture "alunno", l'altro è semplicemente la stringa che hai usato come buffer per il tuo testo da tastiera.

P.P.S. nel "grossomodo" tra virgolette è nascosta tutta la mia stima per l'OOP, nonché per l'overloading degli operatori e, in misura diversa, per il Duck Typing; e la mia crociata infinita verso i professori che vedono nel C l'unica fede laugh.gif
Il che si traduce in tanti soldini per me che faccio ripetizioni private, quindi BRAVI PROFESSORI wink.gif

Messaggio modificato da Trivia il Monday 9 May 2011 - 21:30


--------------------


~ And there is only one thing we say to Death: Not today. ~
 Go to the top of the page
 
+Quote Post
Gamera
messaggio Monday 9 May 2011 - 21:33
Messaggio #17

Utente GBARL
Gruppo icone

Gruppo: Membri
Messaggi: 73
Iscritto il: Wed 12 October 2005 - 13:43
Da: Crema
Utente Nr.: 7.895
Feedback: 0 (0%)

Codice Amico 3DS:
0645 - 5859 - 8806



QUOTE (Eater @ Monday 9 May 2011 - 22:27) *
QUOTE (Pak_Gatsu @ Monday 9 May 2011 - 22:21) *
Ancora non ho capito come sono rappresentate i nome ed i cognomi nell'esercizio ma se proprio non vuoi usare questa funzione createne una te che lavora più o meno allo stesso modo. Ad esempio, posto che sono delle "stringhe" classiche confronta carattere per carattere i due nomi e ritorna un int che ti dice se sono o no uguali.
Ovviamente ti servirà anche un for che cicla su tutto l'array per fare i confronti.

umm ... forse mi hai dato l'ispirazione giusta ... facendo così inizializzo un cont che appunto conti i confronti che ho fatto così da poter sapere anche il numero identificativo del cognome per poter visualizzale le relative giornate di assenze...


Hai un vettore di struct con nome e cognome. La posizione del vettore è il numero dello studente. Quindi il primo studente è il numero 0 o se preferisci 0+1 e così via.

Le lezioni sono in un altro vettore di struct con giorno, mese e anno (int).

Le assenze le metterei in una matrice di e NMAXLEZIONI x e NMAXALUNNI+1 (perchè devi usare l'ultima cella per metterci il totale degli alunni assenti).

Una volta acquisito il cognome dello studente lo ricerchi nel vettore degli studenti. La sua posizione è il numero dello studente che poi devi ricercare nella matrice. La riga nin cui lo trovi è il numero della cella del vettore lezioni dove puoi trovare la data della lezione. Un po' laborioso ma non difficile.

Aggiungo che mi sembra strano che alla fine della terza non abbiate ancora fatto le funzioni per lavorare sulle stringhe .... magari ti sono sfuggite?

Messaggio modificato da Gamera il Monday 9 May 2011 - 21:35


--------------------
Ciao ciao!
 Go to the top of the page
 
+Quote Post
Eater
messaggio Monday 9 May 2011 - 21:41
Messaggio #18

Special User
Gruppo icone

Gruppo: Membri
Messaggi: 128
Iscritto il: Thu 30 December 2010 - 12:29
Utente Nr.: 52.048
Feedback: 0 (0%)




nono ti assicuro che quella funzione non l'abbiamo mai usata xD comunque la data non mi conviene metterla in una stinga pure lei? tanto una volta che ho il numero dello studente ricerco quel numero (es: 3) nella struct delle assenze e visualizzo le stringhe delle date che sono legate al vettore contenente quel numero ...


--------------------


 Go to the top of the page
 
+Quote Post
Gamera
messaggio Monday 9 May 2011 - 22:13
Messaggio #19

Utente GBARL
Gruppo icone

Gruppo: Membri
Messaggi: 73
Iscritto il: Wed 12 October 2005 - 13:43
Da: Crema
Utente Nr.: 7.895
Feedback: 0 (0%)

Codice Amico 3DS:
0645 - 5859 - 8806



QUOTE (Eater @ Monday 9 May 2011 - 22:41) *
nono ti assicuro che quella funzione non l'abbiamo mai usata xD comunque la data non mi conviene metterla in una stinga pure lei? tanto una volta che ho il numero dello studente ricerco quel numero (es: 3) nella struct delle assenze e visualizzo le stringhe delle date che sono legate al vettore contenente quel numero ...


Si è vero .... puoi metterla come stringa ... oppure puoi allungare di tre elementi la matrice e li usi per memorizzare giorno mese e anno come interi ... così ti serve solo una matrice di interi quindi sarà NMAXLEZIONIxNMAXALUNNI+4

vedi tu come sei più comodo ....


--------------------
Ciao ciao!
 Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utenti stanno leggendo questa discussione (1 visitatori e 0 utenti anonimi)
0 utenti:

 

Modalità di visualizzazione: Normale · Passa a: Lineare · Passa a: Outline


RSS Versione Lo-Fi Oggi è il: Wed 28 July 2021- 08:34

.: GBArl.it :. Copyright © 2003-2020, All Rights Reserved.
Loghi, documenti e immagini contenuti in questo Sito appartengono ai rispettivi proprietari,
e sono resi pubblici sotto licenza Creative Commons

Creative Commons License
.::.