Skocz do zawartości


Dev C++ tablice


1 odpowiedź w tym temacie

#1 PolaczeK

    Nowy na forum

  • Użytkownicy
  • 1 Postów:

Napisano sob, 24 gru 2016 - 22:41

Witam!
Mam takie zadanie:
Napisz funkcję, która co drugi element tablicy 6 elementowej zastąpi połową wartości elementu tablicy go poprzedzającego. Wyświetl tę tablicę.

To co udało mi się wymyślić wygląda tak:

#include <cstdio>
#include <math.h>

using namespace std;

int main ()
{
int wielkosc_tab=6;
int tablica [wielkosc_tab];

for(int i=0;i<wielkosc_tab;i++)
{
cout<<"Podaj wartosc "<<i+1<<" elementu tablicy: ";
cin>>tablica[i];
}
for(int i=0;i<wielkosc_tab;i++)
{
tablica[1]=tablica[0]/2;
tablica[3]=tablica[2]/2;
tablica[5]=tablica[4]/2;
}
cout<<"Wartosc elementu pierwszego wynosi: "<<tablica[0]<<endl;
cout<<"Wartosc elementu drugiego wynosi: "<<tablica[1]<<endl;
cout<<"Wartosc elementu trzeciego wynosi: "<<tablica[2]<<endl;
cout<<"Wartosc elementu czwartego wynosi: "<<tablica[3]<<endl;
cout<<"Wartosc elementu piatego wynosi: "<<tablica[4]<<endl;
cout<<"Wartosc elementu szostego wynosi: "<<tablica[5]<<endl;

cin.ignore();
getchar();
return 0;
}

Problem znajduje się w tym, że nie wiem gdzie jest błąd, który powoduje, że podczas wypisywania rozwiązania wypisuje mi tylko liczby całkowite, np. 9/2=4 a chciałbym żeby wynik był podawany jako liczby rzeczywiste.
Z góry dziękuję za odpowiedź!

#2 Kaczus

    Bywalec

  • Użytkownicy
  • 36 Postów:

Napisano wto, 27 gru 2016 - 09:58

1) jeśli chcesz mieć liczby niecałkowite, to musisz uzyć takiego typu (przybliżający zmienne rzeczywiste, aczkolwiek nie zawsze dokładnie to typy zmiennoprzecinkowe, w c++ znane jako float double, a czasmi long double) - kilka uwag o typie http://kaczus.ppa.pl...cinkowe,19.html
2) jeśli chce się uzyskać wynik operacji zmiennoprzecinkowy, to jeden z argumentów musi być takim typem, czyli nie 9/2, a 9/2.0 aczkolwiek lepiej jest doprowadzić do sytuacji, w której wykonamy mnożenie zamiast dzielenia, które ze swojej natury jest szybsze, czyli 9*0.5 w tym wypadku.