|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
Vi prego aiutatemi
sono nei guai, mi mancano questi 2 esercizi e non ci riesco proprio a farli, qualcuno gia gli ha abbozzati, ma io non riesco a sistemarli, dai per piacere, voi non ci mettete niente, poi non vi scoccio piu
ESERCIZIO 2ue array A e B di lunghezza rispettivamente n e m sono simili se contengono gli stessi elementi. Attenzione che l'array {1,1,3} è simile all'array {1,3,1} ma anche all'array{3,3,3,1}, ma non all'array{1,2,3}. Scrivere un programma che verifica se due array di interi sono simili. INPUR: numero n degli elementi del primo array, successivamente i suoi n, poi la lunghezza m del secondo array e successivamente i suoi m elementi. OUTPUT: 1 se i due array sono simili, 0 altrimenti. ESERCIZIO 3ati due array A e B di uguale lunghezza, A è permutazione di B, se contiene esattamente gli stessi elementi B, non necessariamente nelle stesse posizioni (eventuali elementi ripetuti devono avere lo stesso numero di occorrenze in entrambi gli array). Attenzione quindi che l'array{1,1,3} è permutazione dell'array {1,3,1} ma non dell'array{3,3,1}. Scrivere un programma che verifica se due array di interi sono tra loro permutazioni. INPUT:numero n degli elementi dei due array e successivamente i 2n elementi gli elementi dei due array. OUTPUT: 1 se i due array sono uno la permutazione dell'altro, 0 altrimenti. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Non sono esercizi particolarmente complicati. Entrambi si possono suddividere in due fasi: a) input dei dati b) elaborazione dei dati Il tuo problema quale è di preciso?? Hai già buttato giù del codice (spero
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
io per ora riesco solo a caricare i vettori, perchè ancora devo finire di studiarli e quindi non so fare molte cose sui vettori il problema è che mi servono per dopodomani non so come fare |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
#include <stdio.h>
int main() { int a[1000]; int b[1000]; int i=0; int j=0; int uguali=0; scanf("%d", &j); for(i=0;i<j;i++){ scanf("%d", &a[i]); scanf("%d", &b[i]); } QUESTO PEREO' PENSO CHE VALGA SOLO PER IL TERZO ESERCIZIO, CIOE' CON I DUE VETTORI CHE HANNO LO STESSO NUMERO DI ELEMENTI. SO FARLO ANCHE CON ELEMENTI DIVERSI, MA POI NON SO CONTINUARE |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
dai ti prego andibin o chiunque altro, aiutatemi, non è che non mi va, è che non ci riuscirei mai in 2 giorni
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 3852
|
Quote:
Scherzo eh, non te la prendere..
__________________
Cerco fotocamera con buono zoom!! CLICCA! ° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) ° |
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
no, non potevo perchè me li hanno dati 2-3 giorni fa
dai se sai farli aiutami, per piacere |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ok, il codice che hai postato direi che va bene. Come hai giustamente pensato, vale solo per il 3° esercizio ma la differenza con il secondo 2° è praticamente minima. Nel secondo esercizio invece di prendere 1 lunghezza ne prendi 2.
Da quanto ho capito, il tuo problema è sviluppare gli algoritmi per i due esercizi. Qui, secondo me, basta solo ragionare un pochino. Vediamo il secondo esercizio: ti chiede di stabilire se i 2 array sono simili. Si deduce che sono simili solo se contengono gli stessi elementi, in qualunque posizione. Giriamo la cosa al contrario: non sono simili se uno dei due array contiene anche solo un valore che non c'è nell'altro. Prendiamo a[]={1, 4, 1, 7} e b[]={4, 1, 1} Fai un ciclo for per scansionare gli elementi di a[]. Per ogni elemento in a[] fai un ciclo for innestato che scansiona b[] per vedere se c'è un elemento in b[] con lo stesso valore. Se non c'è, allora non sono simili. Ma non basta, devi fare poi la stessa cosa ma all'inverso, cioè scansioni prima b[] e per ogni elemento scansioni a[] per vedere se c'è. Il terzo esercizio è anche abbastanza semplice: basta ordinare i 2 array e poi fare un confronto valore per valore. Se sono uguali allora un array è la permutazione dell'altro.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
guarda, per il secondo esercizio potrei anche riuscirci, domani mi ci metto.
ma il terzo è impossibile per me visto che ancora non so fare l'ordinamento dei vettori. se potresti abbozzarlo tu il terzo mi faresti un enorme piacere, io intanto domani mattina provo a fare il secondo. ti ringrazio |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Leggi qui: http://it.wikipedia.org/wiki/Bubble_sort
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
ECCO QUELLO CHE SONO RIUSCITO A FARE DEL SECONDO ESERCIZIO, ORA COME DEVO PROCEDERE, HO LETTO IL TUO SUGGERIMENTO MA NON SO APPLICARLO A QUELLO CHE HO GIA FATTO IO
#include <stdio.h> int main() { int a[1000]; int b[1000]; int f=0; int g=0; int h=0; int z=0; scanf("%d", &f); for(g=0;g<f;g++){ scanf("%d", &a[g]); } scanf("%d", &h); for(z=0;z<h;z++){ scanf("%d", &b[z]); } } |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Comunque usa dei nomi più chiari per le variabili. Non devi mica per forza usare tutte le lettere dell'alfabeto fino alla z! Potresti usare 'na' e 'nb' per tenere il numero degli elementi e poi una generica 'i' per i cicli for. Per l'algoritmo, l'ho già spiegato sopra ma forse non in modo molto chiaro: l'obiettivo è quello di scoprire se un elemento di un array non c'è nell'altro array. Per questo motivo, devi fare 2 test: a[] contro b[] e poi il contrario b[] contro a[]. Vediamo il primo step: devi scansionare tutti gli elementi dell'array 'a'. Per ogni elemento, fai un ciclo for innestato per andare a vedere se c'è nell'array 'b'. Devi anche tenere un flag per sapere se un elemento è stato trovato o meno. tradotto in pseudo-codice: Codice:
ciclo da i=0 a i=na-1
flag = 0
ciclo da j=0 a j=nb-1
se a[i] uguale a b[j] allora
flag = 1
fine se
fine ciclo
se flag uguale a 0 allora
esci dal ciclo
fine se
fine ciclo
Se alla fine di questo codice, flag vale 0, vuol già dire che non sono simili e quindi puoi anche non fare l'altro step al contrario. Provaci e poi vediamo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
prima di provare il tuo suggerimento vorrei farti vedere quello che ho fatto io, penso che vada bene ma non so cosa stampare alla fine. dacci un'occhiata
#include <stdio.h> int main() { int a[1000]; int b[1000]; int f=0; int g=0; int h=0; int z=0; int output=0; int cont=0; int uguali=1; int j=0; int i=0; scanf("%d", &f); for(g=0;g<f;g++){ scanf("%d", &a[g]); } scanf("%d", &h); for(z=0;z<h;z++){ scanf("%d", &b[z]); } if(f<h) //con f size di a e h size di b { for(j=0;j<h;j++) { i=0; while(i<f&&uguali==0) { if(a[i]==b[j]) { uguali=1; cont++; } i++; } } if(cont=h) output=1; } else { for(j=0;j<f;j++) { i=0; while(i<h&&uguali==0) { if(a[i]==b[j]) { uguali=1; cont++; } i++; } } if(cont=f) output=1; } while(getchar() != '\n'); printf("Premere INVIO per continuare..."); getchar(); } |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
per provare il tuo dovrei rifare tutto da capo perchè co tutti sti nomi non mi ci trovo piu, cerca di vedere se il mio è giusto
|
|
|
|
|
|
#16 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
Inizia a fare il primo step: a[] contro b[]. Fai un ciclo for con dentro un altro ciclo for.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
ma non so cosa scriverci,
per esempio che intendi per scansionare |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
int arr_a[1000];
int arr_b[1000];
int na, nb, ia, ib;
....input....
for (ia = 0; ia < na; ia++)
{
....
for (ib = 0; ib < nb; ib++)
{
....
}
....
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
ci provo
|
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
#include <stdio.h>
int main() { int arr_a[1000]; int arr_b[1000]; int na, nb, ia, ib; scanf("%d", &na); for(ia=0;ia<na;ia++){ scanf("%d", &arr_a[ia]);} scanf("%d", &nb); for(ib=0;ib<nb;ib++){ scanf("%d", &arr_b[ib]);} for (ia = 0; ia < na; ia++) { COME SI CONTINUA? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:37.



















