Somma e Prodotto Vettore

di il
9 risposte

Somma e Prodotto Vettore

[Risolto]

Salve ragazzi, da qualche giorno ho iniziato a programmare in C e nel risolvere il seguente esercizio mi sono accorto che immesso il vettore i risultati che ottengo sono del tutto sballati.
Forse quello che sbaglio è il non saper definire la somma è il prodotto in questo caso; chiedo il vostro aiuto .. Questa è la traccia

/*Sia assegnato in ingresso, da tastiera, un vettore di reali v. Si scriva un programma che calcoli la somma som degli elementi di posto pari ed il prodotto prod degli elementi di posto dispari del vettore v.
Si stampino quindi il vettore v ed i valori di somma e prodotto.
Il programma deve essere articolato in funzioni (ad esempio: input, autput, somprod)

Suggerimento: la funzione somprod riceve in ingresso v e restituisce come parametri di uscita som e prod.*/

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

/*sottoprogrammi*/
void input (float v[], int &n);
void som_prod (float v[], int &n, float &som, float &prod);
void output (float som, float prod);

/*assegnazione delle variabili*/
int main ()
{
    float v[100], som, prod;
    int n;
    input (v, n);
    som_prod (v, n, som, prod);
    output (som, prod);
    
    system("pause");
    return 0;
    }
    
/*richiamo sottoprogrammi*/
void input (float v[], int &n)
{
     cout<<"scrivi la cardinalita del vettore\n";
     cin>>n;
     cout<<"inserisci i valori del vettore\n";
     int i;
     for (i=0; i<n; i++){
         cin>>v[i];}
         }
         
void som_prod (float v[], int &n, float &som, float &prod)
{
     int i;
     prod=1;
     som=0;
     for (i=0; i<n; i++) {
                    if(i%2==0){
                                  som=som+v[i];
                                  }
                                  else
                                  prod=prod*v[i];
                                  }}
          
void output(float som ,float prod){
     cout<<som;
     cout<<"\n"<<prod;} 

9 Risposte

  • Re: Somma e Prodotto Vettore

    Prima di tutto utilizza il formato CODE per inserire il codice nel tuo post.
    Non puoi passare come parametro di una funzione un array intero, devi passargli il puntatore ad esso.
  • Re: Somma e Prodotto Vettore

    Fatto! =) Sono nuovo del forum e mi è sfuggito questo passaggio!
  • Re: Somma e Prodotto Vettore

    Sono riuscito a risolvere ma con i numeri interi
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    /*sottoprogrammi*/
    void input (int v[], int &n);
    void som_prod (int v[], int &n, int &som, int &prod);
    void output (int som, int prod);
    
    /*assegnazione delle variabili*/
    int main ()
    {
        int v[100], som, prod;
        int n;
        input (v, n);
        som_prod (v, n, som, prod);
        output (som, prod);
    
        system("pause");
        return 0;
        }
    
    /*richiamo sottoprogrammi*/
    void input (int v[], int &n)
    {
         cout<<"scrivi la cardinalita del vettore\n";
         cin>>n;
         cout<<"inserisci i valori del vettore\n";
         int i;
         for (i=0; i<n; i++){
             cin>>v[i];
             }
             }
    
    void som_prod (int v[], int &n, int &som, int &prod)
    {
         int i;
         prod=1;
         som=0;
         for (i=0; i<n; i++) {
         if(v[i]%2 == 0)
            som=som+v[i];
         else
            prod=prod*v[i];
         }
    }
    
    
    void output(int som ,int prod){
         cout << endl << "Somma Pari:" << som << endl;
         cout << "Prodotto Dispari:" << prod << endl;
    }
  • Re: Somma e Prodotto Vettore

    Grazie mille per la disponibilità
  • Re: Somma e Prodotto Vettore

    Pensandoci meglio... Questo algoritmo può essere fatto solo con i numeri interi, perchè non puoi stabilire se un numero decimale sia pari o dispari!

    Se vuoi potrei fare un programma che somma tutti i numeri che hanno come parte decimale un numero pari e moltiplicare tutti quelli che hanno come parte decimale un numero dispari.

    Dimmi tu!
  • Re: Somma e Prodotto Vettore

    No va bene così non preoccuparti, diciamo che l' esempio ci è stato posto dal Prof ed io mi sono limitato a scrivere così la traccia, ma forse nell' esempio stesso penso voleva farci notare cio che hai detto.

    Adesso ho risolto un' altra esercitazione che dice:
    Siano dati in ingresso, da file o da tastiera, il riempimento n ed i valori di due vettori V1 e V2 di interi.
    Sia dato inoltre un ulteriore intero k.
    Si scriva un programma che verifichi, per ogni coppia di elementi omologhi di V1 e V2, se la loro somma sia maggiore di k. In caso affermativo, si copi il valore della loro somma in un nuovo vettore V3. Infine si ordini e stampi il vettore V3 cosi' ottenuto.
    Si strutturi il programma in opportuni sottoprogrammi.
    Esempio:
    INPUT: n = 6 V1 = 7 15 19 12 2 6 V2 = 2 9 7 25 8 6 k = 11
    OUTPUT: V3 = 12 24 26 37


    Poiche genero un V3 non ordinato ho provato ad inserire una funzione bubble_sort ma non mi ordina un bel niente xD guarda (con la codifica del bubble ho preso spunto dal libro forse non è giusto quello che ho scritto):
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    void input(int v1[],int v2[],int &n,int &k);
    void confronta(int v1[],int v2[],int n,int v3[],int k,int &j);
    void bubble_sort(int v1[],int n);
    void output(int v3[],int j);
    int main()
    {
        int v1[100],v2[100],v3[100],n,k,j;
        
        input(v1,v2,n,k);
        confronta(v1,v2,n,v3,k,j);
        bubble_sort(v1, n);
        output(v3,j);
        
        
        
        
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    void input(int v1[],int v2[],int &n,int &k){
         int i;
         cout<<"dammi n\n";
         cin>>n;
         cout<<"dammi v1\n";
         for(i=0;i<n;i++){
                          cin>>v1[i];
                          }
         cout<<"dammi v2\n";
         for(i=0;i<n;i++){
                          cin>>v2[i];
                          }
         cout<<"dammi k\n";
         cin>>k;
         }
    void confronta(int v1[],int v2[],int n,int v3[],int k,int &j){
         int i;
         int somma;
         j=0;
         somma=0;
         for(i=0;i<n;i++){
                          somma=(v1[i]+v2[i]);
                          if(somma>k){
                                      v3[j]=somma;
                                      j++;}}}
                                     
    void bubble_sort(int v1[],int n){
         int i,j;
         bool scambiato;
         i=0;
         scambiato=true;
         while(i<n-1&&scambiato){
                                  scambiato=false;
                                  for(j=n-1;j>i;j--){
                                                      if(v1[j]<v1[j-1]){
                                                                       swap(v1[j],v1[j-1]);
                                                                       scambiato=true;
                                                                       }}
                                                                       i++;
                                                                       }}
    void output(int v3[],int j){
         int i;
         for(i=0;i<j;i++)
         cout<<v3[i]<<"\t";
         }
  • Re: Somma e Prodotto Vettore

    Credo che lo vuoi in questo modo:
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    void input(int v1[],int v2[],int &n,int &k);
    void confronta(int v1[],int v2[],int n,int v3[],int k,int &j);
    void bubble_sort(int* v3,const int n);
    void output(int v3[],int j);
    int main()
    {
        int v1[100],v2[100],v3[100],n,k,j;
    
        input(v1,v2,n,k);
        confronta(v1,v2,n,v3,k,j);
        bubble_sort(v3, n);
        output(v3,j);
    
    
    
    
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    void input(int v1[],int v2[],int &n,int &k){
         int i;
         cout<<"dammi n\n";
         cin>>n;
         cout<<"dammi v1\n";
         for(i=0;i<n;i++){
                          cin>>v1[i];
                          }
         cout<<"dammi v2\n";
         for(i=0;i<n;i++){
                          cin>>v2[i];
                          }
         cout<<"dammi k\n";
         cin>>k;
         }
    void confronta(int v1[],int v2[],int n,int v3[],int k,int &j){
         int i;
         int somma;
         j=0;
         somma=0;
         for(i=0;i<n;i++){
                          somma=(v1[i]+v2[i]);
                          if(somma>k){
                                      v3[j]=somma;
                                      j++;}}}
    
    void bubble_sort(int *v3,const int n){
         int i,j,t;
         bool scambiato;
         for(i=0; i<n; i++) {
             for(j=0; j<n-1; j++) {
         if(v3[j]>v3[j+1]) {
         t=v3[j];
         v3[j] = v3[j+1];
         v3[j+1]=t;
         }
         }
         }
    }
    void output(int v3[],int j){
         int i;
         for(i=0;i<j;i++)
         cout<<v3[i]<<"\t";
         }
    
  • Re: Somma e Prodotto Vettore

    Grazie mille sei un grande
  • Re: Somma e Prodotto Vettore

    Di niente Se tutto apposto metti [Risolto] all'inzio del post.
    Grazie.
Devi accedere o registrarti per scrivere nel forum
9 risposte