Jump to content
Nokioteca Forum

[mshell]perche Non Va?!?


noki57oo
 Share

Recommended Posts

ho copiato questo codice dalla guida solo che non va!!

use UI
ui.menu("Operazioni", ["Somma", "Sottrazione", "Esci"]);
while true do
c=ui.cmd();
if c="Somma" then
num1=ui.query("Inserisci il primo numero: ","");
num2=ui.query("Inserisci il secondo numero: ","");
print "La somma è uguale a " num1+num2;
end;
if c="Sottrazione" then
num1=ui.query("Inserisci il primo numero: ","");
num2=ui.query("Inserisci il secondo numero: ","");
print "La differenza è uguale a " num1-num2;
end;
if c="Esci" then break end;
end

mi da questo errore

syntax error 'end' expected

cosa c'è di sbagliato?? help me please!!

sono un novellino e stavo cercando di creare una calcolatrice molto, ma molto semplice solo che se non va nemmeno il testo della guida, qundi o sono sfigato o sono talmente incapace che non riesco nemmeno a copiarlo quindi mi potete dire perche non va?

grazie

EDIT:avevo pernsato anche di allulngarlo cosi

use UI
ui.menu("Operazioni", ["Somma", "Sottrazione", "moltiplicazione", "divisione", "Esci"]);
while true do
c=ui.cmd();
if c="Somma" then
num1=ui.query("Inserisci il primo numero: ","");
num2=ui.query("Inserisci il secondo numero: ","");
print "La somma è uguale a " num1+num2;
end;
if c="Sottrazione" then
num1=ui.query("Inserisci il primo numero: ","");
num2=ui.query("Inserisci il secondo numero: ","");
print "La differenza è uguale a " num1-num2;
end;
if c="moltiplicazione" then
num1=ui.query("Inserisci il primo numero: ","");
num2=ui.query("Inserisci il secondo numero: ","");
print "La moltiplicazione è uguale a " num1*num2;
end;
if c="divisione" then
num1=ui.query("Inserisci il primo numero: ","");
num2=ui.query("Inserisci il secondo numero: ","");
print "La divisione è uguale a " num1/num2;
end;
if c="Esci" then break end;
end

solo che non va lo stesso

Modificato da noki57oo
Link to comment
Condividi su altri siti

be provo a metterci il punto e la virgola

EDIT:non va lo stesso :shifty:

EDIT:per specificare meglio mi da l'errore e va nel qui all'interno del codice

codice:

use UI

ui.menu("Operazioni", ["Somma", "Sottrazione", "moltiplicazione", "divisione", "Esci"]);

while true do

c=ui.cmd();

if c="Somma" then

num1=ui.query("Inserisci il primo numero: ","");

num2=ui.query("Inserisci il secondo numero: ","");

print "La somma è uguale a "qui num1+num2;

end;

if c="Sottrazione" then

num1=ui.query("Inserisci il primo numero: ","");

num2=ui.query("Inserisci il secondo numero: ","");

print "La differenza è uguale a "qui num1-num2;

end;

if c="moltiplicazione" then

num1=ui.query("Inserisci il primo numero: ","");

num2=ui.query("Inserisci il secondo numero: ","");

print "La moltiplicazione è uguale a "qui num1*num2;

end;

if c="divisione" then

num1=ui.query("Inserisci il primo numero: ","");

num2=ui.query("Inserisci il secondo numero: ","");

print "La divisione è uguale a "qui num1/num2;

end;

if c="Esci" then break end;

end

fine codice

Modificato da noki57oo
Link to comment
Condividi su altri siti

la butto lì anche io.

come fai a sapere che i numeri che inserisci nella query siano numeri e non stringhe di numeri? perchè se fossero stringhe sarebbe impossibile fare le operazioni matematiche.

prova cosi

use UI
ui.menu("Operazioni", ["Somma", "Esci"]);
while true do
c=ui.cmd();
if c="Somma" then
num1=6
num2=5
print "La somma è uguale a " num1+num2;
end;
if c="Esci" then break end;
end

fai la somma e dimmi se il risultato te lo stampa. se così fosse, devi accertarti che i caratteri che vengono inseriti nelle query siano di tipo numerico.

spero di esserti stato di aiuto

Modificato da madhacker
Link to comment
Condividi su altri siti

grazie mille solo che adesso mi dice

excstringnotnumber:
operand is a string, not a number

con le sottrazioni, moltiplicazioni e divisioni, con le addizioni mi somma cosi 12+2=122 come risolvo?

EDIT:piccola domanda, il mshell è il linguaggio piu facile vero??

Modificato da noki57oo
Link to comment
Condividi su altri siti

grazie mille solo che adesso mi dice

excstringnotnumber:
operand is a string, not a number

con le sottrazioni, moltiplicazioni e divisioni, con le addizioni mi somma cosi 12+2=122 come risolvo?

EDIT:piccola domanda, il mshell è il linguaggio piu facile vero??

Dovresti sapere che esistono vari tipi di dati: numerici, stringhe, array...

Se ti somma cosi: 12+2=122 vuol dire che stai facendo somma tra due stringhe, contengono numeri ma sempre stringhe sono

Per trasformarli in numeri dovresti fare una cosa tipo int(num)...

Modificato da memoryn70
Link to comment
Condividi su altri siti

quindi una cosa cosi

use UI
ui.menu("Operazioni", ["Somma", "Esci"]);
while true do
c=ui.cmd();
if c="Somma" then
int(num1)=ui.query("Inserisci il primo numero: ","");
int(num2)=ui.query("Inserisci il secondo numero: ","");
print "La somma è uguale a "+ num1+num2;
end;

se no sono proprio negato e torno al symbian hack(che almeno era piu facile, ma credo che anche qui diventi facile, basta sapere come gira la cosa)

no non va cosi, aiutatemi per favore!!!(in seguito pensero alla parte grafica e vi rompero tranquilli)

Modificato da noki57oo
Link to comment
Condividi su altri siti

come pensavo facevi un'operazione tra 2 stringhe di numeri e non tra 2 numeri.

prova così

use UI
ui.menu("Operazioni", ["Somma", "Esci"]);
while true do
c=ui.cmd();
if c="Somma" then
num1=ui.query("Inserisci il primo numero: ",value="Number");
num2=ui.query("Inserisci il secondo numero: ",value="Number");
print "La somma è uguale a "+ num1+num2;
end;

così nell'input dovrai anche riuscire ad inserire soltanto numeri.

Modificato da madhacker
Link to comment
Condividi su altri siti

non va lo stesso, sono disperato, ho creato qualcosa che assomiglia ad un'applicazione e mi da errore ovunque :angry: aiutatemi!! le sto provando tutte!
nessun errore, almeno li, solo che mi somma sempre cosi 1+1=11

Ma leggere una guida invece di andare completamente a casaccio, no?!?

Prova cosi', dovrebbe andare:

print "La somma è uguale a "+ (num1+num2)

Altrimenti:

num3 = num1 + num2;

print "La somma è uguale a "+ num3

Modificato da Il.Socio
Link to comment
Condividi su altri siti

sempre cosi 1+1=11 adesso lo tiro contro il muro e vediamo se mi da ancora errore :angry: , comunque grazie per la tua disponibilita ad aiutarmi

adesso provo quella del socio

sempre 1+1=11

ma quella int(num) detta da memoryn70 come è? anzi cosa intendeva?

Modificato da noki57oo
Link to comment
Condividi su altri siti

sempre cosi 1+1=11 adesso lo tiro contro il muro e vediamo se mi da ancora errore :lmaosmiley: , comunque grazie per la tua disponibilita ad aiutarmi

adesso provo quella del socio

sempre 1+1=11

ma quella int(num) detta da memoryn70 come è? anzi cosa intendeva?

Praticamente memory ti diceva di convertire la stringa in numero. Infatti ti restituisce 11 quando fai 1+1 perchè concatena due stringhe invece che sommare due numeri! Dovresti trovare in mshell la funzione che prende come parametro una stringa e ti restituisce come risultato un intero. Come suggerito da memory in python si ottiene con int(num) in mshell però non so come si fa.Sicuramente non potrà differire di molto! Prova, magari, a cercare qualche guida, penso che queste siano cose basilari di un linguaggio di programmazione :thumbs:

Link to comment
Condividi su altri siti

Praticamente memory ti diceva di convertire la stringa in numero. Infatti ti restituisce 11 quando fai 1+1 perchè concatena due stringhe invece che sommare due numeri! Dovresti trovare in mshell la funzione che prende come parametro una stringa e ti restituisce come risultato un intero. Come suggerito da memory in python si ottiene con int(num) in mshell però non so come si fa.Sicuramente non potrà differire di molto! Prova, magari, a cercare qualche guida, penso che queste siano cose basilari di un linguaggio di programmazione :thumbs:

Eh sono basilari si!

Di solito int è una funzione presente su molti linguaggi di programmazione ;)

Link to comment
Condividi su altri siti

In mShell le variabili non sono tipizzate.

Se la variabile viene usata come stringa una volta quella sarà una stringa.

var="ciao"

Se poi a quella variabile assegnate un numero il tipo di quella variabile diverrà numerico (e la variabile rimane sempre la stessa, come nome!).

var=2

Quindi quando si chiama la ui.query(), il valore ritornato è una stringa (nella guida ufficiale è spiegato per ogni funzione il tipo di ritorno), quindi è necessario convertire il tipo di ritorno in numero, tramite la num().

Ovviamente per evitare errori nel corso dell'applicazione è bene fare un controllo per vedere se ciò che è stato inserito è un numero, per fare questo c'è la funzione di tipo booleano isnum(valore)...

Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy