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

Program zle konwertuje typy danych

VPS Starter Arubacloud
0 głosów
302 wizyt
pytanie zadane 31 stycznia 2018 w C i C++ przez Sic Dyskutant (8,510 p.)

Przekształcałem program, aby dodać do niego tablice po czym już nie konwertuje typów, dlaczego ?

#include <iostream>

long double pro(unsigned *num, unsigned picks);

int main()
{
	double t[5], o;
	std::cout << "Podaj 5 licz i ostatnia super liczbe:\n";
	for(int i=0; i < 5; i++)
		std::cin >> t[i];
	std::cin >> o; 
		
	for(int j=0; j < 1; j++)
	{	
		if((t[j] >= 1 && t[j] <= 47) && (o >= 1 && o <= 27))
		{	
			std::cout << "Szansa wygranej to jeden do ";
			std::cout << pro(t[j],o);	//wyliczenie wyniku
			std::cout << ".\n";
		}
		else
			std::cout << "Liczby od 1-5 musza byc mniejsze lub rowna 47, a liczba nr 6 musi byc mniejsza lub rowna 27!" << std::endl ;
	}
		std::cout << "do widzenia\n";

	return 0;
}

long double pro(unsigned * num, unsigned picks)
{
	long double r = 1.0; //kilka zmiennych lokalnych
	unsigned p;

	for(int i=0, p=picks; p>0; p--)
		r = r * num[i]/p;
	return r;
}

 

1
komentarz 31 stycznia 2018 przez Ghost Bywalec (2,930 p.)
Potrzebna ci ta pętla for w funkcji main, jak wykonuje się tylko raz?
komentarz 31 stycznia 2018 przez Secrus Nałogowiec (32,880 p.)

@Sic, gdzie masz konwersję typu? Bo patrzę po kodzie w te i we wte i nie widzę.

komentarz 31 stycznia 2018 przez Sic Dyskutant (8,510 p.)

przy wywołaniu funkcji przestała działać, oto błąd:

start_4.cpp: In function ‘int main()’:
start_4.cpp:18:27: error: cannot convert ‘double’ to ‘unsigned int*’ for argument ‘1’ to ‘long double pro(unsigned int*, unsigned int)’
    std::cout << pro(t[j],o); //wyliczenie wyniku

 

komentarz 31 stycznia 2018 przez Secrus Nałogowiec (32,880 p.)
No, jak masz funkcję działającą na całkowitych >0, a podsyłasz double...
komentarz 31 stycznia 2018 przez Sic Dyskutant (8,510 p.)

zmieniłem na unsigned:

start_4.cpp: In function ‘int main()’:
start_4.cpp:18:24: error: invalid conversion from ‘unsigned int’ to ‘unsigned int*’ [-fpermissive]
    std::cout << pro(t[j],o); //wyliczenie wyniku

 

komentarz 31 stycznia 2018 przez Secrus Nałogowiec (32,880 p.)
Pointer, a nie zmienna zwykła...
komentarz 31 stycznia 2018 przez Sic Dyskutant (8,510 p.)
a dokładniej ?
1
komentarz 31 stycznia 2018 przez Secrus Nałogowiec (32,880 p.)
W definicji funkcji zapisałeś, że będziesz do niej przesyłał wskaźnik. Tymczasem (borem lasem) wysyłasz tak zwykłego double'a

1 odpowiedź

0 głosów
odpowiedź 1 lutego 2018 przez Sic Dyskutant (8,510 p.)
Rozwiązanie zadania:

 std::cout << pro(&t[j],o);

 

Podobne pytania

0 głosów
1 odpowiedź 108 wizyt
pytanie zadane 16 marca 2019 w C i C++ przez Białozór Użytkownik (750 p.)
0 głosów
1 odpowiedź 3,722 wizyt
0 głosów
2 odpowiedzi 171 wizyt
pytanie zadane 19 listopada 2015 w C i C++ przez sajferrs Początkujący (360 p.)

92,975 zapytań

141,938 odpowiedzi

321,181 komentarzy

62,302 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...