• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego program nie liczy potęgi liczby 2 z liczb ujemnych

VPS Starter Arubacloud
0 głosów
580 wizyt
pytanie zadane 30 grudnia 2017 w C i C++ przez Albert Holly Nowicjusz (140 p.)
edycja 30 grudnia 2017 przez Arkadiusz Waluk
#include <iostream>

using namespace std;

float potegowanie(float n)
{
     float potega=1;

     if(n<0)
     {
        n==n*(-1);

    for(int i=n+1; i>1; i--)
    {
      potega*=2;

    }
     return (1 / (potega-1));
     }
     else
     {
         for(int i=n+1; i>1; i--)
    {
      potega*=2;

    }
     }
    return potega;
}
int main()
{
    float n, m;

    cout <<"Podaj wykladni potegi "<<endl;
    cin>>n;
    cout<<"Wynik wynosi: "<<potegowanie(n)<<endl;
    m==1/32;
    cout<<m<<endl;

    return 0;
}
komentarz 30 grudnia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)

Pamiętaj proszę na przyszłość, że kod na forum wstawiamy w przeznaczony do tego bloczek.

2 odpowiedzi

0 głosów
odpowiedź 30 grudnia 2017 przez marcin99b Szeryf (81,480 p.)

Po podstawowym dodaniu normalnych wcięć i znalezieniu błędu w składni 

float potegowanie(float n)
{
  float potega = 1;

  if(n < 0)
  {
    n==n*(-1); //Co to ma robić? dlaczego dwa == a nie jedno?
    for(int i = n + 1; i > 1; i--)
    {
    	potega *= 2;
    }
    return (1 / (potega-1));
  }
  else
  {
    for(int i=n+1; i>1; i--)
    {
    	potega *= 2;
    }
  }
  return potega;
}

+na końcu kodu masz ten sam błąd, jeśli w c++ jest taki operator to ok, nie pisałem w c++ dużo, jednak w innych językach służy on jedynie do porównywania zmiennych

+nie myślałem dużo i nie kombinowałem czy to ma prawo działać, po prostu dodałem wcięcia bo było strasznie nieczytelne i usunąłem według mnie niezbyt ważną część bo wyświetlanie i biblioteki 

po drodze wpadł mi w oko taki szczegół 

komentarz 30 grudnia 2017 przez Albert Holly Nowicjusz (140 p.)
Tamto n==n*(-1) miało zamienić lizcbę na dodatnią żeby for wykonał się poprawnie
komentarz 30 grudnia 2017 przez marcin99b Szeryf (81,480 p.)
a czy w c++ jest taki operator jak == i co on robi, bo to mnie ciekawi

w innych językach służy on jedynie do sprawdzenia czy zmienne są równe, np w if albo tworząc typ bool
0 głosów
odpowiedź 30 grudnia 2017 przez niezalogowany
#include <iostream>

float potegowanie(int n)
{
	float potega = 1;

	if (n < 0)
	{
		for (int i = -n; i > 0; i--)
		{
			potega /= 2;
		}
	}
	else
	{
		for (int i = n; i > 0; i--)
		{
			potega *= 2;
		}
	}
	return potega;
}

int main()
{
	int n;
	std::cout << "Podaj wykladni potegi \n";
	std::cin >> n;
	std::cout << "Wynik wynosi: " << potegowanie(n) << "\n";
	std::cout << 1.f / 32.f << "\n"; // 1 to int, 1.f to float, dzielenie intow daloby 0
}

Nie ma sensu wysyłać funkcji float skoro i tak nie poda dobrego wyniki dla np wykładnika 3,4. Operator == służy do porównywania zmiennych, a nie przypisania wartości.

Podobne pytania

0 głosów
1 odpowiedź 2,251 wizyt
0 głosów
1 odpowiedź 2,029 wizyt
pytanie zadane 28 listopada 2016 w C i C++ przez unbearable Początkujący (450 p.)
0 głosów
1 odpowiedź 424 wizyt
pytanie zadane 29 października 2016 w C i C++ przez thekibi27 Bywalec (2,110 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...