Re: [C++] esercizio strutture

Messaggioda cooper » 20/09/2018, 11:15

Obidream ha scritto:Sono gli int a comprendere i char, comunque è un refuso da parte mia, è che nella libreria standard del C le funzioni che hanno a che fare coi caratteri hanno sempre(? o quasi) come parametro un int per cui tendo a fare così anche io, per cui sì, va bene anche un char

:smt023
Super Squirrel ha scritto:Poi hai aggiustato il for nel main?

avrei risolto con uno switch (anche se forse è un po' tedioso). qualche post fa ho postato come avrei cambiato il tutto
EDIT: ho pensato che non va bene nemmeno così perchè se la inserisco sbagliata salto un'entrata del vettore. lo modificherei così:
Codice:
unsigned int counter=0;
for( ; ;){
  char p;
  cin>>p;
  switch(guarda(p)){
           case 0:
                     es.punti[i]=p;
                     counter++;
                     break;
             ecc ecc
   }
  if(counter == es.dimensione) break;
}

così dovrei poter continuare ad inserire fino ad esaurimento posti
Ultima modifica di cooper il 20/09/2018, 11:33, modificato 1 volta in totale.
cooper
Cannot live without
Cannot live without
 
Messaggio: 2130 di 4642
Iscritto il: 25/07/2014, 09:19

Re: [C++] esercizio strutture

Messaggioda Super Squirrel » 20/09/2018, 11:30

Il problema era nel ciclo, usare uno switch al posto di if/else non cambia niente.
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 300 di 1486
Iscritto il: 16/05/2013, 22:05

Re: [C++] esercizio strutture

Messaggioda cooper » 20/09/2018, 11:34

ho modificato la risposta di prima perchè me ne sono accorto :D
cooper
Cannot live without
Cannot live without
 
Messaggio: 2131 di 4642
Iscritto il: 25/07/2014, 09:19

Re: [C++] esercizio strutture

Messaggioda Super Squirrel » 20/09/2018, 12:38

cooper ha scritto: lo modificherei così: ...

Forse al posto di es.punti[i] dovresti scrivere es.punti[counter].
In ogni caso non va bene... hai provato a lanciare il programma? L'output è quello che ti aspetti?

P.S.
Il punto c) poi lo hai svolto?
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 301 di 1486
Iscritto il: 16/05/2013, 22:05

Re: [C++] esercizio strutture

Messaggioda cooper » 20/09/2018, 20:36

Super Squirrel ha scritto:In ogni caso non va bene... hai provato a lanciare il programma? L'output è quello che ti aspetti?

no, non ho avuto/ho tempo. cosa noti di errato?
Super Squirrel ha scritto:Il punto c) poi lo hai svolto?

no, su quello ancora zero idee.
cooper
Cannot live without
Cannot live without
 
Messaggio: 2132 di 4642
Iscritto il: 25/07/2014, 09:19

Re: [C++] esercizio strutture

Messaggioda Super Squirrel » 20/09/2018, 20:53

no, non ho avuto/ho tempo. cosa noti di errato?

Il problema è qui:
Codice:
es.punti[counter]=p;

assegni al generico elemento dell'array non la cifra (come richiesto dall'esercizio), ma l'intero associato a quella cifra nel sistema di codifica utilizzato (ASCII o altro).

no, su quello ancora zero idee.

Per esempio dall'array:
3 - 8 - 2 - 5
devi ricavare l'intero 3825.
Per farlo basta giocare con le potenze di 10.
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 302 di 1486
Iscritto il: 16/05/2013, 22:05

Re: [C++] esercizio strutture

Messaggioda cooper » 24/09/2018, 16:15

rieccomi, scusa per essere sparito ma sono stato occupato.
Super Squirrel ha scritto:assegni al generico elemento dell'array non la cifra (come richiesto dall'esercizio), ma l'intero associato a quella cifra nel sistema di codifica utilizzato (ASCII o altro).

non ho capito cosa starei andando ad assegnare :?:
Super Squirrel ha scritto:Per farlo basta giocare con le potenze di 10.

potrei allora fare così: prima gli faccio calcolare la dimensione del vettore (che chiamo dim) e poi userei questo algoritmo
Codice:
int numero;
for(unsigned int i=0; i<dim; i++){
  numero += v[i]*10^((dim-1)-i);
}
cooper
Cannot live without
Cannot live without
 
Messaggio: 2136 di 4642
Iscritto il: 25/07/2014, 09:19

Re: [C++] esercizio strutture

Messaggioda Super Squirrel » 24/09/2018, 23:00

non ho capito cosa starei andando ad assegnare :?:

Ti rispondo, non è quello il problema, ma sinceramente non capisco perchè aspettare una mia risposta quando basterebbe compilare e lanciare il programma?!
In ogni caso ipotizziamo di inserire da tastiera 5, dal momento che la variabile p è un char, con l'istruzione es.punti[i]=p stai assegnando all'intero es.punti[i] il valore '5' (che per esempio nel codice ASCII vale 53) e non 5.

prima gli faccio calcolare la dimensione del vettore (che chiamo dim)

Se guardi i membri della struct "numero" ti renderai che non ce n'è bisogno, perchè quel valore (dim) già lo conosci.

e poi userei questo algoritmo...

La variabile numero non andrebbe inizializzata?
In ogni caso la logica dell'algoritmo è corretta.
P.S.
Si tratta di una sorte di "pseudocodice" immagino, visto che l'operatore ^ in C++ non rappresenta l'elevazione a potenza.
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 303 di 1486
Iscritto il: 16/05/2013, 22:05

Re: [C++] esercizio strutture

Messaggioda cooper » 25/09/2018, 00:36

Super Squirrel ha scritto:Ti rispondo, non è quello il problema, ma sinceramente non capisco perchè aspettare una mia risposta quando basterebbe compilare e lanciare il programma?!

più che altro perchè essendo un esame scritto non avevo mai iniziato a scriverlo al pc ed avevo pezzi di codice e correzioni un po' ovunque. insomma pigrizia diciamo.
Super Squirrel ha scritto:In ogni caso ipotizziamo di inserire da tastiera 5, dal momento che la variabile p è un char, con l'istruzione es.punti[i]=p stai assegnando all'intero es.punti[i] il valore '5' (che per esempio nel codice ASCII vale 53) e non 5.

ho risolto con $es.punt[counter]= p - '0';$. eseguendo restituisce tutto quello che voglio :lol:
Super Squirrel ha scritto:Se guardi i membri della struct "numero" ti renderai che non ce n'è bisogno, perchè quel valore (dim) già lo conosci.

ovviamente si.
Super Squirrel ha scritto:La variabile numero non andrebbe inizializzata?

giustamente, quindi int numero=0;
Super Squirrel ha scritto:In ogni caso la logica dell'algoritmo è corretta.

:rock: :rock:
Super Squirrel ha scritto:Si tratta di una sorte di "pseudocodice" immagino, visto che l'operatore ^ in C++ non rappresenta l'elevazione a potenza.

sono talmente abituato a fare la potenza con ^ che mi sono scordato del pow #-o
così dovrebbe essere tutto apposto, giusto?
cooper
Cannot live without
Cannot live without
 
Messaggio: 2140 di 4642
Iscritto il: 25/07/2014, 09:19

Re: [C++] esercizio strutture

Messaggioda Super Squirrel » 25/09/2018, 11:40

ho risolto con es.punt[counter]=p−'0';. eseguendo restituisce tutto quello che voglio :lol:

Sicuramente, ma perchè ripetere un'operazione già effettuata dalla funzione guarda() ?!

sono talmente abituato a fare la potenza con ^ che mi sono scordato del pow #-o
così dovrebbe essere tutto apposto, giusto?

Si, ma direi che non c'è bisogno di scomodare la libreria math (per la funzione pow() intendo), basta utilizzare una variabile inizializzata ad 1 che viene moltiplicata per 10 ad ogni iterazione del ciclo.
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 304 di 1486
Iscritto il: 16/05/2013, 22:05

PrecedenteProssimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite