Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
OnePlus 15 nasce per alzare l'asticella delle prestazioni e del gaming mobile. Ma non solo, visto che integra un display LTPO 1,5K a 165 Hz, OxygenOS 16 con funzioni AI integrate e un comparto foto con tre moduli da 50 MP al posteriore. La batteria da 7.300 mAh con SUPERVOOC 120 W e AIRVOOC 50 W è la ciliegina sulla torta per uno smartphone che promette di offrire un'esperienza d'uso senza alcun compromesso
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
Vediamo come si comporta il Ryzen 5 7500X3D, nuovo processore di casa AMD che fonde 6 core Zen 4 con la tecnologia 3D V-Cache, particolarmente utile in scenari come il gaming. Annunciato a un prezzo di listino di 279€, il nuovo arrivato sarà in grado di diventare un riferimento per i sistemi budget? Ecco cosa ne pensiamo.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-05-2012, 15:12   #1
Ricky96
Junior Member
 
Iscritto dal: May 2012
Messaggi: 9
[Pascal] Aiuto programma2

Rieccomi.. Stavolta non sono riuscito a risolvere.. Se ci fosse qualcuno che mi da una mano gliene sarei grato. Il programma è il seguente:

Codice:
program es1;
uses crt;
var a[i],b[i],c[i]:array [1..150] of integer;
    cont,n,cubo,i:integer;

Begin
clrscr;
cont:=0;
cubo:=0;
repeat
writeln('Introduci un numero n');
readln(n);
until n<=100;
for a:=0 to n do
begin
randomize;
random(a[i]):=(90)+1;
writeln(a[i]);
if a[i]<60
then cont:=cont+1
end;
writeln('I numeri minori di 60 sono: ',cont);
for b:=0 to n do
begin
randomize;
random(b[i]):=(90)+1;
writeln(b[i]);
if b[i] mod 4=0
then begin
     cubo:= b[i]*b[i]*b[i];
     writeln('Ecco i cubi dei numeri multipli di 4 caricati dall''array b',cubo);
     end;
end;
for c:=0 to n do
begin
c[2i]:=a[2i];
c[2i]:=-c[2i];
writeln(c[2i]);
c[2i+1]:=a[2i+1];
c[2i+1]:=-c[2i+1];
writeln(c[2i+1]);
end;
readln;
end.
Errore:
Fatal: Syntax error, : expected but [ found

Ultima modifica di Ricky96 : 05-05-2012 alle 20:47.
Ricky96 è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2012, 17:30   #2
Ricky96
Junior Member
 
Iscritto dal: May 2012
Messaggi: 9
Nessuno è in grado di aiutarmi in questo forum?
Ricky96 è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2012, 21:47   #3
wizard1993
Senior Member
 
L'Avatar di wizard1993
 
Iscritto dal: Apr 2006
Messaggi: 22462
tre piccole regole generali quando si posta nei forum di programmazione
1)indenta il codice
2)indica la linea dell'errore, il compilatore te la riporta
3)scrivi cosa dovrebbe fare il listato
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza
wizard1993 è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2012, 22:37   #4
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Sottoscrivo wizard1993, posso però dirti di controllare varie cose:
  • la dichiarazione delle variabili (l'errore che riporti)
  • una variabile è troppo piccola per contenere il valore che calcoli
  • errate variabili utilizzate nei cicli
  • inizializzazione del generatore di numeri casuali fatta troppe volte
  • funzione random utilizzata praticamente all'inverso
  • sforamento indice array nello strano balletto finale
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 05-05-2012, 15:46   #5
Ricky96
Junior Member
 
Iscritto dal: May 2012
Messaggi: 9
Scusate ragazzi sono un pivello per quanto riguarda programmazione..
Per quanto riguarda la riga dell'errore adesso edito il post iniziale mettendo in grassetto dove mi evidenzia l'errore..

Per quanto riguarda la finalità del programma vi spiego velocemente:

Primo array A.. Dobbiamo visualizzare nell'output tanti numeri casuali quanti ne chiede l'utente con la variabile N (N<=100).
Dopo questo dobbiamo comunicare QUANTI numeri minori di 60 sono stati caricati dall'array..

Array B. Visualizzare sempre tanti numeri casuali quanti ne chiede l'utente (utilizziamo per comodità sempre la variabile N di prima).. Poi prendere i numeri visualizzati multipli di quattro e farne il cubo.. Successivamente dobbiamo visualizzare questi numeri..

Array C lasciamolo stare perchè neanche io ho ben capito il testo.

Scusatemi ancora
Ricky96 è offline   Rispondi citando il messaggio o parte di esso
Old 05-05-2012, 16:01   #6
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Esatto, il primo errore è lì, ma è una cavolata ripetuta che se te la scrivo nero su bianco la dimentichi in 10 secondi netti, mentre se osservi un esempio/appunti/altro e la "scopri" tu te la ricorderai meglio.

I problemi più subdoli che potrai aver difficoltà a trovare/capire sono altri.

P.S. usa il tag CODE per preservare la formattazione del codice (è l'icona col cancelletto in editazione avanzata del post, sotto la tendina delle faccine).
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)

Ultima modifica di Gimli[2BV!2B] : 05-05-2012 alle 16:05.
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 05-05-2012, 20:52   #7
Ricky96
Junior Member
 
Iscritto dal: May 2012
Messaggi: 9
Quote:
Originariamente inviato da Gimli[2BV!2B] Guarda i messaggi
Esatto, il primo errore è lì, ma è una cavolata ripetuta che se te la scrivo nero su bianco la dimentichi in 10 secondi netti, mentre se osservi un esempio/appunti/altro e la "scopri" tu te la ricorderai meglio.

I problemi più subdoli che potrai aver difficoltà a trovare/capire sono altri.

P.S. usa il tag CODE per preservare la formattazione del codice (è l'icona col cancelletto in editazione avanzata del post, sotto la tendina delle faccine).
Grazie innanzitutto per la disponibilità..
Quindi per capire al meglio i programmi devo sbattere la testa e smanettare..
Ottimo .. E', ahimè , un compito di informatica che ho fatto qualche giorno fa..
Ma ci sono errori di logica? Alcune cose purtroppo non le ho ancora chiare.. E fare un compito di informatica scritto su un foglio è assurdo perchè non hai la possibilità di vedere che errori fai..
Ricky96 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2012, 00:45   #8
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Posso dirti che quel codice pulito da errori fa sostanzialmente quel che hai scritto che dovrebbe fare (fino all'array c).

L'argomento che hai mostrato di aver capito meno direi che è l'utilizzo delle funzioni/procedure, nel particolare di random e della procedura randomize (che andrebbe invocata una sola volta, mentre tu l'hai fatto 2 * n volte).
Naturalmente questa è la mia opinione e non so a cosa possa dare più peso il tuo/a prof.
Codice:
gimli@kwankey:~/Scrivania$ fpc -otest_pas -Tlinux test.pas && ./test_pas 
Free Pascal Compiler version 2.6.0-2 [2012/04/01] for i386
Copyright (c) 1993-2011 by Florian Klaempfl and others
Target OS: Linux for i386
Compiling test.pas
Linking test_pas
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
53 lines compiled, 0.3 sec 
Introduci un numero n
10

76
2
63
50
57
51
15
52
90
34
46
I numeri minori di 60 sono: 8

19
44
Ecco i cubi dei numeri multipli di 4 caricati dall'array b: 85184
67
40
Ecco i cubi dei numeri multipli di 4 caricati dall'array b: 64000
51
89
22
16
Ecco i cubi dei numeri multipli di 4 caricati dall'array b: 4096
71
6
5

-76
-2
-2
-63
-63
-50
-50
-57
-57
-51
-51
-15
-15
-52
-52
-90
-90
-34
-34
-46
Che il compito scritto su foglio sia irrealistico pensando al normale contesto di utilizzo del linguaggio sono d'accordo, però, a posteriori (ho fatto pascal alle superiori), ne capisco il senso perché ti costringe ad imparare subito la sintassi a memoria.
Per farti un esempio, mi è capitato di lavorare per mesi con Javascript, ma non ho mai memorizzato veramente i nomi delle funzioni e proprietà basilari e son sempre un po' impedito quando ci torno sopra.
Saperlo scrivere su carta significa che puoi concentrarti maggiormente sul problema che devi risolvere piuttosto che perdere tempo a trovare le parole per scrivere la soluzione.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2012, 12:08   #9
Ricky96
Junior Member
 
Iscritto dal: May 2012
Messaggi: 9
Grazie ancora! Scusami ti faccio un'ultima domanda. Riguardo all'array B sembra che nell'output che hai postato non ci siano i numeri casuali che avrebbe dovuto caricare (erano sempre N numeri..).

Nel senso che carica sempre 10 numeri casuali, controlla quali sono multipli di 4, fa il cubo di questi numeri e poi lo comunica.. Sembra che questo non lo faccia..

Per quanto riguarda il random ho completamente sbagliato in tutto il programma la sintassi.. Avrei dovuto mettere variabile:=random(90)+1. Grande boiata!
Ricky96 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2012, 12:30   #10
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Nel secondo ciclo l'hai fatto contemporaneamente: subito dopo aver generato il numero casuale lo controlli e ne stampi subito il cubo se multiplo di 4, quindi passi al numero successivo.
Diciamo che per soddisfare la sequenza temporale avresti dovuto memorizzare i cubi in un array, quindi stamparli con un altro ciclo.
Hai mostrato però di sapere come funziona l'operatore mod.

Ho notato adesso che i cicli vengono eseguiti una volta in più della variabile (da 0 ad n compreso: n + 1), non ci avevo badato perché non più abituato alla sintassi Pascal.

Esatto per random:
Codice:
  for i := 0 to n do
    begin
      b[i] := random( 90 ) + 1 ;
      writeln(b[i]);
      if b[i] mod 4=0 then
        begin
          cubo :=  b[i] * b[i] * b[i];
          writeln('Ecco i cubi dei numeri multipli di 4 caricati dall''array b: ', cubo);
        end;
    end;
  writeln('');
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2012, 12:54   #11
Ricky96
Junior Member
 
Iscritto dal: May 2012
Messaggi: 9
Allora grazie mille! Vediamo come va il compito..
Ricky96 è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2012, 12:49   #12
Ricky96
Junior Member
 
Iscritto dal: May 2012
Messaggi: 9
Quote:
Originariamente inviato da Gimli[2BV!2B] Guarda i messaggi
Sottoscrivo wizard1993, posso però dirti di controllare varie cose:
  • la dichiarazione delle variabili (l'errore che riporti)
  • una variabile è troppo piccola per contenere il valore che calcoli
  • errate variabili utilizzate nei cicli
  • inizializzazione del generatore di numeri casuali fatta troppe volte
  • funzione random utilizzata praticamente all'inverso
  • sforamento indice array nello strano balletto finale
Ti chiedo un'altra cosa.. Che variabili devo mettere nei cicli? Ho provato a mettere nel primo e nel secondo ciclo due variabili diverse, ma cambia completamente..
Ricky96 è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2012, 21:31   #13
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Variabili diverse? Non ti serve memorizzare il valore raggiunto dai contatori alla fine di ogni ciclo (è n).
Poi tu hai usato gli array stessi come contatori, mentre l'array è la cassettiera in cui devi cercare, aprendo un cassetto alla volta, dal primo a[0] all'ultimo a[n].
Qui si evidenzia di nuovo il dettaglio a cui ho accennato nell'ultimo post: da 0 ad n compreso fa n + 1 elementi, quindi bisogna decidere che fare per soddisfare le specifiche dell'assegnamento...

P.S. Controlla il frammento che ho già postato...
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
SONY BRAVIA 8 II e BRAVIA Theatre System 6: il cinema a casa in formato compatto SONY BRAVIA 8 II e BRAVIA Theatre System 6: il c...
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
4,9 miliardi su Google: Buffett sfida il...
Google ha svelato un agente AI che può g...
Tesla cambia idea: è in arrivo l'...
Anche Firefox punta sull'intelligenza ar...
Stop alle super-accelerazioni delle auto...
Osservatorio AGCOM: sempre più ac...
Sempre più IA su Spotify: arrivan...
iMac M4 crolla a 1.199€ con risparmio di...
Nintendo Switch 2: in rilascio un nuovo ...
Core Ultra 9 290K Plus, Core Ultra 7 270...
Prezzo Black Friday per le super cuffie ...
Crollano i prezzi della cuffie Beats col...
ASUS ROG Matrix RTX 5090 costa 4000 doll...
Grazie ai dati di ESA il calcolo della t...
Rilasciati nuovi video e immagini della ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:59.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v