[c++] Warunek trójkąta

anilahcim
Użytkownik
Użytkownik
Posty: 209
Rejestracja: 13 lip 2012, o 14:32
Płeć: Kobieta
Lokalizacja: Pcim
Podziękował: 107 razy

[c++] Warunek trójkąta

Post autor: anilahcim »

Proszę o pomoc w napisaniu programu:

Napisz program, który wczyta z klawiatury długości trzech odcinków w postaci liczb rzeczywistych \(\displaystyle{ a, b}\) i \(\displaystyle{ c}\) i ustawia je w porządku niemalejącym, tj. zamienia je miejscami tak, by \(\displaystyle{ a \le b \le c}\). Następnie należy dokonać sprawdzenia, czy da się z nich stworzyć trójkąt. Odpowiednią informację (TAK/NIE) wypisujemy w konsoli.
Wskazówka. Warunek trójkąta: długość najdłuższego odcinka jest mniejsza niż suma długości dwóch pozostałych.
Dodatkowo, w przypadku, gdy z danych długości odcinków trójkąt da się zbudować, możesz podać na ekranie informację, czy jest to trójkąt prostokątny, tzn. czy kwadrat najdłuższego boku jest równy sumie kwadratów pozostałych.

Z góry dziękuję za pomoc!
Ostatnio zmieniony 13 paź 2012, o 10:58 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[c++] napisz program

Post autor: bartek118 »

OK, program jest prosty. Napisz w czym masz problem
anilahcim
Użytkownik
Użytkownik
Posty: 209
Rejestracja: 13 lip 2012, o 14:32
Płeć: Kobieta
Lokalizacja: Pcim
Podziękował: 107 razy

[c++] napisz program

Post autor: anilahcim »

Nigdy wcześniej nie programowałam, więc dla mnie zdecydowanie nie jest prosty. Nie wiem chociażby, jak pozamieniać miejscami a, b, c, żeby a <= b <= c. Pewnie coś z funkcją if, np. if c <= a lub b (tylko też nie wiem jak to zapisać i jak mu kazać to pozamieniać).
Na razie mam to:

Kod: Zaznacz cały

#include iostream
using namespace std;
 
int main()
{
   cout << "dlugosc odcinka a:" << endl;
	cin >> a;
cout << "dlugosc odcinka b:” << endl;
cin >> b;
cout << „długość odcinka c:” << endl;
cin >> c;



system("pause");
   return 0;
}
Ostatnio zmieniony 15 paź 2012, o 16:48 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[c++] napisz program

Post autor: royas »

A potrafisz napisać przepis jak to uporządkować normalnymi słowami. Mając do dyspozycji
Jeśli x<y to zamień x z y.
Czyli napisać kilka kroków takiej postaci pisząc zamiast x i y: a, b lub c?
Awatar użytkownika
dawid.barracuda
Użytkownik
Użytkownik
Posty: 1766
Rejestracja: 11 paź 2009, o 19:01
Płeć: Mężczyzna
Lokalizacja: Gryfice\Warszawa
Podziękował: 480 razy
Pomógł: 94 razy

[c++] napisz program

Post autor: dawid.barracuda »

Program wygląda tak:

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
        const int n = 3;
        float tab[3];
        int j = 0;

        cout << "Wprowadz dlugosci poszczegolnych bokow trojkata: " << endl;
        cin >> tab[0] >> tab[1] >> tab[2];

        do
        {
	         for(int i = 0; i < n-1; i++)
                 {
                        if(tab[i] > tab[i+1]) swap(tab[i], tab[i+1]);
                        else continue;
		} j++;
	}while(j < n);

	cout << "Trojkat ma boki: " << endl;
	for(int i = 0; i < n; i++)
	{
		cout << "Bok nr: " << i + 1 << " ma dlugosc: " << tab[i] << endl;
	}

        if(tab[2] < tab[0] + tab[1])
        {
                cout << "Z podanych odcinkow da sie zbudowac trojkat. ";
                if(tab[2]*tab[2] == tab[0]*tab[0] + tab[1]*tab[1]) cout << "Zbudowany trojkat jest prostokatny." << endl;
                else cout << "Zbudowany trojkat nie jest prostokatny." << endl;
                cout << endl;
        }
        else cout << "Z podanych bokow nie da sie zbudowac trojkata." << endl << endl;


        system("pause");
        return 0;
}
Pytaj śmiało jeśli coś niejasne.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[c++] napisz program

Post autor: royas »

Jeśli nie do końca rozumiesz ten gotowiec to możesz próbować dojść do rozwiązania. Pierwszy krok to to co napisałem poprzednio.
Awatar użytkownika
dawid.barracuda
Użytkownik
Użytkownik
Posty: 1766
Rejestracja: 11 paź 2009, o 19:01
Płeć: Mężczyzna
Lokalizacja: Gryfice\Warszawa
Podziękował: 480 razy
Pomógł: 94 razy

[c++] napisz program

Post autor: dawid.barracuda »

Zamiast a, b, c użyłem tablicy trzyelementowej rodzaju zmiennoprzecinkowego. Linijki 15-22 to nic innego jak zwykłe sortowanie bąbelkowe, które spokojnie można tu użyć, bo są tylko trzy elementy. Linijki 24-28 to wyświetlenie już posegregowanych boków trójkąta.
anilahcim
Użytkownik
Użytkownik
Posty: 209
Rejestracja: 13 lip 2012, o 14:32
Płeć: Kobieta
Lokalizacja: Pcim
Podziękował: 107 razy

[c++] Warunek trójkąta

Post autor: anilahcim »

Dziękuję bardzo za pomoc!
W końcu udało mi się zrobić trochę inaczej, z bardziej podstawowymi poleceniami (if (a>b), temp a, a=b, temp b itd...), bo nie wiedziałam do końca jak działają tablice i co to jest sortowanie bąbelkowe
Awatar użytkownika
dawid.barracuda
Użytkownik
Użytkownik
Posty: 1766
Rejestracja: 11 paź 2009, o 19:01
Płeć: Mężczyzna
Lokalizacja: Gryfice\Warszawa
Podziękował: 480 razy
Pomógł: 94 razy

[c++] Warunek trójkąta

Post autor: dawid.barracuda »

Tablice to nic innego jak szereg zmiennych tego samego typu zapisanych w jednej linijce Jak chcesz np. utworzyć 10 zmiennych typu int to nie musisz deklarować 10 razy tej zmiennej z inną nazwą tylko deklarujesz zmienną tablicową 10cioelementową. Prościej i wygodniej. Np.: tablica dziesięcioelementowa typu int to w zasadzie to samo co 10 zmiennych typu int, tylko zapisuje się to tak:

Kod: Zaznacz cały

int nazwa_tablicy[liczba_elementow]
Pamiętaj tylko, że numerowanie zaczynamy od zera. Pomaga przy zapamiętaniu tego stwierdzenie, że "programista liczy od zera".
Nazwa poszczególnej zmiennej z tych 10 to nr jej komórki. Czyli jak chcesz przykładowo przypisać wartość liczbową do pierwszej zmiennej z tej tablicy to robisz tak:

Kod: Zaznacz cały

tab[0] = wartosc
Co do sortowania to odsyłam do Wiki, jest tam super obrazowo pokazane na przykładzie na czym to polega. Nie jest to wcale trudne.
ODPOWIEDZ