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]);