Program nie zwraca wyniku w funkcjach

0

Witam, oto kod programu:

#include <iostream>
#include <conio.h>
#include <cmath>

using namespace std;

int x;
float n;
int i;
int a[10];

void wprowadz_dane()
{
    int i;
    cout<<"Program znajdujacy liczbe o maksymalnej sumie cyfr.\n";
    cout<<"***************************************************\n\n\n";
    cout<<"Podaj ilosc elementow\n";
    cin>>n;
    cout<<"Podaj elementy\n";
    for (i=0; i<n; i++)
        cin>>a[i];
}

float max_sc()
{
    float max=0;
    for (i=0; i<n; i++)
    {
        x=a[i];
        int s=0;
        while (x)
        {
            s=s+x%10;
            x=x%10;
        }
            if (s>max) max=s;
    }
    return max;
}

int wypisz_wynik()
{
    cout<<max_sc();
}

int main ()
{
    wprowadz_dane();
    cout<<"Liczba o maksymalnej sumie cyfr: ";    
    cout<<wypisz_wynik();
    getch();
    return 0;
}

Nie wiem gdzie jest błąd, ale program nie zwraca wyniku. Int w "wypisz_wynik()" wstawiony na sile, tak jak w kilku innych miejscach, gdyż miałem mnóstwo błędów związanych z nieprawidłowymi typami, mam nadzieję, że kompilator miał rację.

0
s+x=%10;
x/=10;
0

Ok, teraz zwraca wynik, tyle, że jest on dużo razy większy od podanych liczb.

0
#include <iostream>

using namespace std;

int max_sc(const int T[], const int n)
{
  int max=0;
  int wynik=0;
  for (int i=0; i<n; i++)
  {
    int x=T[i];
    int s=0;
    while (x)
    {
      s+=(x%10);
      x/=10;
    }
    if (s>max)
    {
      max=s;
      wynik=i;
    }
  }
  return T[wynik];
}

int main ()
{
  cout<<"Program znajdujacy liczbe o maksymalnej sumie cyfr.\n";
  cout<<"***************************************************\n\n\n";
  cout<<"Podaj ilosc elementow\n";

  int n;
  cin>>n;
  int T[n];
  cout<<"Podaj elementy\n";
  for (int i=0; i<n; ++i)
    cin>>T[i];

  cout<<"Liczba o maksymalnej sumie cyfr: "<<max_sc(T, n);
  return 0;
}

  1. Po co Ci tyle funkcji? funccja do wczytywania, funkcja do liczenia wyniku, FUNCKJA DO WYPISYWANIA WYNIKU... litości.
  2. Po co Ci zmienne globalne?
  3. Po co Ci jakies głupie includy?
  4. Po co Ci zmienna float w ktorej chcesz trzymac sume cyfr?
    WYdaje mi sie, ze glownym problemem było jednak to, ze w zmiennej max trzymałes maksymalną sume cyfr, poźniej to wypisywałes, natomiast Ty chcesz znalezc liczbe, ktora ma maksymalną ilość cyfr.
0

@zonkoo22, jak już skracasz to zrób to na maksa.

#include <iostream>
using namespace std;

int main ()
  {
   cout<<"Podaj ilosc elementow: ";
   unsigned n,val,max=0;
   cin>>n;
   cout<<"Podaj elementy"<<endl;
   for(unsigned i=0;i<n;++i)
     {
      unsigned v,s=0;
      cin>>v;
      for(unsigned t=v;t;t/=10) s+=t%10;
      if(max<s) { max=s; val=v; }
     }
   cout<<"Liczba o maksymalnej sumie ("<<max<<") cyfr: "<<val<<endl;
   return 0;
  }
0

Może faktycznie dało się to zoptymalizować i nie używać tylu niepotrzebnych funkcji, ale to zagadnienie miałem wprowadzone na podstawach programowania, i od razu miałem napisać program przy jej użyciu, więc mogłem się pogubić po drodze. Zmienne globalne mieliśmy zrobić w ten sposób, żeby nie deklarować w kilku różnych funkcjach i przykładowe zadania miały właśnie kilka różnych funkcji, może po to, żeby lepiej zrozumieć to zagadnienie, nie wiem, nie wnikam. W każdym razie dziękuję za pomoc.

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