eMatematikas Prisijunk Forumas Užduotys Testai Pradžia

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


Yra klaidų funkcijoje Vidurinis:
3. Kompiuteris masyvo nariui negali priskirti u reikšmės, nes jos nežino. Kintamojo u čia nereikia;

Nelabai suprantu kodel nereikia. Jei vykdau programa be u reiksmes meta klaida. Kiek supratau siulai issiversti apskritai be u. Taciau kaip? Ar mano pavyzdys visai blogas?

Siūlau išsiverst išvis be u. Tu šitą kintamąjtį naudojai tik funkcijoje vidurinis, bet sakau jis visai nereikalingas.

Aciu. :) Programa beveik isejo. Dar kapstysiuos.... Minusa naikinau taip:
C[i]=C[i]*(-1);

pakeista prieš 13 m

Galima ir taip.
Arba tiesog C[i]=-C[i]

Dabar galvoju ar tikrai tavo pasakytas algoritmas yra teisingas. Juk tekstiniame faile turim tokius duomenis: 4 3 7 8
aritmetinis vidurkis gaunasi 5,5 . Tai pavyzdziu |4-5,5|=1.5 ir |7-5,5|=1,5. Tai taip iseina, kad turime 2 maziausias reiksmes :) Nors logiskai pagalvojus tu teisus. Galbut uzduotyje klaida?

pakeista prieš 13 m

Geras pastebėjimas. Pats nepažiūrėjau iškart.
Algoritmas tai, manau, teisingas, bet tada paaiškinimas prie užduoties neteisingas: 4 ir 7 yra vienodai artimi svorių aritmetiniam vidurkiui.

pakeista prieš 13 m

lukasmGeras pastebėjimas. Pats nepažiūrėjau iškart.
Algoritmas tai, manau, teisingas, bet tada paaiškinimas prie užduoties neteisingas: 4 ir 7 yra vienodai artimi vidutinei svorių rikšmei.

Na taip :). Pusdieni maliausi su programa, o pasirodo salyga nera iki galo isbaigta :D. Geras.

Turiu klausima. Tarkime turiu tekstiniame faile tokius skaicius
6
36508230023
43210060068
60111300321
40203190010
30501150007
50310241123

Man reikia nusiskaityti tik pirmus 2 pvz 36, 43, 60 ir t.t.  arba is visurio 00, 13, ir t.t kaip tai padaryti? Skaiciu skaidymas? kito budo nera?

pakeista prieš 13 m

Norėdamas nuskaityti du pirmus skaičiaus skaitmenis, gali atlikt tokią funkciją:
int dupirmi(int n, int p1, int p2)
{
    while (n>10)
    {
          p2=n%10;
          p1=(n%100)/10;
          n=n/10;
    }
    return 10*p1+p2;
}

Jei nori nuskaityt vidurinius skaitmenis, turėtum spręst kiek kitaip. Pirmiausia reikia sužinoti, ar n-ženklis skaičius, kurį įvedi, turi lyginį, ar nelyginį skaičių skaitmenų. Du vidurinius skaitmenis galėsi  rasti tik tada, jei skaičius turės lyginį skaičių skaitmenų. Jei skaičius turės nelyginį skaičių skaitmenų, galėsi rasti 1 ar 3 vidurinius skaitmenis, bet jau 2 - niekaip. Čia man atrodo patogiausia visus skaičiaus skaitmenis išsisaugoti masyve, po to patikrint, lyginis ar nelyginis yra  n (t. y. paskutinio masyvo nario indeksas (jei numeruoji nuo 1)). Toliau pats sugalvok. :D

As dariau paprasciausia skaidyma
void Skaitymas(int n, int A[], long int & S, long int & Y, long int & M, long int & D, long int & X){
ifstream fd(CD);
fd >> n;
for (int i=0; i<n; i++){
    fd >> A[i];
    S=A[i]/10000000000;
    Y=(A[i]/100000000)%10;
    D=(A[i]/1000000)%10;
    X=A[i]%10000;
cout << S;
}
}

taciau isvedus i ekrana S programa nuluzta ir meta labai daug 0.

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