[C++] Problem z modulo (chyba)

lukasz_xyz
Użytkownik
Użytkownik
Posty: 62
Rejestracja: 10 paź 2017, o 18:48
Płeć: Mężczyzna
Podziękował: 22 razy

[C++] Problem z modulo (chyba)

Post autor: lukasz_xyz »

Mam zadanie którego treść brzmi następująco:
Znalezc wszystkie 2-cyfrowe liczby, które dziela sie przez sume ich cyfr.

Od razu przedstawię mój kod to będzie widać gdzie jest problem.
Ukryta treść:    
Stworzyłem tablicę dynamiczną, która przechowuje same liczby dwucyfrowe. Z tego co mi intuicja podpowiada to rozdzielenie tych liczb można zrobić bardzo prosto przy użyciu modulo jednakże nie wiem jak to uczynić.

Czyli: nie potrafię znaleźć spośród tych liczb dwucyfrowych takich, które dzielą się przez sumę ich cyfr.

#edit

Zrobiłem coś takiego i chyba działa ale brzydko... Może ktoś z jakąś sugestią?
Ukryta treść:    
Ostatnio zmieniony 7 maja 2018, o 22:44 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Ponury123
Użytkownik
Użytkownik
Posty: 128
Rejestracja: 5 lip 2015, o 14:48
Płeć: Mężczyzna
Lokalizacja: nie wiem
Podziękował: 11 razy
Pomógł: 24 razy

[C++] Problem z modulo (chyba)

Post autor: Ponury123 »

Kod: Zaznacz cały

https://stackoverflow.com/questions/4261589/how-do-i-split-an-int-into-its-digits

Kod: Zaznacz cały

int number = 12345;

int digit = number % 10; // digit = 5
number = number / 10; // number = 1234
czyli

Kod: Zaznacz cały

int number = 12;

int first = number % 10; // digit = 2
int second = number / 10; // number = 1
zrób to dla każdego elementu, potem

Kod: Zaznacz cały

if ((second + first) % number == 0) {
    //wow you did it
}
-- 7 maja 2018, o 20:23 --Wyprzedziłeś mnie :p, takie rozwiązanie jak dla mnie jest spoko, nie znam się na c++ więc nie powiem Ci czy nie ma lepszego sposobu, albo wbudowanej funkcji - poszukaj, jak nie znajdziesz to zostawisz to swoje
lukasz_xyz
Użytkownik
Użytkownik
Posty: 62
Rejestracja: 10 paź 2017, o 18:48
Płeć: Mężczyzna
Podziękował: 22 razy

[C++] Problem z modulo (chyba)

Post autor: lukasz_xyz »

Mógłbyś zerknąć na kod, który wstawiłem pewnie podczas gdy odpowiadałeś i powiedzieć czy to jest to samo co napisałeś i co można tam ewentualnie poprawić?

Pytałem gdzieś kogoś to powiedziano mi nawet, że można to ładnie zrobić bez tablic i w ogóle. Chciałbym żeby to zostało napisane jak najkrócej. Poczekam może ktoś kto się tym zajmuje napisze coś mądrego .
Dzięki za chęci tak swoją drogą.
Ponury123
Użytkownik
Użytkownik
Posty: 128
Rejestracja: 5 lip 2015, o 14:48
Płeć: Mężczyzna
Lokalizacja: nie wiem
Podziękował: 11 razy
Pomógł: 24 razy

[C++] Problem z modulo (chyba)

Post autor: Ponury123 »

Jeśli, chcesz to uprosić to po co robić dwie tablice, lecisz w pętli od 10 do 99 i od razu sprawdzasz warunek, jeśli true to wrzuć sobie do tablicy, vektora czy co tam lubisz
lukasz_xyz
Użytkownik
Użytkownik
Posty: 62
Rejestracja: 10 paź 2017, o 18:48
Płeć: Mężczyzna
Podziękował: 22 razy

[C++] Problem z modulo (chyba)

Post autor: lukasz_xyz »

Zaraz spróbuję to zrobić tak jak napisałeś ale o wektorze pierwszy raz słyszę a uczę się prawie rok programowania.

Wydaje mi się, że o to chodziło, tak? Jest okej?
Ukryta treść:    
Ponury123
Użytkownik
Użytkownik
Posty: 128
Rejestracja: 5 lip 2015, o 14:48
Płeć: Mężczyzna
Lokalizacja: nie wiem
Podziękował: 11 razy
Pomógł: 24 razy

[C++] Problem z modulo (chyba)

Post autor: Ponury123 »

Jest ok, ale można ładniej

Kod: Zaznacz cały

#include < iostream >

using namespace std;

private bool isValid(int first, int second, int number) {
  return number % (first + second) == 0;
}

int main() {
    vector < int > list;
    for (int i = 10; i <= 99; i++) {
     int first = i % 10;
     int second = i / 10;
      if (isValid(first, second, i) {
          list.push_back(i);
        }
      }

      // WRITE
      for (int i = 0; i < list.size(); i++) {
        cout << list[i] << endl;
      }

      system("pause");
      return 0;
}
-- 7 maja 2018, o 20:51 --

PS. zawsze można "ładniej"(u mnie np. formatowanie kodu jest brzydkie) , to Twoje jest całkiem w porządku.
lukasz_xyz
Użytkownik
Użytkownik
Posty: 62
Rejestracja: 10 paź 2017, o 18:48
Płeć: Mężczyzna
Podziękował: 22 razy

[C++] Problem z modulo (chyba)

Post autor: lukasz_xyz »

Nie będę robił na wektorach bo nikt nigdy nam tego nie pokazywał i potem będzie, że używam czegoś czego nie rozumiem nawet ;P
athame
Użytkownik
Użytkownik
Posty: 576
Rejestracja: 2 lut 2012, o 21:42
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 1 raz
Pomógł: 64 razy

[C++] Problem z modulo (chyba)

Post autor: athame »

Powyższy kod sypie mi licznymi błędami (kompilator g++).

Najprościej jest chyba bez tablic, z wypisywaniem wyników na miejscu:

Kod: Zaznacz cały

#include <iostream>
using namespace std;
int main() {
  for (int i = 10; i <= 99; i++) {
    int first = i % 10;
    int second = i / 10;
    if (i % (first+second) == 0)
      cout << i << endl;
  }
  return 0;
}
lukasz_xyz
Użytkownik
Użytkownik
Posty: 62
Rejestracja: 10 paź 2017, o 18:48
Płeć: Mężczyzna
Podziękował: 22 razy

[C++] Problem z modulo (chyba)

Post autor: lukasz_xyz »

Robiłem powyższy program w Visual Studio najnowszej wersji i wszystko śmiga. Twoja opcja jest mega i naprawdę intuicyjna ale tak to jest jak się coś wymyśli i brnie w tym do końca jak koń z klapkami na oczach.

Ostateczna wersja u mnie wygląda tak gdyby ktoś kiedyś odkopał ten temat i byłby przydatny:
Ukryta treść:    
ODPOWIEDZ