Sveiki,
neparašau programos, esu tikras paprastam, uždaviniui C++ kalba. Uždavinys yra iš knygos "Šiuolaikinis žvilgsnis į programavimo pagrindus C++" ir yra skyriuje, prieš kurį buvo tik sveikųjų skaičių dalybos ir sąlyginių (if) sakinių skyriai, todėl programą reikia parašyti be ciklų ir panašiai. Bet kokia pagalba būtų naudinga!
Geležinkelio stotys A, B ir C yra n-ajame, m-ajame ir p-ajame geležinkelio ruožo kilometruose. Parašykite
programą, kuri surastų, tarp kurių stočių atstumas yra mažiausias. Stotys nebūtinai įvardytos abėcėlės tvarka,
pavyzdžiui, po stoties A gali sekti stotis C.
Pasitikrinkite. Kai n = 3, m = 8, p = 15, turi būti spausdinama:
Atstumas mažiausias tarp A ir B stočių.
Kai n = 3, m = 9, p = 15, turi būti spausdinama:
Atstumai mažiausi tarp A ir B bei B ir C stočių.
Kai n = 3, m = 15, p = 9, turi būti spausdinama:
Atstumai mažiausi tarp A ir C bei B ir C stočių.
Ačiū.
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char** argv) {
int n,m,p,d1,d2,d3;
cout << "Iveskite atstuma tarp stociu"<<endl;
cin >> n >> m >> p;
d1=abs(m-n),d2=abs(p-m),d3=abs(p-n);
int min=d1, i=1,j=1;
if(d2<min)
{
min=d2;
i=2,j=2;
}
else if (d2==min) j=2;
if(d3<min)
{
min=d3;
i=3,j=3;
}
else if (d3==min) j=3;
if (i==j)
{
if (i==1) cout << "Atstumas maziausias tarp A ir B stociu" << endl;
if (i==2) cout << "Atstumas maziausias tarp B ir C stociu" << endl;
if (i==3) cout << "Atstumas maziausias tarp A ir C stociu" << endl;
}
else
{
if ((i==1)&&(j==2)) cout << "Atstumas maziausias tarp A ir B bei B ir C stociu" << endl;
if ((i==1)&&(j==3)) cout << "Atstumas maziausias tarp A ir B bei A ir C stociu" << endl;
if ((i==2)&&(j==3)) cout << "Atstumas maziausias tarp A ir C bei B ir C stociu" << endl;
}
return 0;
}
Pasinagrinėk kodą, jei ko nesuprasi, pamėginsiu paaiškinti.
Tomai,
ačiū už pagalbą!
Kodas aiškus, tik noriu pasiteirauti kodėl eilutėje "int main (int argc, char** argv)" įrašei skliausteliuose esančius kintamuosius, o ne palikai ().
Pats buvau pasirašęs panašiu principu, tik tavo kodas gal kiek paprastesnis atrodo:
// Darbas23
#include <fcntl.h>
#include <io.h>
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main ()
{
int n = 3; // Stoties A kilometras.
int m = 15; // B.
int p = 9; // C.
int AB = abs(m - n);
int AC = abs(p - n);
int BC = abs(p - m);
if (AB < AC && AB < BC)
wcout << "Mažiausias atstumas tarp A ir B stočių.";
else if (AC < AB && AC < BC)
{
wcout << "Mažiausias atstumas tarp A ir C stočių.";
}
else if (BC < AB && BC < AC)
{
wcout << "Mažiausias atstumas tarp B ir C stočių.";
}
else if (AB == AC && AB == BC && AC == BC)
{
wcout << "Atstumai tarp visų stočių vienodi.";
}
else if (AB == AC)
{
wcout << "Mažiausias atstumas tarp A ir B bei A ir C stočių.";
}
else if (AB == BC)
{
wcout << "Mažiausias atstumas tarp A ir B bei B ir C stočių.";
}
else if (AC == BC)
{
wcout << "Mažiausias atstumas tarp A ir C bei B ir C stočių.";
}
return 0;
}
Tai gerai, kad viskas aišku. Tie skliausteliai gali būti ir tušti, tiesiog man jau tokia main funkcija yra sukuriama kai atsidarau naują programą.
Tomai,
gal dar gali užvesti ant kelio kokia programa reikalinga parašyti uždaviniui:

Na matematiškai aš tiesiog nustatyčiau tiesių lygtis, nustatyčiau intervalus, kuriuose funkcijos grafikas yra viena ar kita tiesė, o tada su if sakiniais nurodyčiau programai kurios tiesės lygtį imt, jog paskaičiuoti norimą reikšmę.