[C] punto per gestire inserimento valori su array

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
gattino_usb
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: mar 25 dic 2007, 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)

[C] punto per gestire inserimento valori su array

Messaggio 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 :?
Ultima modifica di gattino_usb il gio 6 mar 2008, 17:18, modificato 1 volta in totale.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: punto per gestire inserimento valori su array

Messaggio 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?

Avatar utente
gattino_usb
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: mar 25 dic 2007, 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)

Re: punto per gestire inserimento valori su array

Messaggio da gattino_usb »

scusate se non sono stato chiaro,linguaggio C ;)

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

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

Messaggio 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?

Avatar utente
gattino_usb
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: mar 25 dic 2007, 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)

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

Messaggio da gattino_usb »

414N ha scritto: 8-[ Di quale array stai parlando, scusa?
un array dichiarato precedentemente #-o

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

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

Messaggio 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
...

Avatar utente
gattino_usb
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: mar 25 dic 2007, 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)

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

Messaggio 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?

Avatar utente
gattino_usb
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: mar 25 dic 2007, 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)

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

Messaggio 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

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

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

Messaggio 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])
Ultima modifica di 414N il dom 16 mar 2008, 14:37, modificato 1 volta in totale.

Avatar utente
gattino_usb
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: mar 25 dic 2007, 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)

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

Messaggio da gattino_usb »

ti ringrazio :)

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

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

Messaggio da 414N »

Un'ultima raccomandazione: non mischiare getchar() con scanf(), a meno di non usare un fflush(stdin) dopo ogni scanf.

Rispondi