obliczanie silni obiektowo

0

Witam, zaczynam pisać obiektowo i na sam początek postanowiłem że napiszę program który będzie obliczał silnię :) Kod:

#include <iostream>
#include <cstdio>
using namespace std;

class silnia{
public:
	int n;
	int mnoze(int n){
		for(int i=1, x; i<=n; i++){
			x=x*i;
		}
		return x;  
	}
};

int main() {
	silnia liczba;
	cout << "podaj liczbe: ";
	cin >> liczba.n;
	cout << liczba.n << "!=" << liczba.mnoze(liczba.n);
	cin.ignore();
	getchar();
	return 0;
}

wyskakuje mi błąd: "name lookup of 'x' changed for ISO 'for' scoping [-fpermissive]"
i tak przy okazji jakie polecacie robić odstępy? robiłem 2 spacje ale ostatnio usłyszałem że powinno się robić z 4 więc takie teraz zrobiłem. :)
Z góry dzięki :)

0

A 2+2 policzyć obiektowo nie próbowałeś?

0

Po co na siłę wpychasz obiektowość tam, gdzie być jej nie powinno?

0

@Patryk27, @_13th_Dragon, trochę przesadzacie, bo zarówno 2+2 można liczyć obiektowo (vide Ruby, Scala) jak i silnię. Kwestia prawidłowego podejścia do problemu zastosowania obiektów w takim przypadku.

@tomcio1243, pomysł jest niezbyt teges tak w ogóle, ale... Jeżeli już chcesz zrobić to w obiektowy sposób to możesz np. stworzyć sobie klasę Liczba, która będzie miała metody takie jak silnia, potęga, ln, log. Inne podejście, też do zaakceptowania na poziomie nauki to stworzenie klasy czysto wirtualnej (interfejsu) Operacja, po której będą dziedziczyć operacje takie jak dodawanie, silnia, log.

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