Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Con la quattordicesima generazione Lenovo ridisegna il suo ThinkPad più iconico attorno al nuovo Space Frame e ai processori Intel Core Ultra Series 3. Resta sotto 1Kg, è molto più semplice da riparare e si rivolge al professionista che lavora in mobilità, con un prezzo da prodotto di vertice.
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Le Jabra Evolve3 85 non sono semplicemente cuffie Bluetooth con cancellazione del rumore. Sono un dispositivo professionale pensato per chi trascorre gran parte della giornata in riunione, al telefono o davanti a un assistente basato sull'intelligenza artificiale
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
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


Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
I satelliti spia russi Kosmos 2613 e Kos...
GTA VI: online la nuova mega galleria co...
Edits, l'app di Instagram, sbarca gratis...
Claude Code: il bug che ha spedito l'ema...
Perplexity lancia Teammates, gli agenti ...
Niente più datacenter? Gli eletto...
La Cina avrebbe approvato lo sviluppo de...
Epson EF-72 alla prova: Google TV, audio...
AST SpaceMobile annuncia il razzo spazia...
Apple taglia il budget AI dei dipendenti...
Fisco e intelligenza artificiale, come c...
Synology BC510 e CC410W, la videosorvegl...
600.000 chip NVIDIA fermi a Hong Kong: l...
La Cina punta tutto sull'allunaggio con ...
LG Italia compie 30 anni: gli italiani v...
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: 21:58.


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