Program sprawdzający, czy z kolejnych długości można zbudować trójkąt

0

Witam, mam problem z takim zadaniem: wprowadzam ze standardowego wejscia 10 liczb calkowitych dodatnich mniejszych od 10. Liczby te okreslaja dlugosci bokow trojkata, program ma sprawdzac czy z kolejncych trzech dlugosci podanych w tablicy mozna zbudowac trojkat, wypisz indeksy oraz dlugosci bokow tworzacych trojkaty. Program konczy dzialanie wypisaniem kominukatu z wynikami.

#include <iostream>

using namespace std;

int main()
{

    int t[10];
    int liczba; 
 
for (int i=0; i<10; i++) 
    {
        cin>>liczba;
        t[i]=liczba;

    }	
for (int i=0; i<8; i++){

	if(t[i]+t[i+1]>t[i+2])
	{
		cout<<"Mozesz utworzyc trojakt dla pierwiszej trojki!";
	}
}
	
	
} 

Tak zaczalem pisac kod....

0

taki, ze nie wiem jak ma przechodzic program po np t[0]+t[1]>t[2] do t[1]+t[2]>t[3]...

0

A i nie rozumiem tez czemu nawet jak wpisze po kolei 1,9,1,2,3...cos tam, to pokazuje ze z pierwszej trojki moge utworzyc trojkat.

0

Przecież masz pętlę for, która właśnie to robi.

Inna sprawa, że oprócz sprawdzenia t[0] + t[1] > t[2] wypadałoby jeszcze sprawdzić t[1] + t[2] > t[0] oraz t[0] + t[2] > t[1]

0

No bo 1+9>1, sam taki warunek napisałeś.

0
 #include <iostream>

using namespace std;

int main()
{

int t[10];
    int liczba; 
cout<<"A: "; 
cout<<endl;
for (int i=0; i<10; i++) 
    {
        cin>>liczba;
        t[i]=liczba;

    }	
   
for (int i=0; i<8; i++){

	if(t[i]+t[i+1]>t[i+2] || t[i]+t[i+2]<t[i+1] || t[i+2]+t[i+1]>t[i])
	{
		cout<<"Mozesz utworzyc trojakt dla:"<< i+1 <<"trojki!"<<endl;
		return 0;
	
	}
	else
	{
		cout<< "Nie mozesz utworzyc trojkata!";
	}

}

	
	
} 

Teraz mam dobre warunki?

0
twonek napisał(a):

Przecież masz pętlę for, która właśnie to robi.

Inna sprawa, że oprócz sprawdzenia t[0] + t[1] > t[2] wypadałoby jeszcze sprawdzić t[1] + t[2] > t[0] oraz t[0] + t[2] > t[1]

Nie kumam, dla 4,2,1 nie zbuduje trojkata, mimo ze
t[0] + t[1] > t[2]....

0

Przecież ten sam test jak poprzednio od razu da Ci odpowiedź, że nie. Pomijając błąd typu znak mniejszości zamiast większości w drugim warunku, to logiczne OR || raczej nie spełni zadania tutaj. Wszystkie 3 warunki muszą być spełnione, żeby się dało zbudować trójkąt.

0
 #include <iostream>

using namespace std;

int main()
{

int t[10];
int liczba; 
cout<<"A: "; 
cout<<endl;
for (int i=0; i<10; i++) 
    {
        cin>>liczba;
        t[i]=liczba;

    }	
   
for (int i=0; i<8; i++){

	if(t[i]+t[i+1]>t[i+2] && t[i]+t[i+2]>t[i+1] && t[i+2]+t[i+1]>t[i])
	{
		cout<<"Mozesz utworzyc trojakt dla:"<< i+1 <<"trojki!"<<endl;
		return 0;
	
	}
	else
	{
		cout<< "Nie mozesz utworzyc trojkata dla:" <<  i+1  << "trojki!"<<endl;
		return 0;
	}

}

	
	
} 

Ok, teraz mam taki kod

0

Czy musze dodac int ile=0 i na koncu i++, zeby zadzialalo dla kazdej trojki, czy jak to zrobic?

0

Co to znaczy zeby zadzialalo dla kazdej trojki?
Poza tym w zadaniu masz jedynie wypisać indeksy oraz wartości pod tymi indeksami, nie ma tam nic o liczbie trójkątów, jakie można utworzyć.

0

Chodzi mi o to, ze cokolwiek nie wpisze pokazuje tylko informacje moge/nie moge dla pierwszych trzech liczb (t[0], t[1], t[2]), a dla np trojki ostatniej, czy trojki t[1], t[2], t[3].

0

Bo masz wszędzie te return 0, które kończą działanie programu.
Poza tym popraw wcięcia: http://format.krzaq.cc/

0

Oto moj koncowy kod zrodlowe, prosze uprzejmie o sprawdzenie. :)

#include <iostream>

using namespace std;

int main() {
	int ile=0;
	int t[10];
	int liczba;
	cout<<"A: ";
	cout<<endl;
	for (int i=0; i<10; i++) {
		cin>>liczba;
		t[i]=liczba;

	}

	for (int i=0; i<8; i++) {

		if(t[i]+t[i+1]>t[i+2] && t[i]+t[i+2]>t[i+1] && t[i+2]+t[i+1]>t[i]) {
			cout<<"Mozesz utworzyc trojakt dla:"<< i+1 <<"trojki!"<<endl;
			cout<<"Indeksy: "<<i<<i+1<<i+2<<endl;
			cout<<"Wartosci: "<<t[i]<<t[i+1]<<t[i+2]<<endl;


		} else {
			cout<< "Nie mozesz utworzyc trojkata dla:" <<  i+1  << "trojki!"<<endl;

		}


		ile++;
	}
} 

1 użytkowników online, w tym zalogowanych: 0, gości: 1