il quesito da risolvere � il seguente: siano dati in ingresso il riempimento e gli elementi di un vettore interi V. scrivere un programma che identifichi e memorizzi in un apposita struttura dati tutte le terne a,b,c di elementi di V che verificano la condizione seguente:a<b<c. si noti che le terne considerate debbono essere disgiunte. per ciascuna terna trovata si memorizzi la posizione del primo elemento e la somma degli elementi che la compongono. si provveda poi ad eliminare dal vettore V la terna avente somma max. stampare infine tutte le terne trovate.
mi da il seguente errore: main.cpp: In function 'int main()':main.cpp:41:31: error: expected primary-expression before 'x'
elimina_seq (v,r,sequenza x);
e il programma � il seguente... come mai?
codice:#include <cstdlib> #include <iostream> #include <stdio.h> #include "newfile.h" using namespace std; /* * */ int r; int v[nmax]; int k[nmax]; struct sequenza { int pos[3]; int somma[3]; }x[100]; int main() { cout<<"inserisci il riempimento\n"; do cin>>r; while (r>nmax); inserisci_vet(v,r); stampa_vet(v,r); elimina_seq (v,r,sequenza x); cout<<"il vettore senza terna (con somma max) � il seguente:\n"; stampa_vet(v,r); system ("pause"); return 0; }codice:#include <cstdlib>#include <iostream> #include <stdio.h> #include "newfile.h" using namespace std; void inserisci_vet(int v[nmax],int r) { cout<<"inserisci gli elementi del vettore\n"; for (int i=0;i<r;i++) { cout<<"v["<<i<<"]: "; cin>>v[i]; cout<<endl; } } void stampa_vet(int v[nmax],int r) { cout<<"il vettore inserito �:\n"; for (int i=0;i<r;i++) { cout<<"v["<<i<<"]: "; cout<<v[i]; cout<<endl; } } struct sequenza { int pos[3]; int somma[3]; }; struct sequenza x[100]; void controllo(int v[nmax],int r,int k[nmax]) { for (int i=0;i<r;i++) { if (v[i]<v[i+1] && v[i+1]<v[i+2]) { int somma =v[i]+v[i+1]+v[i+2]; x[i].sequenza.pos=i; x[i].sequenza.somma=somma; for (int j=0;j<r;j++) { k[j]=0; v[i]=k[j+1]; v[i+1]=k[j+2]; v[i+2]=k[j+3]; k[j+4]; } } } } int somma_max(int v[nmax],int r,struct sequenza x[100]) { int max=x[0].sequenza.somma; for (int i=0;i<r;i++) { if (x[i+1].sequenza.somma>x[i].sequenza.somma) max=x[i+1].sequenza.somma; } return (max); } void elimina_seq (int v[nmax],int r,struct sequenza x[100]) { for (int i=0;i<r;i++) { if (x[i].sequenza.somma==somma_max(sequenza x[100])) { r-=3; for (int k=0;k<r-3;k++) { int j=k+3; v[i+k]=v[i+j]; } } } }codice:#include <cstdlib>#include <iostream> #include <stdio.h> using namespace std; #define nmax 100 void inserisci_vet(int v[nmax],int r); void stampa_vet(int v[nmax],int r); void controllo(int v[nmax],int r,int k[nmax]); int somma_max(struct sequenza x[100]); void elimina_seq (int v[nmax],int r,struct sequenza x[100]);

Rispondi quotando
