Repository 32bit  Forum
Repository 64bit  Wiki

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

[C] punto per gestire inserimento valori su array

Messaggioda gattino_usb » gio mar 06, 2008 17:10

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 mar 06, 2008 17:18, modificato 1 volta in totale.
Avatar utente
gattino_usb
Linux 2.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

Re: punto per gestire inserimento valori su array

Messaggioda Mario Vanoni » gio mar 06, 2008 17:16

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?
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: punto per gestire inserimento valori su array

Messaggioda gattino_usb » gio mar 06, 2008 17:18

scusate se non sono stato chiaro,linguaggio C ;)
Avatar utente
gattino_usb
Linux 2.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

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

Messaggioda 414N » gio mar 06, 2008 17:33

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
414N
Iper Master
Iper Master
 
Messaggi: 2882
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

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

Messaggioda gattino_usb » gio mar 06, 2008 17:37

414N ha scritto: 8-[ Di quale array stai parlando, scusa?


un array dichiarato precedentemente #-o
Avatar utente
gattino_usb
Linux 2.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

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

Messaggioda 414N » gio mar 06, 2008 17:47

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
414N
Iper Master
Iper Master
 
Messaggi: 2882
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

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

Messaggioda gattino_usb » gio mar 06, 2008 17:50

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.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

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

Messaggioda gattino_usb » gio mar 06, 2008 17:55

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
gattino_usb
Linux 2.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

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

Messaggioda 414N » gio mar 06, 2008 18:20

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 mar 16, 2008 14:37, modificato 1 volta in totale.
Avatar utente
414N
Iper Master
Iper Master
 
Messaggi: 2882
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

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

Messaggioda gattino_usb » gio mar 06, 2008 19:26

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

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

Messaggioda 414N » ven mar 07, 2008 10:59

Un'ultima raccomandazione: non mischiare getchar() con scanf(), a meno di non usare un fflush(stdin) dopo ogni scanf.
Avatar utente
414N
Iper Master
Iper Master
 
Messaggi: 2882
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Yahoo [Bot] e 1 ospite

cron