|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Dec 2008
Messaggi: 21
|
[C/C++] aiuto per programmini
chiedo un aiuto su alcuni programmini che avevo da fare..in fase di compilazione non viene segnalato nessun errore..ma poi non fanno quello che vorrei..questi sono i testi e i codici che ho scritto..se riuscite a capire dove ho sbagliato mi fate un piacere..grazie
1) (a) realizzare una funzione di nome diff che, presi tre array di interi A, B, C e le dimensioni n ed m di A e B calcola C=A/B(differenza insiemistica tra A e B: C contiene tutti e soli gli elementi che appartengono ad A e non a B).la funzione restituisce come suo risultato il numero di elementi contenuti in C. (b)realizzare un programma principale che legge due sequenze di numeri interi (di lunghezza max 100),terminate da un numero negativo, le memorizza in due array e quindi tramite la funzione diff calcola la differenza insiemistica tra i due insiemi di elementi e la stampa su std output. Questo è il mio codice: Codice:
#include <iostream> using namespace std; int const dim=100; int diff(int A[],int n,int B[],int m,int C[]) {int x=0;//dimensione di C for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(A[i]!=B[j])x++; return x; } int main() {int A[dim]; int B[dim]; int x; int C[x]; cout<<"inserisci la prima sequenza terminata da numero negativo(max 100 numeri)"<<endl; for(int i=0;i<dim & A[i]>=0;i++) cin>>A[i]; cout<<"inserisci la seconda sequenza terminata da numero negativo(max 100 numeri)"<<endl; for(int j=0;j<dim & B[j]>=0;j++) cin>>B[j]; x=diff(A,dim,B,dim,C); cout<<x; return 0; } (b)realizzare un programma principale di prova che legge da std input due stringhe di lunghezza max 80, terminate da “a capo”,memorizza la prima stringa insieme alla sua lunghezza in una struttura di tipo S e quindi richiama la funzione aggiorna passandole la struttura creata e la seconda stringa letta. Il programma termina stampando su std output i valori dei campi c1 e c2 della struttura passata alla aggiorna. N.B utilizzare solo stringhe tipo C(=array di caratteri) Questo è il mio codice: Codice:
#include <iostream> #include <cstring> using namespace std; int const dim=1000; int const dim_max=80; struct S{char c1[dim]; int c2;//lunghezza della stringa }; void aggiorna(S A,char s[]) {int x;//lunghezza di s strcpy(A.c1,strcat(A.c1,s)); A.c2=A.c2+x; return; } int main() {S A; char s[dim_max]; int x; cout<<"inserisci la prima stringa(max 80 caratteri)"<<endl; cin.getline(A.c1,dim_max); A.c2=strlen(A.c1); cout<<"inserisci la seconda stringa(max 80 caratteri)"<<endl; cin.getline(s,dim_max); x=strlen(s); aggiorna(A,s); cout<<A.c1<<endl; cout<<A.c2<<endl; return 0; } Ultima modifica di RikyToro : 28-12-2008 alle 14:48. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
il 3d verrà chiuso o modificato per la mancanza del linguaggio fra parentesi
quadre http://www.hwupgrade.it/forum/showthread.php?t=1649196 inoltre potresti inserire il codice fra i tag CODE rendendo migliore la vita a coloro che provano a leggere il codice?
__________________
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 |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Dec 2008
Messaggi: 21
|
scusate....sistemato...
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
a me il primo non compila per un semplice motivo x non è costante e il compilatore (borland,giustamente) si incazza, inoltre non capisco a cosa ti serve l'array c, inoltre gli elementi dell'array è il caso tu li inizializzi a zero.
ora guardo anche il secondo esempio
__________________
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 |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
per il secondo invece devi ricordarti di una cosa, le strutture sono passate per valore e quindi quella che passi alla funzione non verrà modificato, quindi passalo per riferimento
__________________
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 |
![]() |
![]() |
![]() |
#6 |
Junior Member
Iscritto dal: Dec 2008
Messaggi: 21
|
grazie per l'aiuto..
però in che senso x non è costante? e poi nel 2°es ora riesce a concatenare le stringhe però viene fuori un numero strano e non la lunghezza della stringa finale,non capisco il perchè.. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:35.