eMatematikas Prisijunk Forumas Matematikos testai Pradžia

Programavimas. Klausimai del užduočių, kurių nesuprantu C++.


33 eilute

for (int i=0; i < t; i++)

IKI t, o ne n.

Sveiki, kreipiuos ir vėl.
3
5 5 0
0 5 5
5 0 5

Pirmoj eil. duota eilučių skaičius, kitose I, U, R reikšmės atskirtos tarpais. Jei toje vietoje 0, vadinas reikšmė nežinoma ir ją reikia rasti.
I=U/R
Parengti programą, kuri išspausdintų visų didžių reikšmes.
Tikrai nesunkus, net kvailai jaučiuos, kai nesugebu jo padaryt.Bet neišeina.
Parašiau viena ciklą for(int i=1; i<=n;i++)
ir paskui    for(int j=1;j<=n;j++) ir tada bandžiau su if'ais, jei pvz I=0, tai jo ieško ir pan. Ar kiekvianąm po atskirą ciklą rašyt reikėjo?
:(

for(int i = 1; i <= n; i++)
    {
        fd >> I >> U >> R;

        if(I == 0)
            fr << (U / R) << " " << U << " " << R << "\n";
        else if(U == 0)
            fr << I << " " << (I * R) << " " << R << "\n";
        else
            fr << I << " " << U << " " << (U / I) << "\n";
    }

Ačiū labai labai :))
Aš klaidą padariau parašydama =, o ne ==

Parašykite programą duotam natūraliajam skaičiui spausdinti taip, kad kiekvienoje eilutėje būtų po vieną jo skaitmenį, pakartotą tiek kartų, kokia jo reikšmė. Pavyzdžiui, jei skaičius yra 527, tai turėtų būti spausdinama taip:
55555
22
7777777


Sveiki, reikia pagalbos su šiuo uždaviniu. Pasirašiau for ciklą. O vėliau nežinau ką daryt, ar rinktis while, ar if. Nebesugalvoju į kurią puse... :) Ačiū už pagalbą.

Kiekvieno ciklo iteracijoje paimk pašalink paskutinį skaitmenį iš duoto skaičiaus ir tada ji atspausdink tiek kartų, kokia yra jo reikšmė. Išorinis ciklas turėtų būti while, jame tikrintum ar skaičius dar netapo lygus 0. O vidinis ciklas, kuriame spausdintum skaitmenis būtų for. Turbūt kodas turėtų atrodyti panašiai:

while(n != 0){
  t = n % 10;
  for( i = t; i > 0; i--){
    cout << t;
  }
  n /= 10;
}

https://www.ematematikas.lt/upload/uploads/50000/5500/55653/thumb/p19cm9f5hm4sda51104eoku1vdf1.png

Nesuprantu kaip čia apskaičiuoti ir atrinkti visus skaičius. Atvaizdavimą pasidariau, bet kaip dabar reikėtų apskaičiuoti sumą ir taip toliau, gal kas galite užvesti ant kelio?
Mano dabartinis kodas:


#include <fstream>
using namespace std;

int n;
int m;
int X[50], Y[50];
int X1[50], Y1[50];

void skaityk();
void spausdink();

int main()
{
        skaityk();
        spausdink();
        return 0;
}
void skaityk()
{
        ifstream fd("duomenys.txt");
        fd >> n;

        for(int i = 0; i < n; i++)
        {
        fd >> X[i] >> Y[i];

                m++;
                X1[m] = X[i];
                Y1[m] = Y[i];

        }

        fd.close();

}

void spausdink()
{
        ofstream fr("rezultatai.txt");
        fr << "Namo nr  " << "Gyventoju sk" << endl;
        fr << "-------" << endl;
        for(int i = 1; i <= m; i++)
        fr << X1[i] << "  " << Y1[i] << endl;


        fr.close();
}


Tai pasirašai dar viena kintamaji suma. Nepamirsk ji nunulint.

Tada for cikle kuri pasirasei skaiciuoji suma nu: suma = suma + Y(i);(Neleidžia kažko laužtiniu skliaustų rašyti)

O suzinot kiek kairėje, kiek dešinėje gyvena žmonių tai ife pasirasai salyga kuri tikrina ar namo numerį padalinus iš 2 gausi liekaną: jei ne reiškias namas dešinėje, ir atvirkščiai. Taigi gali bandyt, jeigu busi totalioj aklavietėje rašyk numesiu kodą.

almostlowTai pasirašai dar viena kintamaji suma. Nepamirsk ji nunulint.

Tada for cikle kuri pasirasei skaiciuoji suma nu: suma = suma + Y(i);(Neleidžia kažko laužtiniu skliaustų rašyti)

O suzinot kiek kairėje, kiek dešinėje gyvena žmonių tai ife pasirasai salyga kuri tikrina ar namo numerį padalinus iš 2 gausi liekaną: jei ne reiškias namas dešinėje, ir atvirkščiai. Taigi gali bandyt, jeigu busi totalioj aklavietėje rašyk numesiu kodą.


Suma lyg ir gerai atrodo pasirašau:
int Suma(int Y[], int n)
{
    int Suma = 0;
    for (int i = 0; i < n; i++)
        Suma = Suma + Y[i];
    return Suma;
}


bet spausdina tik vienetą..

Jei reikia, turiu kažkada parašytą kodą šiam uždaviniui (Pascal kalba):
program Gyventojai;
  var
    d, r: Text;
    sumg, sumd, sumk, dx, kx, m, g: Integer;
    n: 0..499;
    i: 1..499;
    vidd, vidk: Real;
begin
  Assign (d, 'Duomenys.txt'); Reset (d);
  ReadLn (d, n);
  For i := 1 to n do
    begin
      ReadLn (d, m, g);
      sumg := sumg + g;
      If m mod 2 = 0
        then
          begin
            sumd := sumd + g;
            dx := dx + 1;
          end
        else
          begin
            sumk := sumk + g;
            kx := kx + 1;
          end;
    end;
  Close (d);
  vidd := sumd / dx;
  vidk := sumk / kx;
  Assign (r, 'Rezultatai.txt'); Rewrite (r);
  WriteLn (r, 'Iš viso gatvėje gyvena žmonių: ', sumg, '.');
  WriteLn (r, 'Kairiojoje gatvės pusėje gyvena žmonių: ', sumk, '.');
  WriteLn (r, 'Dešiniojoje gatvės pusėje gyvena žmonių: ', sumd, '.');
  WriteLn (r, 'Vidutiniškai kairiojoje gatvės pusėje viename name gyvena žmonių: ', Round(vidk), '.');
  WriteLn (r, 'Vidutiniškai dešiniojoje gatvės pusėje viename name gyvena žmonių: ', Round(vidd), '.');
  Close (r);
end.

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »