Problema

di il
11 risposte

Problema

Il programma è il seguente:
Date tre possibili scelte dopo aver caricato il vettore di numeri, se la scelta è 1, ordinare il vettore, se la scelta è 2 costruire un vettore inverso al vettore caricato, se la scelta è 3 moltiplicare tutti gli elementi del vettore con un numero dato in input. L'ho svolto così :


#include <iostream>
using namespace std;
int i,n;

//Ordinare un vettore
int ordinato()
{
int k,j,vet[j];
for(i=0;i<n-1,i++)
{
for(j=i+1;j<n;j++)
{
if(vet>vet[j])
{
k=vet;
vet=vet[j];
vet[j]=k;
}
}
}
for(i=0;i<n;i++)
{
cout<<vet[n];
}
}

//Costruire un vettore inverso al vettore caricato

int reverse()
{
int, vet[y],vet;
int q;
for(i=0;i<n/2;i++)
{
for(j=n-1;j--)
{
q=vet;
vet=vet[y];
vet[y]=q;
}
}
for(i=0;i<n;i++)
{
cout<< vet[y];
}

// Moltipliocare tutti gli elementi del vettore con un numero dato in input

int moltiplicazione()
{
int num,prod;
for(i=0;i<n;i++)
{
cout<<"Inserisci il numero da moltiplicare";
cin>> num;
prod= num* vet;
}
for(i=0;i<n;i++)
{
cout<< prod;
}
}

// Menù scelta
int menu()
{
int s;
do
{
cout<< "Inserisci la tua scelta";
cin>> s;
}
while(s<1 && s>3);
return s;
}
int main()
{
cout<< "Inserisci il numero di elementi del vettore";
cin>>n;
int vet[n];
int scelta;
for(i=0; i<n; i++)
{
cin>> vet;
}
cout<<"Digita 1 per ordinare il vettore in modo crescente";
cout<<"Digita 2 per costruire un vettore inverso al vettore caricato";
cout<<"Digita 3 per moltiplicare tutti gli elementi del vettore con un numero dato in input";
scelta= menu();
switch (scelta)
{
case 1: ordinato();
break;
case 2: reverse();
break;
case 3: moltiplicazione();
}
return 0;
system("pause");
}


Il compilatore mi da tutti questi errori, che non riesco a capire, potreste dirmi cosa devo fare?

In function `int ordinato()':
9 expected `;' before ')' token
In function `int reverse()':
31 expected primary-expression before "int"
31 expected `;' before "int"
35 `j' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
35 expected `;' before ')' token
37 `vet' undeclared (first use this function)
38 `y' undeclared (first use this function)
49 expected primary-expression before "int"
49 expected `;' before "int"
65 expected primary-expression before "int"
65 expected `;' before "int"
76 expected primary-expression before "int"
76 expected `;' before "int"
100 expected `}' at end of input

11 Risposte

  • Re: Problema

    Controlla la prima for ... c'è una virgola al posto di un punto e virgola
  • Re: Problema

    Non conosco il c++ cmq
    i token se sono come quelli di java, praticamente sono la componente di un programma.
    le variabili la punteggiatura, le parole chiave, i letterali e poi gli identificatori...
    Se non ricordo male sono questi.
    Bene quello che ti dice il compilatore è questo.
    hai dimenticato alcuni token nelle righe da lui indicate... e si ascpettava quello che ti dice
  • Re: Problema

    Ok, ho aggiustato la prima for, quando però mi dice expected primary expression before int non saprei cosa vuol dire, oppure il ; prima di int non so perchè me lo chiede, negli altri programmi non l'ho mai messo
  • Re: Problema

    Hai ricompilato?
  • Re: Problema

    Secondo me dovresti controllarti la punteggiatura e le parentesi graffe in modo particolare
    non avrai chiuso qualche graffa oppure hai sbagliato la punteggiatura come quella che ti ha detto oregon... di sicuro sarà un errore di questi..
    in base agli errori che hai scritto....si aspettava qualcosa che non hai messo
  • Re: Problema

    Manca la graffa di chiusura nella funzione reverse. Per favore usa i tag
    ...
  • Re: Problema

    In realtà in C si opera sempre correggendo il primo errore segnalato e ricompilando. Tutti gli altri errori oltre al primo potrebbero non essere indicativi e vanno controllati nuovamente dopo la ricompilazione.
  • Re: Problema

    Ho risolto, anche se mi rimane qualche dubbio
    #include <iostream>
    using namespace std;
    int i,n;

    //Ordinare un vettore
    int ordinato()
    {
    int k,j,vet[j];
    for(i=0;i<n-1;i++)
    {
    for(j=i+1;j<n;j++)
    {
    if(vet>vet[j])
    {
    k=vet;
    vet=vet[j];
    vet[j]=k;
    }
    }
    }
    for(i=0;i<n;i++)
    {
    cout<<vet[n];
    }
    }

    //Costruire un vettore inverso al vettore caricato

    int reverse()
    {
    int q,i,n,j;
    int y=0;
    int vet[y];
    for(i=0;i<n/2;i++)
    {
    for(j=n-1;j--;)
    {
    q=vet;
    vet=vet[y];
    vet[y]=q;
    }
    }
    for(i=0;i<n;i++)
    {
    cout<< vet[y];
    }
    }

    // Moltipliocare tutti gli elementi del vettore con un numero dato in input

    int moltiplicazione()
    {
    int num,prod,vet;
    for(i=0;i<n;i++)
    {
    cout<<"Inserisci il numero da moltiplicare";
    cin>> num;
    prod= num* vet;
    }
    for(i=0;i<n;i++)
    {
    cout<< prod;
    }
    }

    // Menù scelta
    int menu()
    {
    int s;
    do
    {
    cout<< "Inserisci la tua scelta";
    cin>> s;
    }
    while(s<1 && s>3);
    return s;
    }
    int main()
    {
    cout<< "Inserisci il numero di elementi del vettore";
    cin>>n;
    int vet[n];
    int scelta;
    for(i=0; i<n; i++)
    {
    cin>> vet;
    }
    cout<<"Digita 1 per ordinare il vettore in modo crescente";
    cout<<"Digita 2 per costruire un vettore inverso al vettore caricato";
    cout<<"Digita 3 per moltiplicare tutti gli elementi del vettore con un numero dato in input";
    scelta= menu();
    switch (scelta)
    {
    case 1: ordinato();
    break;
    case 2: reverse();
    break;
    case 3: moltiplicazione();
    }
    return 0;
    system("pause");
    }
  • Re: Problema

    Hai controllato le parentesi della funzione reverse come ti è stato detto?
  • Re: Problema

    Sicuramente ci sono errori ... ad esempio questa riga

    int k,j,vet[j];

    in cui

    vet[j]

    non ha senso.

    Lo stesso in

    int y=0;
    int vet[y];

    per la seconda riga.

    Devi rivedere in teoria (sul libro) come si trattano i vettori ... altrimenti il programma non funzionerà ...
  • Re: Problema

    oregon ha scritto:


    In realtà in C si opera sempre correggendo il primo errore segnalato e ricompilando. Tutti gli altri errori oltre al primo potrebbero non essere indicativi e vanno controllati nuovamente dopo la ricompilazione.
    GIa!!!
    giusta osservazione
Devi accedere o registrarti per scrivere nel forum
11 risposte