Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

Ilość miejsc po przecinku i liczba PI w C++. Kompilacja makefile.win


Rekomendowane odpowiedzi

Uczę się C++ i pisałem teraz program który pyta się i ilosc miejsc po przecinku i zaokrągla liczbę pi. Mam problem z jego kompilacją bo otwiera się plik makefile.win i podświetla linijke:

$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

Kod jest taki: 

#include <iostream>
#include <iomanip>
#include <conio.h>
#include <math.h>

using namespace std;

int main()
{
	float przecinek;
	
	cout << "Program pokazuje wartosc liczby pi" << endl;
	cout << "Dokladnosc miejsc po przecinku (1-10)" << endl;
	cin >> przecinek;
	if (przecinek = 1)
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		
	if (przecinek = 2)
		cout << "pi = " << fixed << setprecision(2) << M_PI << endl;
		
	if (przecinek = 3)
		cout << "pi = " << fixed << setprecision(3) << M_PI << endl;
	
	if (przecinek = 4)
		cout << "pi = " << fixed << setprecision(4) << M_PI << endl;
		
	if (przecinek = 5)
		cout << "pi = " << fixed << setprecision(5) << M_PI << endl;
		
	if (przecinek = 6)
		cout << "pi = " << fixed << setprecision(6) << M_PI << endl;
	
	if (przecinek = 7)
		cout << "pi = " << fixed << setprecision(7) << M_PI << endl;
	
	if (przecinek = 8)
		cout << "pi = " << fixed << setprecision(8) << M_PI << endl;
		
	if (przecinek = 9)
		cout << "pi = " << fixed << setprecision(9) << M_PI << endl;
		
	if (przecinek = 10)
		cout << "pi = " << fixed << setprecision(10) << M_PI << endl;
		
	return 0;
	
	
}

Z góry dzięki za pomoc ☺️

Odnośnik do komentarza
Udostępnij na innych stronach

Znak równości, to znak przypisania, nie porównania. I tutaj lepszym rozwiązaniem jest switch/case niż if/else

Dodatkowo. Dlaczego zmienną 'przecinek' jest typu float? Skoro przyjmujesz tylko wartości typu int?

Odnośnik do komentarza
Udostępnij na innych stronach

Godzinę temu, El Profesor napisał:

Znak równości, to znak przypisania, nie porównania. I tutaj lepszym rozwiązaniem jest switch/case niż if/else

Dodatkowo. Dlaczego zmienną 'przecinek' jest typu float? Skoro przyjmujesz tylko wartości typu int?

Użyłem switch/case i zmieniłem na float. Nadal wyskakuje ten sam błąd. Może to być problem z kompilatorem?

#include <iostream>
#include <iomanip>
#include <conio.h>
#include <math.h>

using namespace std;

int main()
{
	int przecinek;
	
	cout << "Program pokazuje wartosc liczby pi" << endl;
	cout << "Dokladnosc miejsc po przecinku (1-10)" << endl;
	cin >> przecinek;
	switch (przecinek)
	{
	case 1:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	case 2:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	case 3:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	case 4:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	case 5:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	case 6:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	case 7:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	case 8:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	case 9:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	case 10:
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		break;
	}
		
	return 0;
	
	
}


 

Odnośnik do komentarza
Udostępnij na innych stronach

To jest cała treść błędu co dostajesz?

Wrzuiłem powyższy kod do kompilatora online. Wystarczy wywalić tą linijkę:

#include <conio.h>

Ale dlaczego, to Ci nie powiem.

Odnośnik do komentarza
Udostępnij na innych stronach

Otwiera się plik makefile i wyskakuje to:

image.thumb.png.62a8379b46e855800c1e1a43fa9d5c1c.png

Odnośnik do komentarza
Udostępnij na innych stronach

Spróbuj utworzyć nowy plik - czasem mi to pomagało.

Taki kod:
 

Spoiler

#include <iostream>
#include <iomanip>
#include <math.h>

using namespace std;

int main()
{
	float przecinek;
	
	cout << "Program pokazuje wartosc liczby pi" << endl;
	cout << "Dokladnosc miejsc po przecinku (1-10)" << endl;
	cin >> przecinek;
	if (przecinek = 1)
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		
	if (przecinek = 2)
		cout << "pi = " << fixed << setprecision(2) << M_PI << endl;
		
	if (przecinek = 3)
		cout << "pi = " << fixed << setprecision(3) << M_PI << endl;
	
	if (przecinek = 4)
		cout << "pi = " << fixed << setprecision(4) << M_PI << endl;
		
	if (przecinek = 5)
		cout << "pi = " << fixed << setprecision(5) << M_PI << endl;
		
	if (przecinek = 6)
		cout << "pi = " << fixed << setprecision(6) << M_PI << endl;
	
	if (przecinek = 7)
		cout << "pi = " << fixed << setprecision(7) << M_PI << endl;
	
	if (przecinek = 8)
		cout << "pi = " << fixed << setprecision(8) << M_PI << endl;
		
	if (przecinek = 9)
		cout << "pi = " << fixed << setprecision(9) << M_PI << endl;
		
	if (przecinek = 10)
		cout << "pi = " << fixed << setprecision(10) << M_PI << endl;
		
	return 0;
	
	
}

 

Sprawdziłem za pomocą: C++ Shell i działa ☺️

Odnośnik do komentarza
Udostępnij na innych stronach

Spoiler

 

3 minuty temu, Mativve napisał:

Spróbuj utworzyć nowy plik - czasem mi to pomagało.

Taki kod:
 

  Ukryj zawartość



#include <iostream>
#include <iomanip>
#include <math.h>

using namespace std;

int main()
{
	float przecinek;
	
	cout << "Program pokazuje wartosc liczby pi" << endl;
	cout << "Dokladnosc miejsc po przecinku (1-10)" << endl;
	cin >> przecinek;
	if (przecinek = 1)
		cout << "pi = " << fixed << setprecision(1) << M_PI << endl;
		
	if (przecinek = 2)
		cout << "pi = " << fixed << setprecision(2) << M_PI << endl;
		
	if (przecinek = 3)
		cout << "pi = " << fixed << setprecision(3) << M_PI << endl;
	
	if (przecinek = 4)
		cout << "pi = " << fixed << setprecision(4) << M_PI << endl;
		
	if (przecinek = 5)
		cout << "pi = " << fixed << setprecision(5) << M_PI << endl;
		
	if (przecinek = 6)
		cout << "pi = " << fixed << setprecision(6) << M_PI << endl;
	
	if (przecinek = 7)
		cout << "pi = " << fixed << setprecision(7) << M_PI << endl;
	
	if (przecinek = 8)
		cout << "pi = " << fixed << setprecision(8) << M_PI << endl;
		
	if (przecinek = 9)
		cout << "pi = " << fixed << setprecision(9) << M_PI << endl;
		
	if (przecinek = 10)
		cout << "pi = " << fixed << setprecision(10) << M_PI << endl;
		
	return 0;
	
	
}

 

 

Sprawdziłem za pomocą: C++ Shell i działa ☺️

 

 

Działa z przypisaniem, nie porównaniem?

@FRACKOWIAK tak jak pisałem wyżej. Spróbuj usunąć bibliotekę conio.h

Odnośnik do komentarza
Udostępnij na innych stronach

@Mativve @El Profesor 

u mnie nie działa ani z przypisaniem ani z porównaniem.. kod Mativve też mi nie działa, zmieniłem = na == i też nie działa więc wina leży chyba po stronie kompilatora

Dobra, na cpp.sh działa więc kod jest poprawny, dzięki za pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

A jakikolwiek inny program, nawet pusty tylko z main(), działa? 

Odnośnik do komentarza
Udostępnij na innych stronach

15 godzin temu, El Profesor napisał:

A jakikolwiek inny program, nawet pusty tylko z main(), działa? 

sprawdziłem, nie działa żaden program

Odnośnik do komentarza
Udostępnij na innych stronach

No to problem masz ze środowiskiem.

Odnośnik do komentarza
Udostępnij na innych stronach

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...