Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

help zadanie spoj KC003


Rekomendowane odpowiedzi

Opublikowano

Napisz program, który sprawdza, czy istnieje trójkąt o bokach o podanej długości.

Wejście

Na wejście programu podana zostanie pewna liczba zestawów danych. Każdy z zestawów składa się z 3 liczb rozdzielonych spacjami. Poszczególne zestawy zostaną rozdzielone znakiem nowej linii.

Wyjście

Na wyjściu ma się pojawić ciąg binarny, którego i-ty wyraz jest równy 1, jeżeli istnieje trójkąt o długościach boków podanych w i-tym wczytanym z wejścia zestawie. Poszczególne elementy tego ciągu należy rozdzielić znakiem nowej linii.

Przykład

Wejście:

 

1.2 1.2 1.2

1.5 2.5 3.5

-1.5 6.0 4.5

2 4 8

 

Wyjście:

 

1

1

0

0

to jest zadanie to mój program

 

#include<iostream>

 

using namespace std;

int main()

{

float c,e,x,y,z;

int a,b ;

a=4 ;

int w;

b=0 ;

for(b;b<a;b++)

{

cin>>z;

cin>>x;

cin>>y;

if(z+y>x && z+x>y && x+y>z)

{

w=1;

}

else

{

w=0;

}

}

 

for(b=0;b<a;b++)

{

cout<<w<<endl;

}

 

return 0;

}

 

pomóżcie gdzie mam błąd

Opublikowano

Z góry zakładasz, że będą 4 zestawy. Najlepiej użyj tutaj std::list booli do zapisywania wyników. Nie pisze jaki ma być warunek zaprzestania wczytywania danych, więc musisz sam jakoś to zrobić.

Powinieneś chyba jeszcze uwzględnić to, że długość odcinka nie może być ujemna

 

btw. to

			  if(z+y>x && z+x>y && x+y>z)				 
			  {
				   w[b]=1;   
					   }
					   else
					   {
						 w[b]=0;
						 }   
			  }

zastąp tym

w[b] = (z+y>x && z+x>y && x+y>z)

Opublikowano

Tak jak dodatnie :P

int zmienna = -5

Jeśli zmienna jest typu int to po prostu można do niej wkładac ujemne wartości. Do unsigned int tylko dodatnie.

userbar.png
Opublikowano

Daj kod, albo chociaż deklarację zmiennej lub miejsce, w której przypisujesz wartośc.

 

@EDIT

Najlepiej wrzuc to tutaj: http://codepad.org, ustaw na C++, skompiluj i daj link, to od razu zobaczę błędy i będzie prościej.

A jak chcesz wrzucac kod na forum to rób to w znacznikach kodu (taki obrazek 2 nawiasów trójkątnych w edytorze).

userbar.png
Opublikowano

Czy tylko ja widzę jego błąd ?

int a,b ;

a=4 ;

int w; // skąd wiesz, jaką ma wartość b ? to jest totalna bzdura, żeby zrobić nawet najłatwiejsze zadanie na spoju trzeba coś umieć, więc może poucz się o tablicach bo w żadnym kursie nie masz takiego zapisu

Opublikowano

b jest nadana wartość 0, tylko że poniżej, być może w tym leży problem. Co do zapisu "int w" to jest całkowicie poprawny, deklaruje tablicę o rozmiarze równym wartości zmiennej b.

userbar.png
Opublikowano

Oh God. Ale to jest błąd, że "później" jak to nazwałeś tak zrobił. Wartość b w tym momencie może być np -23123113 albo 213271389 bo nic nie przypisuje jej.

Poza tym, kompilator to łyka, ale umownie jest to najgorsza wersja tworzenia tablic.

albo deklarujesz wcześniej const int b = 3;

i tworzysz int tab;

albo alokujesz dynamicznie tablice. Więc kwojt jak i autor tematu, doczytajcie sobie

Opublikowano

Zmień tego fora na while (cin>>z && cin>>x && cin>>y). Ciny wewnątrz pętli oczywiście usuń. Powinno wtedy przejść.

 

/e No i oczywiście musisz tą tablicę zmienić na coś dynamicznego.

mjut.png
Opublikowano

double a,b,c;
while(cin>>a>>b>>c)
{
if(cin.eof())break;
if(a+b>c && b+c>a && a+c> cout << 1 << endl;
else cout << 0 << endl;
}
return 0;

 

i tyle...

Opublikowano

double a,b,c;
while(cin>>a>>b>>c)
{
if(cin.eof())break;
if(a+b>c && b+c>a && a+c> cout << 1 << endl;
else cout << 0 << endl;
}
return 0;

 

i tyle...

 

if(cin.eof())break; jest zbędne, bo i tak nigdy się nie wykona.

mjut.png
  • 2 miesiące temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...