|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
[c++]tracce d'esame
ciao a tutti. tra una settimana ho l'esame di programmazione in c++. mi hanno dato alcune delle tracce ke usciranno. partiamo dalla prima.
Codice:
Si richiede di sviluppare un programma multifile per l’eliminazione degli elementi dispari in un vettore di numeri naturali. Si progetti una funzione “elimina_dispari” che riceva in ingresso da tastiera il vettore di numeri naturali (interi non negativi) V allocato staticamente ed il suo riempimento n, ed elimini dal vettore V tutti gli elementi dispari in esso eventualmente presenti. La funzione restituisce inoltre come valore di ritorno il numero di elementi eliminati. L’eliminazione deve essere effettuata senza l’ausilio di alcun vettore di appoggio. Nel main bisognerà: - leggere V ed n (mediante una opportuna funzione “leggi_vetint”); - effettuare l’eliminazione degli elementi dispari (mediante la funzione”elimina_dispari”); - stampare il vettore in seguito all’eliminazione di uno o più elementi (mediante una opportuna funzione “stampa_vetint”); Non è richiesto controllo sull’input: si supponga che l’utente inserisca correttamente vettore e riempimento. Il main deve invece consentire di rieseguire il programma a richiesta dell’utente. Esempi di esecuzione: Procedura di inserimento del vettore Inserisci il riempimento: 5 Inserisci il vettore. Solo numeri interi positivi: Elemento di posizione 0: 1 Elemento di posizione 1: 3 Elemento di posizione 2: 5 Elemento di posizione 3: 7 Elemento di posizione 4: 9 Inserimento terminato. Eliminazione di tutti gli elementi dispari dal vettore. sono stati eliminati n. 5 elementi. Vettore risultante: Il vettore e' vuoto! Un altro giro? (Y=1/N=0) 1 Procedura di inserimento del vettore Inserisci il riempimento: 3 Inserisci il vettore. Solo numeri interi positivi: Elemento di posizione 0: 0 Elemento di posizione 1: 1 Elemento di posizione 2: 2 Inserimento terminato. Eliminazione di tutti gli elementi dispari dal vettore. sono stati eliminati n. 1 elementi. Vettore risultante: Elemento di posizione 0: 0 Elemento di posizione 1: 2 Un altro giro? (Y=1/N=0) 0 grazie ciaoooo
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
1 provaci poi ti do una mano
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jan 2006
Città: Lassù
Messaggi: 2842
|
Quote:
Un po scarso come livello.
__________________
Fa' che non turbi l'anima tua il triste spettacolo dell'ingiustizia umana; anch' essa, nell'economia divina, ha il suo valore. È sopra di essa che vedrai sorgere immancabilmente la giustizia di Dio. HO CONCLUSO EGREGIAMENTE TRATTATIVE CON OLTRE 90 UTENTI! ATTENZIONE: consiglio di evitare assolutamente trattative con l'utente Herant |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Lassù
Messaggi: 2842
|
Ho letto tracce e^100 volte più toste di queste.
__________________
Fa' che non turbi l'anima tua il triste spettacolo dell'ingiustizia umana; anch' essa, nell'economia divina, ha il suo valore. È sopra di essa che vedrai sorgere immancabilmente la giustizia di Dio. HO CONCLUSO EGREGIAMENTE TRATTATIVE CON OLTRE 90 UTENTI! ATTENZIONE: consiglio di evitare assolutamente trattative con l'utente Herant |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
a parte la semplicità, bisogna ricordare a cosa serve il forum:
il forum serve per chiarire dubbi, non per fare esami........ Prova a risolverlo, e se non ne vieni a capo posta i tuoi problemi e li risolveremo.
__________________
My gaming placement |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Lassù
Messaggi: 2842
|
ben detto.
__________________
Fa' che non turbi l'anima tua il triste spettacolo dell'ingiustizia umana; anch' essa, nell'economia divina, ha il suo valore. È sopra di essa che vedrai sorgere immancabilmente la giustizia di Dio. HO CONCLUSO EGREGIAMENTE TRATTATIVE CON OLTRE 90 UTENTI! ATTENZIONE: consiglio di evitare assolutamente trattative con l'utente Herant |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
comunque manco all'itis mi hanno mai dato una traccia così banale Codice:
#include "stdafx.h"
using namespace std;
#define N 50
void leggi_vetint (int arr[], int n){
cout << "Inserisci il vettore. Solo numeri interi positivi:"<<endl;
for (int i=0;i<n;i++){
cout << "Elemento di posizione " <<i << ":\t" ;
cin >> arr[i];
}
cout << "Inserimento terminato."<<endl;
}
int elimina_dispari (int arr[], int n){
int del_element=0;
cout << "Eliminazione di tutti gli elementi dispari dal vettore."<<endl;
for (int i=0;i<n;i++){
if (arr[i]%2 != 0){
del_element ++;
for (int y=i;y<n-1;y++)
arr[y] = arr[y+1];
}
}
return del_element;
}
void stampa_vetint (int arr[], int n){
for (int i=0;i<n;i++)
cout << "Elemento di posizione " << i << ": "<<arr[i]<<endl;
}
int _tmain()
{
int arr[N],n, del_ele;
cout << "Porcedura di inserimento del vettore\nInserisci il riempimento:\t";
cin >> n; /* per correttezza n deve essere controllato che sia < N */
leggi_vetint (arr, n);
del_ele = elimina_dispari(arr, n);
cout << "sono stati eliminati n. " << del_ele << " elementi."<<endl;
cout << "Vettore risultante:"<<endl;
(n-del_ele == 0)? cout << "Il vettore e' vuoto!"<<endl : stampa_vetint (arr, n-del_ele);
system ("PAUSE");
return 0;
}
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
beh beati voi ke la ritenete così facile. io mica tanto...
cmq nn riesco a rpovarci perkè non sono in grado di creare un funzione ke faccia quel ke vuole la traccia. sono capace di: 1)definire un vettore di numeri naturali 2)di creare un programma multifile 3)di verificare la posizione di un elemento nel vettore non sono capace: 1)di creare una funzione come elimina_dispari 2)di inserire il fattore riempimento n del vettore 3)di stampare gli elementi eliminati e poi quelli restanti.
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
per farvi rendere un pò conto, prendendo un pezzo del codice di Fenomeno85
Codice:
void leggi_vetint (int arr[], int n){
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
EDIT
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
allora a te manca tutta la teoria che non è facile spigare in poche righe, diciamo che un libro sarebbe l'ideale.
Allora vediamo se riesco a spiegare in modo facile: Definizione di una funzione Codice:
tipo_ret nome_funzione (parametri) Questo significa che se è esempio int, la variabile ritornata sarà un intero, char carattere, int * un puntatore a un intero, void significa che non ritorni nulla e così via. nome_funzione la scegli te o al massimo ti viene fornita dalle richieste. I parametri vanno scritti come se stessi dichiarando le variabili. Gli array in c si possono passare o: Codice:
int nome (int a[]) Codice:
int nome (int *a) Se sei sotto un progetto l'analista ti avrà dato delle specifiche altrimenti come devi ragionare: devi passare tutte le variabili che ti servono per fare quello che ti serve. In questo caso te devi lavorare sull'array sul quale analizzi solo su una porzione definita. Quindi alla funzione ti servono appunto arr e n. Spero che un pò ti ho chiarito al massimo dimmi che cosa non ti è chiaro Comunque con l'esperienza vedrai che capirai velocemente. Tanto usare c usare vb usare php alla fine è solo sintassi nulla di +. ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso Ultima modifica di Fenomeno85 : 13-01-2006 alle 19:36. |
|
|
|
|
|
#12 | |
|
Member
Iscritto dal: Oct 1999
Messaggi: 111
|
Quote:
nel caso peggiore (array pieno di elementi dispari) è quadratica nell'input:non pensi che sia poco efficiente? se l'esame è di programmazione ad una facoltà di informatica, probabilmente il professore che ha assegnato la traccia valuterà proprio questo parametro. evidentemente il programma è limitato come complessità di spazio e deve essere risolto con una complessità di tempo ragionevole. forse utilizzando due indici, uno per scorrere l'array, l'altro per memorizzare l'ultima posizione valida si ottiene una funzione più efficiente perchè lineare in funzione dell'input. |
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: Dec 2004
Messaggi: 88
|
Quote:
__________________
"Voi che li avete girati nei giradischi e gridati voi che li avete aspettati ascoltati bruciati e poi scordati..chi erano mai questi Beatles MA CHI ERANO MAI QUESTI BEATLES" |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Lassù
Messaggi: 2842
|
Il linguaggio C è l'essenza della programmazione!
__________________
Fa' che non turbi l'anima tua il triste spettacolo dell'ingiustizia umana; anch' essa, nell'economia divina, ha il suo valore. È sopra di essa che vedrai sorgere immancabilmente la giustizia di Dio. HO CONCLUSO EGREGIAMENTE TRATTATIVE CON OLTRE 90 UTENTI! ATTENZIONE: consiglio di evitare assolutamente trattative con l'utente Herant |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
Esatto!! W il C !!!
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Oct 1999
Messaggi: 111
|
come vedo dal tuo codice, utilizzi 3 indici
del_element che continene quella che sarà la dimensione dell'array una volta eliminati tutti gli elementi i che è l'indice che scorre l'array alla ricerca degli elementi da eliminare y che ti serve per spostare tutti gli elementi ogni volta... Ma è inutile spostarli tutti ogni volta. basta spostare solo l'elemento corrente lo pseudo codice che risolve il problema dovrebbe essere così poni indice=0; poni numpari=0 scorri l'array un elemento alla volta se l'elemento è pari mettilo nella cella Array[numpari] incrementa il valore numpari restituisci n-numpari in pratica sposa tutti e solo in numeri pari riempiendo le parti più basse con numeri pari nel caso in cui l'array è pieno di numeri pari ogni elemento viene spostato su se stesso nel caso in cui nessun elemento sua pari nessun elemento spostato in entrambi i casi l'intero array viene scorso una sola volta e nel caso peggiore ci sono solo n spostamenti (caso in cui tutti gli elementi sono pari) il codice c dovrebbe essere (sono un po' arruginito) int pari =0; //conta i pari nell'array int indice=0; //indice per scorrere l'array for (indice=0; indice<n; indice++){ // se l'elemento è pari.... if(arr[indice]%2==0){ //copia l'elemento corrente nella prima posizione disponibile e incrementa la posizione arr[pari++]=arr[indice]; } } return n-pari; (se vuoi fare all'interno della funzione il conto degli elementi eliminati oppure return pari; //che rappresenta la nuova dimensione del vettore e fuori stamperai n-pari come numero di elementi eliminati cosa ne pensi? |
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Apr 2004
Messaggi: 130
|
Codice:
int elimina_dispari (int arr[], int n)
{
int i = 0;
for (; i < n && (arr[i] % 2 == 0); ++i)
;
for (int y = i+1; y < n; ++y)
if (arr[y] % 2 == 0)
arr[i++] = arr[y];
return (n - i);
}
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Oct 1999
Messaggi: 111
|
l'importante è dare una mano al povero SCHYO...
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:37.



















