Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Liczby wesołe

Ostatnio zmodyfikowano 2014-06-16 10:59
Autor Wiadomość
kekhet
Temat założony przez niniejszego użytkownika
Liczby wesołe
» 2014-06-15 18:13:15
Witam. Piszę program sprawdzający czy wprowadzona liczba jest wesoła, niestety robię gdzieś błąd i nie mam pojęcia gdzie. Uprzedzam, że jestem mocno początkujący.
Liczba wesoła jest liczbą naturalną zdefiniowaną w następujący sposób: Obliczamy sumę kwadratów cyfr składających się na liczbę. Powtarzamy tę operację dla kolejnych wyników tak długo, aż uzyskamy liczbę 1 lub wyniki zaczną się powtarzać. Jeżeli w wyniku procesu otrzymaliśmy 1, pierwotna liczba jest liczbą wesołą. W przeciwnym przypadku jest liczbą niewesołą.

#include <iostream>
#include <cstdio>
#include <string>
#include <iomanip>
#include <ctime>
#include <cstdlib>
#include <conio.h>
#include <fstream>
 
using namespace std;
int main()
{
    int n,a,b;
    cout<<"Podaj liczbe: "<<endl;
    cin>>n;
   
   do
   {
      a=(n/10)%10;
  cout<<a<<endl;
      b=n%10;
  cout<<b<<endl;
      n=a*a+b*b;
  cout<<n<<endl;}
 
  while(n==4||n==1);
  
    if(n==1)
  cout<<"1- TAK";
  else
  cout<<"2- NIE";

getch();
    return 0;
}

Wiem że jest dużo niepotrzebnych bibliotek ale kopiowałem z innego projektu. Mógł by ktoś napisać co jest nie tak i jak to poprawić? Z góry dzięki.
P-112125
michal11
» 2014-06-15 19:35:33
Liczba naturalna może mieć więcej niż 2 cyfry.
Wstaw kod w znaczniki.
P-112128
kekhet
Temat założony przez niniejszego użytkownika
Opis
» 2014-06-15 19:57:57
Wybacz ale niezbyt wiem jak to poprawić. :/ Mógł byś nieco dokładniej to opisać? Trochę to przerobiłem, ale dalej największym problemem jest to, że jeśli już na początku n nie równa się 4 lub 1, to algorytm który to przerabia działa tylko raz zamiast doprowadzać do wyniku.

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

using namespace std;
int main()
{
    int n,a,b;
    cout<<"Podaj liczbe: "<<endl;
    cin>>n;
   
   if(n==4||n==1)
  {if(n==1)
  cout<<"1- TAK";
  if(n==4)
  cout<<"2- NIE";
  getch();
  return 0;}  
 
  do
  {   a=(n/10)%10;
  cout<<a<<endl;
      b=n%10;
  cout<<b<<endl;
      n=a*a+b*b;
  cout<<n;}
  while(n!=4||n!=1);

 
 
    getch();
    return 0;
}
P-112130
pekfos
» 2014-06-16 10:59:46
std::to_string() i działaj na tekście? Z liczbami ci nie idzie najwyraźniej..
P-112153
« 1 »
  Strona 1 z 1