Pagina 1 di 1
[C] punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 17:10
da gattino_usb
salve,premetto che sono un neofita della programmazione.
volevo chiedere come fosse possibile gestire l'input in modo che alla pressione del tasto "." {punto} esso inizi a scrivere in un'altra posizione(magari la sucessiva) dell'array

Re: punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 17:16
da Mario Vanoni
gattino_usb ha scritto:salve,premetto che sono un neofita della programmazione.
volevo chiedere come fosse possibile gestire l'input in modo che alla pressione del tasto "." {punto} esso inizi a scrivere in un'altra posizione(magari la sucessiva) dell'array

bash/ksh/tcsh/zsh o linguaggio C?
Re: punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 17:18
da gattino_usb
scusate se non sono stato chiaro,linguaggio C

Re: [C] punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 17:33
da 414N
gattino_usb ha scritto:salve,premetto che sono un neofita della programmazione.
volevo chiedere come fosse possibile gestire l'input in modo che alla pressione del tasto "." {punto} esso inizi a scrivere in un'altra posizione(magari la sucessiva) dell'array


Di quale array stai parlando, scusa?
Re: [C] punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 17:37
da gattino_usb
414N ha scritto:

Di quale array stai parlando, scusa?
un array dichiarato precedentemente

Re: [C] punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 17:47
da 414N
Beh, se disponi di una variabile indice, ti basta un if. Altrimenti si complica la faccenda.
Con una roba del genere dovresti cavartela:
Codice: Seleziona tutto
...
int array [M]; //M indica la grandezza dell'array (messa giusto per correttezza)
int index = 0;
int dotOffset = N; //qui imposti lo scostamento da applicare quando viene letto un '.'
int car;
...
car = getchar();
if (car == '.')
index += offset;
array[index] = X; //X è il nuovo valore da inserire nell'array
...
Re: [C] punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 17:50
da gattino_usb
414N ha scritto:
int dotOffset = N; //qui imposti lo scostamento da applicare quando viene letto un '.'
int car;
ti ringrazio

una piccola cosa non mi è chiara,cosa intendi per scostamento?
Re: [C] punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 17:55
da gattino_usb
spiego meglio,sto scrivendo un programma che dato un indirizzo ip e una maschera di rete calcola automaticamente indirizzo di rete e indirizzo di broadcast.
vorrei quindi che all'inserimento del numero seguito da punto,il numero sucessivo venisse scritto su una cella diversa dell'array

spero di essermi spiegato bene

grazie ancora
Re: [C] punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 18:20
da 414N
Se non ho capito male, leggi i numeri componenti gli indirizzi di rete carattere per carattere, percui aspetti di trovare il '.' per capire che è finito il numero.
Tornando a prendere il codice di esempio di prima e specializzandolo un pochino:
Codice: Seleziona tutto
...
int ipAddr [4]; //Array che conterrà le 4 cifre dell'indirizzo IP (ho messo int ma char dovrebbe essere sufficiente)
int ipIndex = 0; //Indice di partenza dell'array (0=inizio, 3= fine)
//int dotOffset = 1; //qui imposti lo scostamento da applicare quando viene letto un '.'
//In questo caso è un po' inutile usare una variabile per spostarsi di uno, quindi ne farei a meno.
int car;
...
car = getchar();
if (car == '.'){ //Un numero dell'indirizzo di rete è terminato
X = charsToInt(...); //Qui viene effettuata la conversione da insieme di caratteri ad intero (magari controllando che il numero abbia senso)
array[ipIndex] = X;
ipIndex++; //sarebbe opportuno controllare di non 'sbordare' dalla dimensione dell'array (quindi ipIndex non dovrà mai superare 3)
}else{
... //Il carattere viene salvato da qualche parte per poter poi essere associato ai caratteri letti precedentemente e convertito (per esempio un altro array di char)
}
...
EDIT: corretto un errore di trascrizione (array[index] ==> array[ipIndex])
Re: [C] punto per gestire inserimento valori su array
Inviato: gio 6 mar 2008, 19:26
da gattino_usb
ti ringrazio

Re: [C] punto per gestire inserimento valori su array
Inviato: ven 7 mar 2008, 10:59
da 414N
Un'ultima raccomandazione: non mischiare getchar() con scanf(), a meno di non usare un fflush(stdin) dopo ogni scanf.