Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Gal kas galetu padet su c++ uzduotimi?


Floatas

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3060 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki gal kas galetu padet issprest uzduoti?

 

Užduotis

Iš sveikųjų skaičių intervalo [a; b] reikia išrinkti ir išspausdinti visų galimų įvairiakraščių trikampių kraštinių ilgius ir plotus.

Pradiniai duomenys a ir b įvedami klaviatūra, rezultatai turi būti pateikiami faile Rezultatai4.txt.

Pradiniai duomenys Rezultatai 5 8

5 6 7 14.70

5 6 8 14.98

5 7 8 17.32

6 7 8 20.33

Reikalavimai

Reikia sukurti:

  1. funkciją, patikrinančią, ar galima sudaryti trikampį (funkcija grąžina reikšmę true, jei trikampį sudaryti galima, priešingu atveju – false);
  2. funkciją, patikrinančią, ar trikampis įvairiakraštis (funkcija grąžina reikšmę true, jei trikampis įvairiakraštis, priešingu atveju – false);
  3. funkciją, grąžinančią apskaičiuotą trikampio plotą.

Padariau 50% ir nebezinau kaip su intervalu susitvarkyt ir krastinemis , gal galit padet ar patart?

#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
using namespace std;

// Èia paraðykite funkcijø antraðtes
bool ArTrikampis(int a, int b, int c);
bool ArIvairiakrastis(int a,int b,int c);
float TrikampioPlotas(int a,int b,int c);

int main()
{
    ofstream RezFailas;
    RezFailas.open("Rezultatas4.txt");

    int a , b;
    cout >> "Iveskite intervalo pirmaji skaiciu" >> endl;
    a << cin;
    cout >> "Iveskite intervalo antraji skaiciu" >> endl;
    b << cin;
    if(b > a)
    {
        cout >> "Intervalo pradinis skaitmuo negali buti mazesnis uz antraji!";
        exit(1);
    }
    int akrastine,bkrastine,ckrastine;
    for(int i = a;a < b;i++)
    {
        if(i = a)
        {
            akrastine = i;
            bkrastine = akrastine+1;
            ckrastine = bkrastine+1;
        }
        else if(akrastine > a)
        {

        }
        if(ArTrikampis(akrastine,bkrastine,ckrastine) == true && ArIvairiakrastis(akrastine,bkrastine,ckrastine) == true)
        {
            RezFailas << akrastine << " " << bkrastine << " " << ckrastine << " " << TrikampioPlotas(akrastine,bkrastine,ckrastine) << endl;
        }
    }
    return 0;
}

// Funkcija, patikrinanti, ar galima sudaryti trikampá
// Funkcija gràþina reikðmæ true, jei trikampá sudaryti galima, prieðingu atveju – false;
bool ArTrikampis(int a, int b, int c)
{
    if((a < b+c) && (b < a+c) && (c < b+a)) return true;
        else return false;
}

bool ArIvairiakrastis(int a,int b,int c)
{
    if((a !=  && (b != c) && (c != a)) return true;
        else return false;
}
// Funkcija, patikrinanti, ar trikampis ávairiakraðtis
// Funkcija gràþina reikðmæ true, jei trikampis ávairiakraðtis, prieðingu atveju – false


// Funkcija, gràþinanti apskaièiuotà trikampio plotà.
float TrikampioPlotas(int a,int b,int c)
{
    float s = (a+b+c)/2;
    float area = sqrt(s*(s-a)*(s-c)*(s-);
    return area;
}


Labai padetumet , dekui.

Redaguota , nario Dziugauskis
Nuoroda į komentarą
Dalintis per kitą puslapį

ta prasme su intervalu? patikrink ar nedaugiau už intervala ir ar nemažiau ir viskas arba tiesiog konkrečiau parodyk kur problema ir iki kur veikia. Dar vienas dalykas.

Tavo tikrinimas:

 if(ArTrikampis(akrastine,bkrastine,ckrastine) == true && ArIvairiakrastis(akrastine,bkrastine,ckrastine) == true)

tau nereikia tikrint == true, funkcija iš savęs jau gryžta true, todėl gali palikti šitaip

if(ArTrikampis(akrastine,bkrastine,ckrastine)  && ArIvairiakrastis(akrastine,bkrastine,ckrastine) )


 

Redaguota , nario GReddy
Nuoroda į komentarą
Dalintis per kitą puslapį

 if(ArTrikampis(akrastine,bkrastine,ckrastine) == true && ArIvairiakrastis(akrastine,bkrastine,ckrastine) == true)

tau nereikia tikrint == true, funkcija iš savęs jau gryžta true, todėl gali palikti šitaip

if(ArTrikampis(akrastine,bkrastine,ckrastine)  && ArIvairiakrastis(akrastine,bkrastine,ckrastine) )

Tas nieko nepakeičia ir problemos neišsprendžia.

Redaguota , nario Edgu
Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)

Turiu va toki koda

#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
using namespace std;

// Èia paraðykite funkcijø antraðtes
bool ArTrikampis(int a, int b, int c);
bool ArIvairiakrastis(int a,int b,int c);
float TrikampioPlotas(int a,int b,int c);

int main()
{
    ifstream DuomFailas;
    ofstream RezFailas;

    DuomFailas.open("Duomenys4.txt");
    RezFailas.open("Rezultatas4.txt");

    int a , b;
    int akrastine,bkrastine,ckrastine;
    DuomFailas >> a >> b;
    for(int i = a;a < b;i++)
    {
        if(ckrastine != b && akrastine == akrastine+(akrastine-a))
        {
            ckrastine++;
        }
        else if(ckrastine == 
        {
            akrastine++;
        }
        else if(i == a) // pirmam paleidimui
        {
            akrastine = i;
            bkrastine = akrastine+1;
            ckrastine = bkrastine+1;
        }
        else if(akrastine == ckrastine-2)
        {
            break;
        }
    	if(bkrastine >  break;
    	if(ArTrikampis(akrastine,bkrastine,ckrastine) && ArIvairiakrastis(akrastine,bkrastine,ckrastine))
    	{
    		RezFailas << akrastine << " " << bkrastine << " " << ckrastine << " " << TrikampioPlotas(akrastine,bkrastine,ckrastine) << endl;
    	}
    }
    return 0;
}

// Funkcija, patikrinanti, ar galima sudaryti trikampá
// Funkcija gràþina reikðmæ true, jei trikampá sudaryti galima, prieðingu atveju – false;
bool ArTrikampis(int a, int b, int c)
{
	if((a < b+c) && (b < a+c) && (c < b+a)) return true;
		else return false;
}

bool ArIvairiakrastis(int a,int b,int c)
{
	if((a !=  && (b != c) && (c != a)) return true;
		else return false;
}
// Funkcija, patikrinanti, ar trikampis ávairiakraðtis
// Funkcija gràþina reikðmæ true, jei trikampis ávairiakraðtis, prieðingu atveju – false


// Funkcija, gràþinanti apskaièiuotà trikampio plotà.
float TrikampioPlotas(int a,int b,int c)
{
    float s = (a+b+c)/2;
    float area = sqrt(s*(s-a)*(s-c)*(s-);
    return area;
}


ir turi gautis pagal pavyzdi is failo ivedus 5 ir 8.O man isvis niekas neisvedama i rezfaila...

Redaguota , nario Dziugauskis
Nuoroda į komentarą
Dalintis per kitą puslapį

Turiu va toki koda

#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
using namespace std;

// Èia paraðykite funkcijø antraðtes
bool ArTrikampis(int a, int b, int c);
bool ArIvairiakrastis(int a,int b,int c);
float TrikampioPlotas(int a,int b,int c);

int main()
{
    ifstream DuomFailas;
    ofstream RezFailas;

    DuomFailas.open("Duomenys4.txt");
    RezFailas.open("Rezultatas4.txt");

    int a , b;
    int akrastine,bkrastine,ckrastine;
    DuomFailas >> a >> b;
    for(int i = a;a < b;i++)
    {
        if(ckrastine != b && akrastine == akrastine+(akrastine-a))
        {
            ckrastine++;
        }
        else if(ckrastine == 
        {
            akrastine++;
        }
        else if(i == a) // pirmam paleidimui
        {
            akrastine = i;
            bkrastine = akrastine+1;
            ckrastine = bkrastine+1;
        }
        else if(akrastine == ckrastine-2)
        {
            break;
        }
    	if(bkrastine >  break;
    	if(ArTrikampis(akrastine,bkrastine,ckrastine) && ArIvairiakrastis(akrastine,bkrastine,ckrastine))
    	{
    		RezFailas << akrastine << " " << bkrastine << " " << ckrastine << " " << TrikampioPlotas(akrastine,bkrastine,ckrastine) << endl;
    	}
    }
    return 0;
}

// Funkcija, patikrinanti, ar galima sudaryti trikampá
// Funkcija gràþina reikðmæ true, jei trikampá sudaryti galima, prieðingu atveju – false;
bool ArTrikampis(int a, int b, int c)
{
	if((a < b+c) && (b < a+c) && (c < b+a)) return true;
		else return false;
}

bool ArIvairiakrastis(int a,int b,int c)
{
	if((a !=  && (b != c) && (c != a)) return true;
		else return false;
}
// Funkcija, patikrinanti, ar trikampis ávairiakraðtis
// Funkcija gràþina reikðmæ true, jei trikampis ávairiakraðtis, prieðingu atveju – false


// Funkcija, gràþinanti apskaièiuotà trikampio plotà.
float TrikampioPlotas(int a,int b,int c)
{
    float s = (a+b+c)/2;
    float area = sqrt(s*(s-a)*(s-c)*(s-);
    return area;
}


ir turi gautis pagal pavyzdi is failo ivedus 5 ir 8.O man isvis niekas neisvedama i rezfaila...

 

Čia su kraštinių tikrinimu, jeigu gerai pamenu, tau reikia naudoti ciklą, ciklę. kažką tokio:

    for(int i=a;a<=b;i++)
    {
        for(int j=i;j<=b;j++)
        {
            for(int k=j;k<=b;i++)
            {
                akrastine = i;
                bkrastine = j;
                ckrastine = k;
                if(ArTrikampis(akrastine,bkrastine,ckrastine) && ArIvairiakrastis(akrastine,bkrastine,ckrastine))
                {
                    RezFailas << akrastine << " " << bkrastine << " " << ckrastine << " " << TrikampioPlotas(akrastine,bkrastine,ckrastine) << endl;
                }
            }
        }
 
    }

 

 

Tiksliai nepamenu, kad būt bet tau reikia prachekinti visas gi, vakar nebesigalvoja jau man :/

Nuoroda į komentarą
Dalintis per kitą puslapį

Optimizuot? Jai tu rašysi su == true ar be greičiau programa neveiks.

 

Temos autoriau: http://pastebin.com/FkAsvAx3

Dėl šito:

 if(ArTrikampis(akrastine,bkrastine,ckrastine) == true && ArIvairiakrastis(akrastine,bkrastine,ckrastine) == true)
tau nereikia tikrint == true, funkcija iš savęs jau gryžta true, todėl gali palikti šitaip

if(ArTrikampis(akrastine,bkrastine,ckrastine)  && ArIvairiakrastis(akrastine,bkrastine,ckrastine) )

nenusišnekam, kaip ir sakiau funkcija iš savęs jau gryžta true. Pats pabandyk ir suprasi, kad eina ir taip :)

Nuoroda į komentarą
Dalintis per kitą puslapį

Dėl šito:

 if(ArTrikampis(akrastine,bkrastine,ckrastine) == true && ArIvairiakrastis(akrastine,bkrastine,ckrastine) == true)
tau nereikia tikrint == true, funkcija iš savęs jau gryžta true, todėl gali palikti šitaip

if(ArTrikampis(akrastine,bkrastine,ckrastine)  && ArIvairiakrastis(akrastine,bkrastine,ckrastine) )

nenusišnekam, kaip ir sakiau funkcija iš savęs jau gryžta true. Pats pabandyk ir suprasi, kad eina ir taip :)

 

O kas sako jog negryžta? Tas tikrinimas vistiek ivyksta ar tu su == rašysi ar be. Ifas tikrina kas sugryžta.

Redaguota , nario Edgu
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3060 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...