Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

di il
77 risposte

77 Risposte - Pagina 2

  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Ah ho inteso
    hai perfettamente ragione....però mi sa che c'è qualcosa che non va se faccio cosi:
    void vettore3 (int n1,int n2,float vett1[],float vett2[],float vett3[]){
    int j = 0;
    double media1=vetmedia(n1,vett1);
    for (int i=0;i<n2;i++){
    if (vett2<media1){
    vett3[j] = vett2;
    j++;
    }
    }
    cout<<"Il V3 contenente i valori in V2 che risultano <della media dei valori in V1 e': V3=[ ";
    for (int a = 0 ; a < j; a++){
    cout << vett3[a] << " ";
    }
    cout << "]\n";
    double media2=vetmedia(j,vett3);
    cout<<"la media del vettore V1 e' = "<<media1<<'\n';

    if(j != 0)
    {
    double media2=vetmedia(j,vett3);
    cout<<"la media del vettore V3 e' = "<<media2<<'\n';
    }
    else
    cout << "la media non può essere calcolata, V3 vuoto";


    }
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Si ho inteso ma se faccio in questo modo c'è qualcosa che non va:
    void vettore3 (int n1,int n2,float vett1[],float vett2[],float vett3[]){
    int j = 0;
    double media1=vetmedia(n1,vett1);
    for (int i=0;i<n2;i++){
    if (vett2<media1){
    vett3[j] = vett2;
    j++;
    }
    }
    cout<<"Il V3 contenente i valori in V2 che risultano <della media dei valori in V1 e': V3=[ ";
    for (int a = 0 ; a < j; a++){
    cout << vett3[a] << " ";
    }
    cout << "]\n";
    double media2=vetmedia(j,vett3);
    cout<<"la media del vettore V1 e' = "<<media1<<'\n';

    if(j != 0)
    {
    double media2=vetmedia(j,vett3);
    cout<<"la media del vettore V3 e' = "<<media2<<'\n';
    }
    else
    cout << "la media non può essere calcolata, V3 vuoto";


    }
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Ok, ora il programma funziona correttamente.
    Grazie ancora.
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Ciao,
    scusa vorrei effettuare una modifica al programma e cercare di leggere o stampare 2 vettori,scrivendo una funzione per leggere o scrivere un solo vettore e chiamarla più volte...
    solo che non riesco a effettuarla....sapresti darmi qualche dritta?ti ringrazio in anticipo.
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Con cin leggi i dati da tastiera, con cout li stampi su schermo, dov'è il problema.
    
    void leggi_vettore(int vet[], int size)
    {
    for(i = 0; i < size; i++)
    cin >> 
    .....
    }
    
    void stampa_vettore(int vet[], int size)
    {
    for(i = 0; i < size; i++)
    cout << 
    .....
    }
    
    
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Si su questo mi ritrovo ma ho inviato il programma al professore e mi ha chiesto di generare una sola funzione per indicare il vettore e poi farlo richiamare ogni volta.
    Insomma da quello che ho compreso il professore non vuole che io inserisca vett1 e vett 2 ma un unico vettore che poi richiamo ogni volta....compreso quello che intendo dire?
    scusa se rispondo ora ma non avevo connessione....
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Insomma presumo che debba creare un nuovo sottoprogramma del tipo void copia....ma non ne sono sicurissimo...mmm
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Mi è stato chiesto insomma questo:
    "Quando devi leggere o stampare 2 vettori, devi scrivere una funzione
    per leggere o scrivere un solo vettore e chiamarla più volte"
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Ho provato adesso in questo modo...presumo che sia corretto...confermi anche tu?
    /*Quando devi leggere o stampare 2 vettori, devi scrivere una funzione
    per leggere o scrivere un solo vettore e chiamarla più volte*/

    #include<iostream>
    using namespace std;
    #include<stdlib.h>

    //Prototipi delle funzioni
    void input (int &n,int vett[],int numvett);
    void output (int n1, int vett1[], int numvett);



    int main() {
    int n1;
    int n2;
    int vett1[100];
    int vett2[100];
    //Chiamate delle funzioni
    input (n1, vett1,1);
    input (n2, vett2,2);
    cout<<"Il vettore V1= "<<endl;
    output(n1,vett1,1);
    cout<<"\n";
    cout<<"Il vettore V2= "<<endl;
    output(n2,vett2,2);


    cout<<"\n\n";

    system("PAUSE");
    return 0;
    }


    void input(int&n,int vett[],int numvett) {

    cout<<"Assegna il riempimento al vettore"<<numvett<< "\n";
    cin>>n;
    cout<<"Assegna"<<n<<"elementi del vettore"<<numvett<< "\n";

    for (int i=0;i<n;i++)
    cin>>vett;


    }


    void output (int n1, int vett1[], int numvett){

    for (int i=0;i<n1;i++)
    cout<<vett1;

    }
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Credo che possa considerarsi corretto. Non capisco perche passi il numvett, devi proprio specificare nella funzione di che vettore si tratti? Non lo puoi fare prima che chiami la funzione?
    
    cout >> "Riempimento vettore 1";
    input(n1,vett1);
    cout >> "Riempimento vettore 2";
    input(n2,vett2);
    
    
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Ok, quindi consigli in questo modo?
    però non riesco ad allineare il vettore 1 con i valori da me inseriti....
    #include<iostream>
    using namespace std;
    #include<stdlib.h>

    //Prototipi delle funzioni
    void input (int &n,float vett[]);
    void output(int n,float vett[]);

    int main() {
    int n1;
    int n2;
    float vett1[100];
    float vett2[100];
    //Chiamate delle funzioni
    cout<<"Riempimento vettore 1 \n";
    input (n1, vett1);
    cout<<"Riempimento vettore 2 \n";
    input (n2, vett2);
    cout<<"Il vettore V1="<<endl;
    output(n1,vett1);
    cout<<"\n";
    cout<<"Il vettore V2="<<endl;
    output(n2,vett2);
    cout<<"\n\n";

    system("PAUSE");
    return 0;
    }
    void input(int&n,float vett[]) {


    cin>>n;
    cout<<"\n";
    cout<<"Assegna"<<n<<"elementi del vettore \n ";

    for (int i=0;i<n;i++)
    cin>>vett;


    }
    void output (int n, float vett[]){

    for (int i=0;i<n;i++)
    cout<<" "<<vett;
    cout<<"\n";

    }
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Insomma vorrei cercare di rifolmulare il programma....
    ma adesso per generare il Vettore 3 mi conviene creare un void copia?
    sono arrivato nuovamente a questo punto
    #include<iostream>
    using namespace std;
    #include<stdlib.h>

    //Prototipi delle funzioni
    void input (int &n,float vett[]);
    double vettmedia(int n1,float vett1[]);

    void output(int n,float vett[]);
    //Si scriva un programma che copi in un nuovo vettore V3 i valori contenuti in V2
    // che risultano minori della media dei valori presenti in V1


    int main() {
    int n1;
    int n2;
    int n3;
    float vett1[100];
    float vett2[100];
    float vett3[100];
    //Chiamate delle funzioni
    cout<<"Riempimento vettore 1 \n";
    input (n1, vett1);
    cout<<"Riempimento vettore 2 \n";
    input (n2, vett2);
    cout<<"Il vettore V1="<<endl;
    output(n1,vett1);
    cout<<"\n";
    cout<<"Il vettore V2="<<endl;
    output(n2,vett2);
    double media= vettmedia(n1,vett1);
    cout<<"la media del vettore 1e'= "<<media<<endl;





    cout<<"\n\n";

    system("PAUSE");
    return 0;
    }
    void input(int&n,float vett[]) {


    cin>>n;
    cout<<"\n";
    cout<<"Assegna"<<n<<"elementi del vettore \n ";

    for (int i=0;i<n;i++)
    cin>>vett;

    }
    double vettmedia(int n1,float vett1[]){

    double media=0;
    for (int i=0;i<n1;i++) {
    media+=vett1;}
    media=media/n1;
    return media;
    }



    void output (int n, float vett[]){

    for (int i=0;i<n;i++)
    cout<<" "<<vett;
    cout<<"\n";

    }
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Allora sono andato avanti e ho calcolato i valori di V2<della media di V1 in questo modo:
    #include<iostream>
    using namespace std;
    #include<stdlib.h>

    //Prototipi delle funzioni
    void input (int &n,float vett[]);
    double vettmedia(int n1,float vett1[]);
    void vett_nuovo(int n1,int n2,float vett1[],float vett2[],int &n3,float vett3[]);

    void output(int n,float vett[]);
    //Si scriva un programma che copi in un nuovo vettore V3 i valori contenuti in V2
    // che risultano minori della media dei valori presenti in V1


    int main() {
    int n1;
    int n2;
    int n3;
    float vett1[100];
    float vett2[100];
    float vett3[100];
    //Chiamate delle funzioni
    cout<<"Riempimento vettore 1 \n";
    input (n1, vett1);
    cout<<"Riempimento vettore 2 \n";
    input (n2, vett2);
    cout<<"Il vettore V1="<<endl;
    output(n1,vett1);
    cout<<"\n";
    cout<<"Il vettore V2="<<endl;
    output(n2,vett2);
    double media= vettmedia(n1,vett1);
    cout<<"la media del vettore 1e'= "<<media<<endl;
    vett_nuovo(n1,n2,vett1,vett2,n3,vett3);
    cout<<"il vettore3 risultante e'=\n";
    output(n3,vett3);





    cout<<"\n\n";

    system("PAUSE");
    return 0;
    }
    void input(int&n,float vett[]) {


    cin>>n;
    cout<<"\n";
    cout<<"Assegna"<<n<<"elementi del vettore \n ";

    for (int i=0;i<n;i++)
    cin>>vett;

    }
    double vettmedia(int n1,float vett1[]){

    double media=0;
    for (int i=0;i<n1;i++) {
    media+=vett1;}
    media=media/n1;
    return media;
    }

    void vett_nuovo(int n1,int n2,float vett1[],float vett2[],int &n3,float vett3[]){
    double media= vettmedia(n1,vett1);
    n3=0;
    for (int i=0;i<n2;i++){
    if(vett2<media){
    vett3[n3]=vett2;
    n3++;
    }
    }
    }

    void output (int n, float vett[]){

    for (int i=0;i<n;i++)
    cout<<" "<<vett;
    cout<<"\n";

    }


    Presumi che cosi sia più corretto a tuo avviso?
    scusa per la sequenza di messagi ma per me è quasi arabo l'informatica ....
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    E son stato cotretto a dover riscrivere la funzione double per calcolare la media del nuovo vettore 3 in questo modo:
    #include<iostream>
    using namespace std;
    #include<stdlib.h>

    //Prototipi delle funzioni
    void input (int &n,float vett[]);
    double vettmedia(int n1,float vett1[]);
    void vett_nuovo(int n1,int n2,float vett1[],float vett2[],int &n3,float vett3[]);
    void output(int n,float vett[]);
    double vettmedia3(int n3,float vett3[]);
    //Si scriva un programma che copi in un nuovo vettore V3 i valori contenuti in V2
    // che risultano minori della media dei valori presenti in V1


    int main() {
    int n1;
    int n2;
    int n3;
    float vett1[100];
    float vett2[100];
    float vett3[100];
    //Chiamate delle funzioni
    cout<<"Riempimento vettore 1 \n";
    input (n1, vett1);
    cout<<"Riempimento vettore 2 \n";
    input (n2, vett2);
    cout<<"Il vettore V1="<<endl;
    output(n1,vett1);
    cout<<"\n";
    cout<<"Il vettore V2="<<endl;
    output(n2,vett2);
    double media= vettmedia(n1,vett1);
    cout<<"la media del vettore 1e'= "<<media<<endl;
    vett_nuovo(n1,n2,vett1,vett2,n3,vett3);
    cout<<"il vettore3 risultante e'=\n";
    output(n3,vett3);
    double media3= vettmedia3(n3,vett3);
    cout<<"la media del vettore 3e'= "<<media3<<endl;





    cout<<"\n\n";

    system("PAUSE");
    return 0;
    }
    void input(int&n,float vett[]) {


    cin>>n;
    cout<<"\n";
    cout<<"Assegna"<<n<<"elementi del vettore \n ";

    for (int i=0;i<n;i++)
    cin>>vett;

    }

    double vettmedia(int n1,float vett1[]){

    double media=0;
    for (int i=0;i<n1;i++) {
    media+=vett1;}
    media=media/n1;
    return media;
    }

    void vett_nuovo(int n1,int n2,float vett1[],float vett2[],int &n3,float vett3[]){
    double media= vettmedia(n1,vett1);
    n3=0;
    for (int i=0;i<n2;i++){
    if(vett2<media){
    vett3[n3]=vett2;
    n3++;
    }
    }
    }

    double vettmedia3(int n3,float vett3[]){

    double media3=0;
    for (int i=0;i<n3;i++) {
    media3+=vett3;}
    media3=media3/n3;
    return media3;
    }

    void output (int n, float vett[]){

    for (int i=0;i<n;i++)
    cout<<" "<<vett;
    cout<<"\n";

    }
  • Re: Si stampino quindi il vettore V3 cosi' ottenuto e le medie d

    Ora ultimo quesito se anche tu reputi che l'ultima procedura è corretta...è capire come stabile che V3 sia vuoto.
    Per inuito e in base alle discussioni precedentemente effettuate con te ho compreso che devo porre l'indice =0.
    Quindi dovrebbe essere if n3=0 allora il vettore 3 è vuoto.
    ma dove inserire questa riga?
Devi accedere o registrarti per scrivere nel forum
77 risposte