|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
Potreste controllare se è giusto
controllate se gli esercizi contenuti in questi 3 files sono giusti
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
parte due
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
parte tre
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
3.12
a)scorretto b)scorretto c)scorretto d)Scorretto e)corretto f)corretto g)scorretto h)scorretto i)scorretto j)scorretto k)scorretto i)scorretto 3.13 il primo aggiunge 1 a cnt finchè l'indirizzo cui punta st è valido il secondo agginge 1 a cnt se il carattere *st è assegnato 3.14 a)Questi due programmi sono una specie di benchmark che verifica quanti errori compie la CPU ripetendo un operazione di assegnamento solo che nel primo caso aggiunge un errore solo se comparando pc con un stringa (pc2) avente un array di caratteri + grande di 1, la funzione restituisce true, mentre nel secondo il programma aggiunge un errore solo se la seconda stringa è identica alla prima come l'istruzione di assegnamento comanda b)non ne ho la più pallida idea 3.15 non so cosa sia un contenitore astratto e non ho la più pallida idea di cosa cambiare |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
Nessuno può aiutarmi?
Dove è il problema? forse le immagini non sono abbastanza chiare, perchè io riesco a leggerle ma se qualcuno non ci riesce sitemo la cosa Ma se il probleme è un altro allora non ci perdo neanche tempo |
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Quote:
Il secondo aggiunge 1 a cnt finchè il carattere puntato da st (st è costante, ma viene incrementato il vaore puntato da st) è diverso da 0 Aspetta che guardo gli altri... |
||
![]() |
![]() |
![]() |
#7 | ||
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
b) secondo me è più veloce la prima ![]() Quote:
|
||
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
Quote:
|
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
il "c" e il "d" del 3.12 sono sbagliati perchè puntano a stringhe già sbagliate, anche se vorrei chiederti il "&" serve quando voglio assegnare il "valore" di una stringa ad un altra mediante parentesi
Ps. ho un altro dubbio Ma il programma 3.14 trova qualche errore io non posso provare perchè ho il compilatore della borland trial che è un casino da imparare ad usare PPS. Conosci qualche compilatore molto semplice che non mi chiede di creare l'interfaccia grafica e mi fa girare il programma sotto DOS §(mi interesserebbe imparare a programmare sotto linux ma prima devo capire windows) |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Il fatto è che la programmazione funzionale è intrinsecamente più veloce della programmazione a oggetti... strcpy lavora su due puntatori a char (4 byte ciascuno) che vengono immessi nello stack per la chiamata a strcpy... Una stringa è un vettore di byte...quindi strcpy non fa altro che copiare uno ad uno il contenuto del vattore (magari chiamando memcpy)... In questo caso l'operatore di assegnamento è abbastanza simile...infatti prende come parametri reali il riferimento all'oggetto da creare ed il rifermento all'oggetto da cui copiare (8 byte)... Anche questa chiama probabilmente la memcpy e fa una copia del vettore... Però già l'operatore non può copiare solamente il contenuto, ma anche altre cose (come ad esempio alcune variabili, ad esempio il numero dei componenti della stringa)...e qui è già intrinsecamente più lenta (anche se di molto poco comunque è più lenta)... Riguardo ai compilatori allora ti consiglio un compilatore compatibile con il GCC di Linux... Qui c'è anche un ambiente grafico integrato... Come compilatore prendi il Mingw 2.95... http://www.bloodshed.net/dev/devcpp.html La "&" in C++ ha tanti usi... Il primo che c'è in C serve per ottenere l'indirizzo di una variabile... int a; int *p = &a; Un'altro serve per creare alias che sono appunto altri nomi per la stesa variabile... int b; int &a = b; //a e b sono la stessa cosa int &f(int &c) //passaggio per riferimento { return c + 1; //c è un alias della variabile che viene passata a f } int x, y = 0; x = f(y); //x è un alias di c che è un alias di y -> x è un alias di y //x e y valgono entrambe 1 x = 2; //x e y valgono entrambe 2 |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Tanto per dimostrarti ciò che ti dicevo :
Codice:
#include <windows.h> #include <mmsystem.h> #include <iostream> #include <string> #include <stdlib.h> using namespace std; int main(int argc, char *argv[]) { int start = timeGetTime(); string uno("Proviamo una bella stringa lunga"); for(int i=0; i<10000000; ++i) { string due = uno; if(due != uno) ; } int end = timeGetTime(); cout << "STL C++ : " << float(end - start)/1000.0 << endl; start = timeGetTime(); char *strUno = "Proviamo una bella stringa lunga"; for(int i=0; i<10000000; ++i) { char *strDue; strcpy(strDue, strUno); if(strcmp(strDue, strUno)) ; } end = timeGetTime(); cout << "Liberia standard C : " << float(end - start)/1000.0 << endl; return 0; } Codice:
H:\>Prova\Progetto1.exe STL C++ : 2.742 Liberia standard C : 1.161 H:\> |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
Cosa significa l'errore
e perchè se provo a disabilitare l'opzione "accept $ in identifier" gli errori salgono a 70 anche su due righe di codice |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Boh...mai vista... Hai scaricato la versione con GCC 2.95 (la seconda nella pagina) ? Non scaricare la versione con GCC 3.2...
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
Quote:
![]() ma ora provvedo |
|
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
Già che ci sei puoi controllare anche questi; specialmente il terzo esercizio
Quote:
3.16 a)Valido: crea una variabile di tipo int b)Non valido (costante non inizializzata); crea un oggetto costante di tipo int c)Non valido (perché non inizializzato), creazione di un puntatore a variabile intera costante d)Non valido (non inizializzato), creazione di un puntatore costante ad oggetto intero non costante e)Non valido (non inizializzato), creazione di un puntatore costante ad oggetto intero costante 3.17 a)Valida, crea una variabile di tipo int b)Valida, crea un oggetto intero costante c)Valida, crea un puntatore ad oggetto costante d)Non valida, crea un puntatore costante ad oggetto non costante e gli assegna un valore indirizzo e)Valida, assegna ad un puntatore costante ad oggetto il valore di un oggetto costante. 3.18 a)Non legale: ad I non può essere assegnato se stesso b)Legale (ma non ne sono proprio sicuro), assegna il valore di un oggetto costante ad un puntatore ad oggetto costante c)Non legale, assegna ad un puntatore costante ad oggetto non costante un valore indirizzo d)? e)Legale; assegna ad un puntatore costante ad oggetto costante il valore di un oggetto costante f)Non legale, IC non può essere modificato Solo al puntatore costante ad oggetto non costante non può essere assegnato un indirizzo giusto? |
|
![]() |
![]() |
![]() |
#16 | ||
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
d) E' legale assegnare un puntatore costante ad un puntatore non costante dello stesso tipo (puntatore a intero costante)... Quote:
|
||
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
se l'assegnazione D è legale allora ad un puntatore ad oggetto costante posso assegnare un puntatore costante ad oggetto costante; ma scusa non è inutile: anche senza assegnazione non potrò modificare ne l'oggetto indicato ne il puntatore che lo punta
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Però gli puoi cambiare il contenuto a quel puntatore e fargli puntare ad un altro oggetto costante...
const int a = 4; const int b = 5; const int *p = a; int c = p + 5; p = &b: c = p + 5; |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 2870
|
hai ragione
Il compilatore 2.95 da questi due errori al listato C:\Documents and Settings\Michele Sgrillo\Desktop\Untitled1.cpp [Warning] In function `int main(int, char **)': 41 C:\Documents and Settings\Michele Sgrillo\Desktop\Untitled1.cpp parse error at end of input |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il nuovo progetto che hai creato sei sicuro che sia un progetto C++ ?
Chapa questo progetto e provalo... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:46.