Problem z programem C++

0

Mam napisać program do zadania o treści::napisz i wywołaj funkcję,która dla podanych w parametrach:wpłaty oraz oprocentowania oblicz i wyświetla po jakim czasie kwota będzie co najmniej podwojona i ile dokładnie wynosi.
Napisałem program ale nie działa i nie wiem dla czego?


```#include <iostream>
 #include <locale.h>
 #include <stdio.h>
 
 using namespace std;
 
 void pieniadze();
 
 int main()
 {
 	pieniadze();
 	system("PAUSE");
return 0;
 	
 }
 
 void pieniadze()
 {
 setlocale(LC_ALL,"");
 
 int w,p,o;
 int c=0;
 cout<<"Podaj wpłatę :";
 cin>>w;
 cout<<"Potwierć wpłatę :";
 cin>>p;
 cout<<"Podaj oprocentowanie :";
 cin>>o;
 
 if (w==p)
 {
 
 
 while(w>=(2*p))
 {
 	c++;
 	
 	w=w+(w*0.01*o);
 	
 	cout<<"Po czasie : "<<c;
 	cout<<"Kwota wynosi :"<<w;
 	
 }

 }
  
  else
  {
  	cout<<"Pomyliłeś się";
  }
 	
 	
 }

0

Program kompiluje się ,ale działanie w pętli nie jest wykonywane. Nie wyświetla się żaden napis podany w pętli a program po wprowadzeniu zmiennej o wyłącza się.

0

Co Robiłeś, żeby rozwiązać problem i co ile jest naliczane oprocentowanie?

0

Pierwszy warunek: if (w==p) - wejdź do środka instrukcji warunkowej, jeśli w jest równe p.
Drugi warunek: while(w>=(2*p)) - wykonuj pętlę, póki w jest większe od 2*p.

Nie dostrzegasz tutaj pewnej sprzeczności?
W jaki sposób pierwszy jak i drugi warunek mają być jednocześnie prawdziwe (dla w, p != 0)?

0

bo warunek w while masz zły!
Potrzebujesz zaprzeczenie

Radzę nauczyć się korzystać z debuggera (podstawy ci wystarczą). Jest to proste jak konstrukcja cepa, a dużo ci ułatwi.

0

W treści zadania nie ma sprecyzowane czy oprocentowanie nalicza się co miesiąc czy kwartalnie . Spróbowałem użyć pętli do..while Wtedy napisy są wyświetlane .Komenda c++; działa poprawnie ale komenda w=w+(w0.01o); nie . Wyświetla się napis "Kwota wynosi :" ale za miast podać obliczone "w" np 24 to podaje "w" prowadzone przez użytkownika.

0
pair<int,int> calculate( int money , int rate , int period )
{
   int money_init {money};
   int counts {0};
   
   while( money<2*money_init )
   {
       money += ceil(money*rate*0.01); 
       ++counts;
   }
    
   return make_pair(money,period*counts);
}
0

Tak prosto to nie będzie, potrzeba wzór na procent składany.

0

Usunąłem komendę if (w==p)i else if oraz zmieniłem instrukcję pętli na while(w<=(2*p)) ale pętla działa w nieskończoność

0

bo podałeś dane dla których w*0.01*o daje wartość mniejszą od jeden.
A ponieważ używasz zmiennych o typach całkowitych następuje odcięcie części ułamkowej.

0

Dzięki program już działa ale mam jeszcze tylko jedno pytanie jak sprawić aby program zaczął obliczać dopiero wtedy gdy wartości wprowadzone w i p są sobie równe?

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