Program sprawdza czy liczba jest trójkątna

0

Napisać program, który sprawdza, czy liczba wprowadzona przez użytkownika jest trójkątna. Program powinien zawierać funkcję bool trojk (int) oraz funkcję komunikatu informującego o istocie działania programu void komunikat (void).Program z zabezpieczeniami przed wpisaniem błędnym danych.

Napisałam program, ale niestety nie chodzi tak jak powinien. Proszę o pomoc.

#include <iostream>
#include <cstdlib>
using namespace std;
void komunikat (void);
bool trojk (int);
int main()
{
komunikat ();
cout<<endl;

int n;
do
 {
 system("cls");
 cout<<"Podaj liczbe dodatnia: ";cin>>n;
 }
while (n<0);

if (trojk (n) == true)
cout<<"Liczba trojkatna"<<endl;
else
cout<<"Liczba nie jest trojkatna."<<endl;

cout << endl; 
system("pause"); 
return 0;
}

bool trojk (int n)
{
 int i;
 i>=1;
 if((8*n)+1==i*i)
 return true;
 else
 return false;
}


void komunikat (void)
{
 cout<<"Program sprawdza czy liczba jest trojkatna."<<endl;
}
0

Twoj kod:

bool trojk (int n) {
  // wartosc i to jakies smiecie
  int i;  

  // to w zasadzie niczego nie robi        
  i >= 1; 

  // sprawdzasz, czy jakas liczba jest rowna nieokreslonemu iloczynowi i*i
  if((8*n) + 1 == i*i) { 
    return true;
  } else {
    return false;
  }
}

Nie wyczuwasz, że coś jest źle?
Tu jest dokładnie napisane jak to się robi: http://en.wikipedia.org/wiki/Triangular_number#Triangular_roots_and_tests_for_triangular_numbers

0

Wyczuwam. Ale nie mam pojęcia jak to poprawić.
Mogę liczyć na Twoją pomoc?

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