•  

    #cpp #programista #cplusplus #pomocy

    Potrzebuję pomocy. Mam dane zadanie i o ile nie mam problemu z tablicami to wplecenie w to funkcji w taki sposób jaki mam zadany sprawia mi kłopot.

    Wczytać dane do tablic a[N] [N] i b[N] [N], gdzie N to dowolna stała. W tablicy a obliczyć za pomocą funkcji sumę elementów podzielnych przez 5 w 3 pierwszych kolumnach, zaś w tablicy b obliczyć sumę elementów podzielnych przez 2 w 4 pierwszych kolumnach. Wydrukować różnicę między tymi sumami.

    Wiem, że funkcja ma zawierać 3 dane wejściowe ('która tablica, ile kolumn do zliczenia, przez jaką liczbę podzielne liczby), ale nie wiem jak to zrobić.

    •  

      int zliczkolumny(int tablica[n][n], int ilekolumn, int dzielnik)
      {
      int suma{};
      for (int i = 0; i < n; i++)
      {
      for (int i2 = 0; i2 < ile_kolumn; i2++)
      {

      if (tablica[i][i2] % dzielnik == 0)
      suma+=tablica[i][i2];
      }

      }
      return suma;


      }

      +: rtoz
    •  

      @Czarny_muflon: Dzieki za odpowiedz :)

      stworzylem cos takiego i mi to zle zlicza:
      using namespace std;
      int c,d,roznica;
      const int n=3;
      int a[n][n];
      int b[n][n];
      int zliczkolumny(int tablica[n][n], int ile_kolumn, int dzielnik)
      {
      int suma;

      {
      for (int i = 0; i < n; i++)
      {
      for (int j = 0; j < ile_kolumn; j++)
      if (tablica[i][j] % dzielnik == 0)
      suma=suma+tablica[i][j];

      }

      }
      return suma;
      }

      int main()
      {

      for (int i = 0; i < n; i++)
      {
      for (int j = 0; j < n; j++)
      {
      cout<<"podaj liczbe do tablicy a"<<endl;
      cin>>c;
      cout<<"podaj liczbe do tablicy b"<<endl;
      cin>>d;
      a[i][j]=c;
      b[i][j]=d;
      }
      }
      roznica=zliczkolumny(a, 3, 5)-zliczkolumny(b, 3, 2);
      cout<<"roznica to: "<<roznica;

      }
      any help?

    •  

      @rtoz:

      Powinno być "int suma{};", a nie "int suma;" - wtedy będzie działać. Jeśli tak wpiszesz to zmienna zostanie zainicjalizowana właściwym zerem (np. dla double byłoby to 0.0). (Bez inicjalizacji, przy zmiennych lokalnych, nie ma pewności jaka wartość znajdzie się tam na początku). Dodatkowo {} niepozwala na niejawne konwersje mogące spowodować, potencjalnie, utratę części wartości zmiennej np. z double na int.

      +: rtoz
    •  

      @Czarny_muflon: nie zmienia to nic, usunąłem to jak chcialem zmieimniac jakieś właśnie takie niuanse żeby zadziałało.

    •  

      @rtoz:

      Inicjalizację za pomocą {} wprowadzono w c++11
      Niektóre kompilatory.(a na pewno g++) wymagają dodatkowego infa przy kompilacji, że chcesz z niego korzystać. Dopisanie takiej komendy, albo zamiana na int suma = 0 powinno rozwiązać sprawę.

      +: rtoz
    •  

      @Czarny_muflon: za Twoją radą wstawie uzupełnie to z powrotem. mam nadzieję, że zadziała. :) dzieki

    •  

      @Czarny_muflon: Faktycznie miałeś rację, działa. :) byłem przekonany i w zasadzie teraz jestem aż zmieszany, bo probowalem z {} jak i bez... chyba wczoraj nie był mój dzień po prostu :) w każdym razie po prostu dzięki :)