Problem z wywołaniem funkcji

0

Jak zwykle wywołanie funkcji sprawia mi najwiecej trudnosci

mam taki prototyp i definicje i jakie będzie wywoalanie

#include <cstdlib>
#include <iostream>
#include <string.h>
int Suma(int tab[], int suma, int i);
int Parzyste(int tab[]);
int Dod_uj(int tab[]); 

int Suma(int tab[], int suma, int i){
    
    for (i=0;i<3;i++){
        suma=0;
        suma=suma+tab[i];
        
        }
   
    return suma;
    }


using namespace std;

int main(int argc, char *argv[])
{
  int i, cos, sd;
   int tab[3]={};
   cout<<"Podaj elementy tablicy"<<endl;
   for(i=0;i<3;i++){
  scanf("%d", &tab[i]);
       
}
printf("Suma elemntowa tablicy wynosi:%d",Suma(i,cos,sd));


    
     system("PAUSE");
    return EXIT_SUCCESS;
}



0

Pytasz o samo wywołanie, czy mam cię uświadomić ze twoja funkcja wcale nie liczy sumy, a zwroci jedynie wartość 3 elementu tablicy? Mam dobry humor więc to poprawię

#include <iostream>
using namespace std;

int Suma(int* tab, int n);
int Parzyste(int* tab, int n);
int Dod_uj(int* tab, int n);

int main(int argc, char *argv[])
{
  const int n = 3;

  int tab[n]={};
  cout<<"Podaj "<<n<<" elementy tablicy"<<endl;
  for (int i=0;i<n;i++)
    cin>>tab[i]; //zdecyduj się czy korzystasz z stdio czy iostream...
  cout<<"Suma wynosi "<<Suma(tab,n);
  return EXIT_SUCCESS;
}

int Suma(int* tab,int n)
{
  int suma=0;
  for (int i=0;i<n;i++)
    suma+=tab[i];
  return suma;
}

Adnotacje:

  1. Zdecyduj sie czy używasz cin/cout czy printf/scanf, bo mieszanie nic dobrego nie przyniesie ;]
  2. Nie dołączaj starych i zbędnych nagłówków
  3. Nie rozumiem po co przekazujesz do funkcji jako argumenty zmienne których wartość cię nie interesuje. Od tego są zmienne lokalne funkcji...
  4. Przerobiłem to na wersję w której możesz zmieniając stałą n ustalić rozmiar tablicy...
0

Zrob taka funkcje:

int suma(int *tab) {
     int i, suma;
     for(i = 0, suma = 0; i < 3; i++, suma += tab[i]);
     return suma;
}

wywolanie

suma(tab);

Dlatego taka, poniewaz nie musisz zmiennych i oraz suma przesylac mozesz je zadeklarowac w ciele funkcji lub przeslac sam adres, poniewaz tak jak Ty robisz i tak te zmienne nie ulegna zmianie, a tylko tworzysz ich nie potrzebne "kopie";
Ale poniewaz chcesz zwracac sume dlatego wybralem deklaracje wewnatrz funkcji.

// kurcze napisalem posta, a tu Shalom mnie uprzedzil :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1