lunedì, novembre 06, 2006

Uso di "vettori dinamici"

Ecco fatto, ho finalmente modo di chiedere consigli:ho scritto un programmino che genera la distribuzione, traccia il solito istogramma attraverso una funzione alla quale passo dei vettori.Per questi utilizzo l'allocazione dinamica.Ma DevC++ mi segnala alcune cose che riguardano i vettori e la funzione. Peto auxilium socios.
Ho corretto un po' di stupidate che non andavano e lo ripropongo.Spero che sia possibile chiamare un vettore ed una singola variabile con lo stesso nome, ma mi hanno già ripreso a proposito(sono testardo).Ecco il codice(18.46).Grazie per la pazienza.
P.s. Ecco la versione testo del codice.

13 commenti:

Anonimo ha detto...

Ho provato a pubblicare, ma non so ancora come si mette un link ad un altro file(lo so Enzo lo ha già detto,ma..). Voglio salvare il codice in un file e collegarlo alle poche righe di introduzione attraverso un link, in modo da non "stirare" il blog.Arrisentirci.

hronir ha detto...

E così hai pensato di scrivere un post completamente bianco, e di riversare tutto il suo contenuto nel commento... :-)

Per fare quello che hai in mente, devi avere a disposizione un posto sempre accessibile via web (ovvero tramite il protocollo http) dove mettere i tuoi file. A quel punto tutto diventa facile: i tuoi file avranno infatti un URL e potrai utilizzare proprio quello per creare i link in un post sul blog.
Posti accessibili via web dove mettere la propria roba non è difficilissimo trovarli: paghi un abbonamento per il collegamento ADSL? Molto probabilmente il tuo ISP (tiscali, fasweb, telecom o chi per esso) includerà quasi sicuramente dello spazio web a disposizione degli utenti (ma io il mio non ho mai neanche provato ad utilizzarlo, quindi non chiedermi come si fa ad accedervi...! ma sono praticamente sicuro che almeno uno dei tuoi compagni di corso lo sa fare: magari non legge il blog perchè ci snobba, ma se provi a chiedere in giro, magari uno di quelli che c'ha la sua bella pagina web... :-)
Oppure puoi fare come abbiamo fatto noi per questo corso: ci siamo creati un altro blog (i quaderni) in cui facciamo prevalentemente copy'n'paste del nostro materiale di codice, e poi mettiamo i link nel blog principale di lab-info...

hronir ha detto...

Novità, rock: stiamo ancora facendo esperimenti con il google-group, ma fra le altre cose ho notato che offre diversi servizi à la web-2.0, fra cui anche l'upload di file!
Prova ad andare a questo indirizzo:

http://groups-beta.google.com/group/labinfodocet?hl=en

e giochicchiare un po': magari riesci a fare quello che volevi usando google-groups!
Ora mi studiacchio un altro po' questi servizi, chissà che non si passi, per il corso stesso, ad usare più assiduamente il gruppo invece che il blog...
A presto!

hronir ha detto...

Rock, vedo che stai uplodando file... bene!
Cosa usi, windows o linux? (o mac?)
Se usi windows, hai provato a creare l'HTML con dev-C++, usando il comando "esporta"? Così preservi l'indentazione, la syntax-highlighting e il carattere "monospace"...

Anonimo ha detto...

Uso W.Ho fatto quel che mi è riuscito. Purtroppo il disco remoto della mia casella di posta funziona in modo che non c'è una pagina per ogni file, ma "qualcosa che se ci clicco su si apre il file", quindi non posso fare link diretti. A proposito, perché qualcuno non ci spiega in due parole che sono 'sti gruppi, in modo da poterli usare efficaciemente. Ieri sera ho pubblicato qualcosa sui gruppi, ma ora non so come si faccia a rivedere...
Un'ultima importante cosa:Enzo e Pietro non pensate di dover limitare(nel nostro interesse) le possibilità di noi autori quando "postiamo". Ieri per qualche minuto ho rovinato il blog scegliendo determinate impostazioni di visualizzazione.Ecco perché poi ho cancellato tutto pubblicando un post vuoto.See you next days(è lecito?).

hronir ha detto...

Non importa, non importa: sbagliando si impara, non credo sia il caso di "limitarvi"...

Ma veniamo al nuovo post: per fare link diretti, dovrebbe andare benissimo il servizio offerto da google-groups: ho visto che hai uploadato (anglicismo tipico del mestiere...) un file: possiamo guardare quello? (voglio dire: è una copia di quello che volevi linkare, o hai fatto modifiche successive?).

Per poter giocare "meglio" con i google-groups (e ritrovare il file che avevi uploadato), dovrebbe essere sufficiente cliccare sul link "view in Groups Beta" che troni in alto, oppure usare questo link
http://groups-beta.google.com/group/labinfodocet?hl=en per accedere al gruppo. Si tratta della nuova versione beta (tanto per cambiare!) dei google-gruppi, che fornisce tutte le nuove funzionalità.

Ora scrivo un post con qualche spiegazione più dettagliata sui gruppi: il fatto è che anche noi li abbiamo scoperti or ora (pensavamo di usarli solo come strumento di notifica di nuovi post/commenti per il blog, ma stiamo scoprendo con nostro piacere che ci sono un sacco di nuove funzionalità che forse possono essere sfruttate per il corso!)

Anonimo ha detto...

A parte trascurabilità(credo che in un ciclo ci sia i+ anziché i++) la versione e quella.Ora provo a vedere cosa riesco ad imparare

Anonimo ha detto...

Fatto.Ora si comincia a ragionare.
Ho sistemato.Se ti va leggilo e scrivi.A presto.
Rock

hronir ha detto...

Ehm, Rock? Mi sa che era meglio prima!
Mi sembra di capire che quando fai l'upload di un file, lui NON presuppone che sia HTML, e quando si cerca di visualizzarlo, google "protegge" i tag HTML.
Risultato: visualizzando il tuo file (ora) ci si ritrova non un codice C++, ma HTML (con dentro un codice C++, ma che risulta così DAVVERO illeggibile...).

Come avevi fatto, ieri notte, a postare il file in maniera che mantenesse una buona leggibilità? (a questo punto nel blog ti conviene linkare la versione originale...)

hronir ha detto...

Caro Rock,
il tuo codice contiene un sacco di errori "stupidi".
Eccone qualcuno:
- dichiari più volte due variabili con lo stesso nome (t, t[]; f, f[]...); oltretutto i vettori non si dichiarano con parentesi quadre vuote: bisogna specificare quanti elementi contiene il vettore!!! Solo se stai dichiarando un argomento di una funzione, puoi specificare le parentesi quadre vuote...
- come fa a sapere, la funzione istogramma, quanto valgono inf e sup? se proprio vuoi, devi passarle alla funzione come argomenti!
- non ha alcun senso separare condizioni di controllo con una virgola (come fai, ad esempio, nel costrutto "while"), devi specificare il connettore logico che le "unisce": ti chiedi quando sono vere entrambe (&&)? Se almeno una è vera (||)?
- cosa mai può voler dire un'espressione del genere:
t[i]=t;
?!? t è un vettore d'interi, o un intero?
- questa tua sintassi non ha senso:
pascisse=new double valori[n];
la sintassi corretta è:
puntatore = new tipo[taglia];
ad esempio:
pascisse = new double[n];

Prova a correggere un po' di questi errori, così proviamo a passare al contenuto vero del programma...

hronir ha detto...

Pietro mi ha detto che forse il mio ultimo commento poteva risultare offensivo...
"stupido" era fra virgolette, ha un significato tecnico: errori stupidi sono errori di sintassi, in contrapposizione agli errori "concettuali" quali, ad esempio, quelli che riguardano proprio la concezione del programma a livello di diagramma di flusso...
Non si è offeso nessuno, vero?

Anonimo ha detto...

Si, quando ti vedo ti pesto a sangue :-)
No, so che ti riferisci al codice, non preoccuparti. Non sono quel genere di persone che fraintende. Poi è per farmi correggere che ho pubblicato il codice. Ora vedo un po' di metterci mano. A dopo.

hronir ha detto...

E' buona norma NON modificare i post già pubblicati: è meglio aggiungere un commento o pubblicare un post nuovo (a meno di piccole modifiche puntuali...). Un elemento caratterizzante del blog è la sua STORIA: se si modificano post vecchi si perde la traccia di quel che è successo (così non si capiscono più i commenti che magari facevano riferimento a qualcosa che è stato tolto...).
Il blog non è una pagina web che deve essere linda e pulita (non importa se qualcuno fa delle imprecisioni o commette errori, è nelle regole del gioco). Un blog è una specie di lavagna di appunti che scorre col tempo e uno dei suoi punti di forza è proprio che in ogni momento è possibile "tornare indietro"...

Ma veniamo al C++.
Se il compilatore ti dice:

't' has a previous declaration as `int t'
declaration of `int t[((unsigned int)((int)n))]'
conflicts with previous declaration `int t'

sta' sicuro che il compilatore sarà sempre più testardo di te.

E' buona regola leggere i messaggi di errore del compilatore, perchè per gli errori "stupidi" spesso è più che sufficiente per individuare il punto problematico.
Per chi usa linux, i messaggi di errore vengono visualizzati direttamente dopo l'invio della richiesta di compilazione. Per chi usa DEV-C++, quando la compilazione non ha esito positivo, automaticamente si apre una finestra nella parte inferiore dell'editor che riporta i messaggi di errore del compilatore. Allargatela (di solito si apre in modalità ridotta) e partite dall'alto a leggere i suoi messaggi di errore, risolvete un problema alla volta (a partire dall'alto!!!) e poi ricompilate. Non tentate subito di risolvere i problemi degli ultimi messaggi, perchè spesso sono errori generati a cascata da errori precedenti: risolvete il primo errore, e ricompilate, risolvete il nuovo primo errore e ricompilate...

Il primo errore che riporta il tuo programma è proprio quello: com'è naturale nelle cose precise, NON PUOI CHIAMARE CON LO STESSO NOME DUE COSE DIVERSE!!!

Lascio a te procedere alla correzione degli errori successivi.

Bene, dai, ma solo Eugenio, Alioth e Rock usano il blog? Gli altri? Avanti, avanti!!!