eMatematikas Prisijunk Forumas Egzaminų užduotys ONLINE testai

Reikia išspręst uždavinį. Rasti 40, kurie dalijasi iš kiekvieno savo skaitmens


Sveiki, yra toks uzdvinys,kad reikia i ekrana atspausdinti 40 skaiciu kurie dalijasi is kiekvieno savo skaitmens. Gal zinot kas negerai pas mane?

#include <iostream>

using namespace std;

int main()
{
    int a=0, c,d,dalinasi, i=0;
    while(i!=40)
    {
    d=a;
    while(a!=0)
    {
        c=a%10;
        if(c!=0 && d%c==0)
        {
            dalinasi=true;
        }
        else
        {
        break;
        }
        a=a/10;
    }
    if(dalinasi)
    {
        cout << i++ << " " << d <<endl;
        d++;
    }
}
    return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int a, c,d=0,dalinasi, i=1;
    while(i<=40)
    {
    a=d;
    dalinasi=false;
    while(a!=0)
    {
        c=a%10;
        if(c!=0 && d%c==0)
        {
            dalinasi=true;
        }
        else
        {
        dalinasi=false;
        break;
        }
        a=a/10;
    }
    if(dalinasi)
    {
        cout << i++ << ": " << d <<endl;
    }
    d++;
}
    return 0;
}


Pakeičiau i pradinę reikšmę į 1 kad gražiau, o gal tiksliau prasmingiau atrodytų, šiaip tai neturėjo įtakos kodui :)

pakeista prieš 7 m

Ačiū

Jei teisingai supratau, tu prašai atspausdinti visus skaičius nuo 1 iki 40, kurie dalinasi iš kiekvieno savo skaitmens?
Štai, kiek supaprastinau tavo variantą. Turėtų veikti.
#include <iostream>

using namespace std;

int main() {
  int VSkaicius = 40;
  int a, b;

  for (int i = 1; i <= VSkaicius; i++) {
    if (i < 10) { // Jei skaičius mažesnis nei 10, jis automatiškai dalinasi iš savęs.
      cout << i << ": dalinasi" << endl;
    } else {
      b = i / 10; // Gauna pirmąjį skaičiaus skaitmenį.
      a = i % 10; // Gauna antrąjį skaičiaus skaitmenį.

      if (a == 0) { // Jei antrojo skaitmens reikšmė yra 0, skaičius nesidalina.
        cout << i << ": nesidalina" << endl;
      } else if ((i % b == 0) && (i % a == 0)) { // Jei skaičių padalinus iš pirmojo skaitmens
                                                // ir antrojo skaitmens liekana lygi 0 - skaičius dalinasi.
        cout << i << ": dalinasi" << endl;
      } else {
        cout << i << ": nesidalina" << endl;
      }
    }
  }
}


Arba, jeigu tu nori, jog tau atspausdintų 40 skaičių, kurie dalinasi iš kiekvieno savo skaitmens, štai:
#include "stdafx.h"
#include <iostream>

using namespace std;

int main() {
  int VSkaicius = 40,
      d = 1,
      i = 1;
  int a, b, c;

  while (d != 40) {
    if (i < 10) { // Jei skaičius mažesnis nei 10, jis automatiškai dalinasi iš savęs.
      cout << i << ": dalinasi" << endl;
    } else if (i < 100) {
      b = i / 10; // Gauna pirmąjį skaičiaus skaitmenį.
      a = i % 10; // Gauna antrąjį skaičiaus skaitmenį.

      if (a == 0) { // Jei antrojo skaitmens reikšmė yra 0, skaičius nesidalina.
        cout << i << ": nesidalina" << endl;
      } else if ((i % b == 0) && (i % a == 0)) { // Jei skaičių padalinus iš pirmojo skaitmens
                                            // ir antrojo skaitmens liekana lygi 0 - skaičius dalinasi.
        cout << i << ": dalinasi" << endl;
        d++;
      } else {
        cout << i << ": nesidalina" << endl;
      }
    } else {
      b = i / 100; // Gauna pirmąjį skaičiaus skaitmenį.
      a = i % 100;
      c = a;
      a /= 10; // Gauna antrąjį skaičiaus skaitmenį.
      c %= 10; // Gauna trečiąjį skaičiaus skaitmenį.

      if (a == 0 || c == 0) {
        cout << i << ": nesidalina" << endl;
      } else if ((i % b == 0) && (i % a == 0) && (i % c == 0)) {
        cout << i << ": dalinasi" << endl;
        d++;
      } else {
        cout << i << ": nesidalina" << endl;
      }
    }
    i++;
  }
}

pakeista prieš 7 m

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »