Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki, ar galėtumėte išspręsti tokį c++ uždavinį?

Ūkininkas nusprendė virve pažymėti stačiakampį plotą, kuriame sodins ankstyvasias bulves. Virvės ilgis lygus m metrų(sveikas skaičius. Kokį didžiausią plotą s galės pažymėti ūkininkas? Rezultatą pateikite sveikuoju skaičiumi (gali likti nepanaudotas virvės galas)

Kai m = 22, s = 30, kai m = 21, s = 25

Nuoroda į pranešimą
Dalintis kituose puslapiuose


#include <iostream>

using namespace std;

int main() {

int m,s;

s = (m/4)*(m/4);

cout <<s<<endl;

cin.get();
cin.get();

}

 

Paaiškinimas: kaip iš matematikos žinau ,kvadrato plotas visada yra didžiausiaus iš visų ligegretainių.

 

Nesi teisus... Taip kvadrato plotas visada didziausias, bet jau salygoje yra pavyzdys kuomet imanoma didesni staciakampi padaryt, nes krastines tik sveiki skaiciai gali but (kai m=22).

 

Programa pasirasysi pats o veiksmai butu tokie:

1. ilgi padalini is dvieju ir imi tik sveika dali, nes priesingos staciakampio krastines lygios l=m/2.

2. suki cikla iki nuo i=1 iki i=((l/2)+1) ir skaiciuoji plota s=i*(l-i). ir isrenki didziausia s.

 

praktiskai visada bus viena krastine a1=(m/2+1)/2, o kita a2=m/2-a1.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kad kvadrato plotas didžiausias, galima lengvai įsirodyti.

Tarkim, turim kvadratą, kurio kraštinė a. Tada jo plotas a².

Paverčiam kvadratą į stačiakampį, vieną kraštinę padidine dydžiu x, kitą sumažinę. x priklauso N:

(a - x)(a + x) = a² - x² < a²;

 

Pereinant prie programos, tai reikia gauti kuo artimesnį kvadratui stačiakampį. Jei virvės liekana padalinus iš 4 yra 0, tai gauname kvadratą, jei 1, numetam tą vienetą ir irgi gauname kvadratą. Jei 2 arba 3, tai kraštinių ilgiai skirtingi. Todėl:

 

int a = m / 4;     //trumpesnioji kraštinė
int b = a + (m % 4) / 2;  //ilgesnioji kraštinė. Jei liekana didesnė už 2, tai b yra didesnis už a vienetu.
int s = a * b;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jai gaudaisi Pascal sintaksėje, tai va su pascalių padarytas uždavinys:

program Bevarde12;
   var m, s, x, y, a : integer;
begin
 WriteLn('Iveskite metrus: ');     ReadLn(m);
 x := m div 4;     // Padalinam i 4 dalis
 y := m mod 4;     // gaunam liekana
 //if 1 < y
   //then a := y div y;      // Liekana dalinam i du vienodus ilgius
 a := y - 1;
 s := x * (x+a);           // skaiciuojam plota
 WriteLn('s = ', s);
 Readln;
end.

Redagavo Arvis
Nuoroda į pranešimą
Dalintis kituose puslapiuose
int main ()
{
   int p, a, max = 0;
   cin >> p; // nuskaitom perimetra
   for (int i = 1; i <= p; i++) { // viena krastine varom nuo 1 iki perimetro galo
        a = (p -  2*i) / 2; // apskaiciuojama kita krastine
            if (i * a > max)  max = i * a; // lyginam gauta plota, su pries tai buvusiu didziausiu plotu
   }
   cout << max; // isvedam rezultata
 return(0);
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 10 metų...

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...