Pagina 1 di 1

[C] punto per gestire inserimento valori su array

Inviato: gio mar 06, 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 mar 06, 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 mar 06, 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 mar 06, 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 :?

8-[ Di quale array stai parlando, scusa?

Re: [C] punto per gestire inserimento valori su array

Inviato: gio mar 06, 2008 17:37
da gattino_usb
414N ha scritto: 8-[ Di quale array stai parlando, scusa?


un array dichiarato precedentemente #-o

Re: [C] punto per gestire inserimento valori su array

Inviato: gio mar 06, 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 mar 06, 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 mar 06, 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 mar 06, 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 mar 06, 2008 19:26
da gattino_usb
ti ringrazio :)

Re: [C] punto per gestire inserimento valori su array

Inviato: ven mar 07, 2008 10:59
da 414N
Un'ultima raccomandazione: non mischiare getchar() con scanf(), a meno di non usare un fflush(stdin) dopo ogni scanf.