-
Pranešimai
295 -
Užsiregistravo
-
Lankėsi
-
Atsiliepimai
100%
Turinio tipas
Forumas
Kalendorius
Parduotuvė
Akademija
Skelbimai
Mantonijo Pranešimai
-
-
Net nežinau kokios jos gali būti. Norėčiau, kad būtų tvarkinga lygiuotė, kuri būtų suprantama man ir kitiem.
-
Aaa supratau, perdariau programa. Viskas puikiai veikia ir pakeitus duomenys. Dėkui už pagalbą.
Dar norėčiau paklausti, kaip reikėtų tinkamai, tarkim, šią programą sulygiuoti pagal reikalavimus?
Tai yra mano rezultatų failas:
34 20 14 4.00 2.80
Kodėl prieš 4.00 ir 2.80 yra tarpas? Atsakyme nustatau :5:2.
-
Pridejau su EDIT prie pirmo atsakymo
Is tiesu tai vis tiek nesuprantu.
Tarkim i:=1, tai paims num[1] ir jis nelyginis tai praleis. Paims i:=2 ir tada num[2] kuris lygus 2. K:=2 ir paims gyv[2]. Sioje uzduotyje viskas kaip ir gerai kai nuneriai eina is eiles. Jei butu ne is eiles tai tada pritariu, funkxija reiketu perdaryt
-
1) Del kodo kartojimosi. Tavo logikoje, namas bus desineje, jei jo numeris lyginis, ir kaireje jei nelyginis. Tad
// lyginis kai num[i] mod 2 = 0 // nelyginis kai num[i] mod 2 = 1 // pastaba, mod 2 grazins 0 arba 1 ir nieko kito
Naudojantis sia logika, namas bus desineje, kai x mod 2 = 0, kaireje, kai x mod 2 = 1, kur x - namo numeris.
Tad, naudojantis mano pateikta visiGyventojaiPuseje funkcija:
namaiDesineje:= visiGyventojaiPuseje(numeriai, gyventojai, n, 0); namaiKaireje:= visiGyventojaiPuseje(numeriai, gyventojai, n, 1);
Aaa tiksliai pats susimaišiau!!
O kaip dėl pirmos klaidos?
-
Na, visu pirma, yra klaidu. Bet pirma, keli pastebejimai.
1. Nereikalingas kodo atkartojimas. visiGyventojaiKaire/visiGyventojaiDesine ir Vidgyventojudesine/Vidgyventojukaire yra identiskas kodas, su vienu mazu skirtumu, ar tai lyginis ar nelyginis skaicius. Tad buvo galima tiesiog sukurti dvi funkcijas visiGyventojaiPuseje ir vidGyventojuPuseje, kurie priima papildoma kintamaji 'puse:integer'. Tad kodas galejo buti, kazkas pan:
function visiGyventojaiPuseje(num, gyv: Mas; n, puse: integer): integer; var i, visiGyventojai: integer; begin visiGyventojai:= 0; for i := 1 to n do if num[i] mod 2 = puse then visiGyventojai := visiGyventojai + gyv[i]; visiGyventojaiPuseje := visiGyventojai; end;
2. Nezinau koks mokykloje/pascal yra siulomas standartas, taciau pas tave daug yra vienos eilutes for/if bloku, kuriuos galima uzrasyti ir be begin ... end; (kaip pavyzdyje virsuj)
Klaidos:
1. visiGyventojaiKaire/visiGyventojaiDesine - nereikalingas ir klaidingas kintamojo 'k' naudojimas.Yra suluzes. Tavo kode
k := num[i]; visiGyventojai := visiGyventojai + gyv[k];
Turetu buti
visiGyventojai := visiGyventojai + gyv[i];
Kodel: imkim tavo duomenis
1 5 2 4 3 4
Kas sukuria du masyvus su:
namai: [1]=1, [2]=2, [3]=3 zmones: [1]=5, [2]=4, [3]=4
Tavo kodas siuo atveju neluzta, nes namo 'numeris' atitinka index'a, kuriame yra aprasyta gyventoju kiekis tame name, taciau esant duomenim:
1 5 6 4 3 4
Antrame ciklo rate, k bus 6, taciau tokio index'o gyventoju masyve nera ir programa nebeveikia.
2. vidGyventoju
Vidgyventoju:=vidurkis div n; => Vidgyventoju:=vidurkis div daliklis;
Ir uzmirsai nustatyti daliklis:=0;
3. vidGyventojuKaire/Desine - ta pati klaida su 'k'
Nezinau ar cia klaida, kai kopijuoji i uzdarbius, bet dabartine kodo lygiuoti yra paini ir daznai neaisku kur prasideda/pasibaigia kodo blokas bei kam jis priklauso.
Dėkui, kad pasiryžai padėti. Tačiau nelabai suprantu pirmo pastebėjimo esmės. Ką pagal tave reikėtų įrašyt vietoj 'puse'? Ir nesuprantu gali gautis jos atsakymas 0 arba per kablelį.
Dėl 2 pastebėjimo su tavim sutinku, mano klaida.
Dėl 1 klaidos nelabai suprantu. Atsakymai gaunasi gerai, tai vadinasi funkcija nėra sulūžus ar ne taip?
Dėl 3 klaidos taipogi nesuprantu.
-
Sukūriau programą, kurios tikslas aprašytas Rašymas procedūroje. Kaip vertinate? Gal yra kokių pasiūlymų
program gyventojai1; type Mas = array [1..100] of integer; procedure Skaitymas(var numeriai:Mas; var gyventojai:Mas; var n:integer); var i : integer; /// Skaitikliai F : text; begin Assign(F, 'U1.txt'); Reset(F); ReadLn(F, n); for i:=1 to n do begin Read(F, numeriai[i]); Read(F, gyventojai[i]); // WriteLn(R, numeriai[i], ' ', gyventojai[i]); end; Close(F); end; ///////////////////////// function visiGyventojai(gyv:Mas; n:integer) : integer; var i, Visi: integer; begin Visi:=0; for i:= 1 to n do begin Visi:=Visi + gyv[i]; end; visiGyventojai:=Visi; end; ///////////////////////// function visiGyventojaiDesine(num:Mas; gyv:Mas; n:integer) : integer; var i, visiGyventojai, k: integer; begin visiGyventojai:=0; for i:= 1 to n do begin if num[i] mod 2 = 0 then begin k:=num[i]; visiGyventojai:= visiGyventojai + gyv[k]; end; end; visiGyventojaiDesine:= visiGyventojai; end; ///////////////////////// function visiGyventojaiKaire(num:Mas; gyv:Mas; n:integer) : integer; var i, visiGyventojai, k : integer; begin visiGyventojai:=0; for i:= 1 to n do begin if num[i] mod 2 <> 0 then begin k:=num[i]; visiGyventojai:= visiGyventojai + gyv[k]; end; end; visiGyventojaiKaire:= visiGyventojai; end; //////////////////////// function vidGyventoju(gyv:Mas; n:integer) : integer; var i, vidurkis, daliklis : integer; begin vidurkis:=0; for i:= 1 to n do begin vidurkis:=vidurkis + gyv[i]; daliklis:= daliklis + 1; end; Vidgyventoju:=vidurkis div n; end; ///////////////////////// function vidGyventojuDesine(gyv:Mas; num:Mas; n:integer) : real; var i, daliklis, k, vidurkispuse: integer; begin vidurkispuse:=0; daliklis:=0; for i:= 1 to n do begin if num[i] mod 2 = 0 then begin k:=num[i]; vidurkispuse:= vidurkispuse + gyv[k]; daliklis:= daliklis + 1; end; end; Vidgyventojudesine:= vidurkispuse / daliklis; end; ///////////////////////// function vidGyventojuKaire(gyv:Mas; num:Mas; n:integer) : real; var i, daliklis, k, vidurkispuse: integer; begin vidurkispuse:=0; daliklis:=0; for i:= 1 to n do begin if num[i] mod 2 <> 0 then begin k:=num[i]; vidurkispuse:= vidurkispuse + gyv[k]; daliklis:= daliklis + 1; end; end; Vidgyventojukaire:= vidurkispuse / daliklis; end; ///////////////////////// procedure Rasymas(numeriai:Mas; gyventojai:Mas; n:integer); var VidurkisDesine, VidurkisKaire : real; Kaire, Desine, AllGyventojai : integer; R : text; begin Assign(R, 'U1rez.txt'); Rewrite(R); /////////// Skaièiavimai Skaitymas(numeriai, gyventojai, n); /// Nuskaito duomenys á masyvus AllGyventojai:= visiGyventojai(gyventojai, n); /// Suranda gyventojø skaièiø Kaire:=visiGyventojaiKaire(numeriai, gyventojai, n); /// Suranda gyventojø skaièiø kairëje Desine:=visiGyventojaiDesine(numeriai, gyventojai, n); /// Suranda gyventojø skaièiø deðinëje VidurkisDesine:=Vidgyventojudesine(gyventojai, numeriai, n); /// Suranda vid. gyventojø skaièiø deðinëje VidurkisKaire:=Vidgyventojukaire(gyventojai, numeriai, n); /// Suranda vid. gyventojø skaièiø kairëje ////////// Spausdinimas WriteLn(R, AllGyventojai); WriteLn(R, Kaire); WriteLn(R, Desine); WriteLn(R, VidurkisKaire:5:2); WriteLn(R, VidurkisDesine:5:2); Close(R); end; var numeriai, gyventojai : Mas; n : integer; begin Skaitymas(numeriai, gyventojai, n); Rasymas(numeriai, gyventojai, n); end.
?
-
Aciu, bet mokaus dar mokykloje ir tiek dar nesu pazanges :D
iskelk
Vidgyventojupuse:= vidurkispuse div daliklis;
is for ciklo.
Beje, cia kaip sidenote, bet ziuriu, tu tikiesi is Vidgyventojupuse 'real' tipo atsakymo. Taciau, tu naudoji 'div', kai bandai surasti vidurki, kuris grazina rezultata be liekanos. Tad, del kodo tikslumo, reiktu arba nurodyt, kad grazinsi integer arba dalyba daryti naudojant '/':
Vidgyventojupuse:= vidurkispuse / daliklis;
EDIT: turejau laisvesnio laiko ir supaprastinau tavo koda
program project1; type MultiMas = array of array of integer; var namai: MultiMas; vidurkis: real; procedure Skaitymas(failas: string); var i, n: integer; F: Text; begin Assign(F, failas); Reset(F); ReadLn(F, n); SetLength(namai, n, 2); for i := 0 to n - 1 do ReadLn(F, namai[i, 0], namai[i, 1]); Close(F); end; procedure Rasymas(failas, prefix: string); var F: Text; begin Assign(F, failas); Rewrite(F); WriteLn(F, prefix, vidurkis: 5: 2); Close(F); end; function getVidurkis(namai: MultiMas): real; var i, namu, gyventoju: integer; begin namu := 0; gyventoju := 0; for i := 0 to Length(namai) - 1 do begin if namai[i, 0] mod 2 = 0 then begin namu := namu + 1; gyventoju := gyventoju + namai[i, 1]; end; end; getVidurkis := gyventoju / namu; end; begin Skaitymas('U1.txt'); vidurkis := getVidurkis(namai); Rasymas('U1rez.txt', 'Gyventoju vidurkis:'); end.
-
Tikslas suskaiciuoti vidutini gyventoju skaiciu namuose, kuriu numeris yra lyginis
Problema kita:
Division by zero
Jeigu funkcijoje apsirasau, kad daliklis:= 0 tai meta si error'a nors turetu dalinti is 5.
Jeigu funkcijoje apsirasau, kad daliklis:= 1 tai nemeta error'o, bet man turi dalinti is 5, o ne is 6.
program gyventojai1; type Mas = array [1..100] of integer; procedure Skaitymas(var numeriai:Mas; var gyventojai:Mas; var n:integer); var i : integer; /// Skaitikliai F : text; begin Assign(F, 'U1.txt'); Reset(F); ReadLn(F, n); for i:=1 to n do begin Read(F, numeriai[i]); Read(F, gyventojai[i]); // WriteLn(R, numeriai[i], ' ', gyventojai[i]); end; Close(F); end; ///////////////////////// function Vidgyventoju(gyv:Mas; n:integer) : real; var i, vidurkis, daliklis : integer; begin vidurkis:=0; for i:= 1 to n do begin vidurkis:=vidurkis + gyv[i]; daliklis:= daliklis + 1; end; Vidgyventoju:=vidurkis div n; end; ///////////////////////// function Vidgyventojupuse(gyv:Mas; num:Mas; n:integer) : real; var i, daliklis, k, vidurkispuse: integer; R : text; begin Assign(R, 'U1rez.txt'); Rewrite(R); vidurkispuse:=0; daliklis:=1; for i:= 1 to n do begin if num[i] mod 2 = 0 then begin k:=num[i]; vidurkispuse:= vidurkispuse + gyv[k]; daliklis:= daliklis + 1; WriteLn(R, vidurkispuse, ' ', daliklis, ' ', k); end; Vidgyventojupuse:= vidurkispuse div daliklis; end; Close(R); end; ///////////////////////// var numeriai, gyventojai: Mas; n, k : integer; Vidurkis : real; R : text; begin Skaitymas(numeriai, gyventojai, n); Vidurkis:=Vidgyventojupuse(gyventojai, numeriai, n); end.
-
Jau pasidariau, isejo :)
program gyventojai1; type Mas = array [1..100] of integer; procedure Skaitymas(var numeriai:Mas; var gyventojai:Mas; var n:integer); var i : integer; /// Skaitikliai F : text; begin Assign(F, 'U1.txt'); Reset(F); ReadLn(F, n); for i:=1 to n do begin Read(F, numeriai[i]); Read(F, gyventojai[i]); // WriteLn(R, numeriai[i], ' ', gyventojai[i]); end; Close(F); end; ///////////////////////// function Vidgyventoju(gyv:Mas; n:integer) : real; var i, vidurkis, daliklis : integer; begin vidurkis:=0; for i:= 1 to n do begin vidurkis:=vidurkis + gyv[i]; daliklis:= daliklis + 1; end; Vidgyventoju:=vidurkis div n; end; ///////////////////////// var numeriai, gyventojai: Mas; n : integer; Vidurkis : real; R : text; begin Assign(R, 'U1rez.txt'); Rewrite(R); Skaitymas(numeriai, gyventojai, n); Vidurkis:=Vidgyventoju(gyventojai, n); WriteLn(R, Vidurkis:5:2); Close(R); end.
-
Beda, kad atsakymas 0. Nesuprantu kame problema.
program gyventojai1; type Mas = array [1..100] of integer; procedure Skaitymas(var numeriai:Mas; var gyventojai:Mas; n:integer); var i : integer; /// Skaitikliai F : text; begin Assign(F, 'U1.txt'); Reset(F); ReadLn(F, n); for i:=1 to n do begin Read(F, numeriai[i]); Read(F, gyventojai[i]); // WriteLn(R, numeriai[i], ' ', gyventojai[i]); end; Close(F); end; ///////////////////////// function Vidgyventoju(gyv:Mas; m:integer) : real; var i, vidurkis, vid, k : integer; begin for i:= 1 to m do begin vidurkis:= vidurkis + gyv[i]; end; vid:=vidurkis div 10; Vidgyventoju:=vid; end; ///////////////////////// function Vidgyventojupuse(num:Mas; gyve:Mas; k:integer) : real; var i, vidurkisd: integer; vidd : real; begin for i:= 1 to k do begin if num[k] mod 2 = 0 then begin vidurkisd:=vidurkisd + gyve[k]; end; vidd:= vidurkisd div k; Vidgyventojupuse:=vidd; end; end; ///////////////////////// var numeriai: Mas; gyventojai: Mas; n, k : integer; Vidurkis : real; R : text; begin Assign(R, 'U1rez.txt'); Rewrite(R); Skaitymas(numeriai, gyventojai, n); Vidurkis:=Vidgyventojupuse(numeriai, gyventojai, n); WriteLn(R, Vidurkis:5:2); Close(R); end.
Duomenys:
10 1 5 2 4 3 4 4 5 5 6 6 5 7 0 8 0 9 5 10 0
-
Reik išmokt errorus skaityt, aiškiai parašyta problema errore :))
Dėkui už tavo patarimą, tikrai pasinaudosiu, nes iki šiol neskaičiau error'ų tik kurdavau temas apie juos. :)
-
Negali būti du terminai su tuo pačiu pavadinimu - pas tave programos pavadinimas ir kintamasis yra tas pats "gyventojai"
Dėkui, padėjo.
-
Problema:
Syntax error, . expected but , found
Niekaip nesurandu?
Jeigu ivedu, kad gyventojai:Mas tai meta:
Duplicate identifier GYVENTOJAI
Identifier already defined in gyventojai.pas at line 2
Syntax error, . expected but , found
KAME SAKNYS?
program gyventojai; type Mas = array [1..100] of integer; procedure Skaitymas(numeriai:Mas; gyventojai:Mas; n:integer); var i : integer; /// Skaitikliai F, R : text; begin Assign(F, 'U1.txt'); Reset(F); Assign (R, 'U1rez.txt'); Rewrite(R); Read(F, n); for i:=1 to n do begin ReadLn(F, numeriai[i]); WriteLn(R, numeriai[i]); end; for i:=1 to n do begin ReadLn(F, gyventojai[i]); WriteLn(R, gyventojai[i]); end; Close(F); Close(R); end; var numeriai: Mas; n : integer; begin Skaitymas(numeriai, gyventojai, n); end.
-
Pats update pasidaręs bet vis tiek leidžia man.
-
Leidzia ieiti tik paspausk "daugiau informacijos" ir jungtis vis tiek.
-
Biski nesuprantu bet ar SSH pakeicia ip ar jis leidzia jungtis per kitus portus ir nesuprantu ssh tikslo.
-
Pasidomėjęs radau, kad dauguma non-legal veiksmų eina per nVPN. Gal visgi galėtum +- apie tuos SSH tunelius papasakoti plačiau?
-
Kad nelabai patogu naudot ant telefono pilnaja
-
Na man visa laika meta ta nesaugu jungiantys. Nepagalvojau kad cia tik man vienam bet jog pranesia gal niekas nenubaus
-
Ar SSD reikia taikyti ar tiesiog galima bet koki ideti?
-
Taigi, jungiantis per Androidini chrome meta kad svetaines saugumo sertifikatas nepatikimas. Adminai atkreipkit demesi nes gan bauginanciai atrodo ;)
- saltasdusas sureagavo į tai
- 1
-
Na, pasirinkimo pilna siais laikais, tik reikia moketi tinkamai issirinkti. Siaip, jei domina, tai patarciau pasidometi apie RDP/VPS, SSH tunelius, bei paprasciausius Socks5. Be visa to, enkryptink savo harda ir naudokis papildomu (be kontraktu) arba nulauztu internetu, tai galesi, kad ir su ponu Bin Laden'u bendrauti.
O is esmes, nera tokio dalyko, kaip 100% anonimiskas. Gali sleptis po VPN'ais, RDP'ais ir t.t., vistiek tave iskas is po zemiu, jei busi to vertas.
Gerbiamas kolega, noreciau paklausti, ka reiskia tas "nulauztas internetas". Tu kalbi apie isilauzima i tarkim kaimyno interneta? Bet ar tai legalu? RDP/VPS puikiai zinau kas yra. Apie SSH esu girdejes bet ar jis tikrai efektyvus ir ar verta pradeti dometis? Gal tisiog likti prie klasikinio rdp arba vpn.
Klausimas kitas. Koks jusu manymu saugiausias vpn ar sunku pasakyti? Gal turite kokiu favoritu?
-
Rašoma vieną, galbūt norint kai kuriuos nuraminti, bet aš nelabai tikiu, kad tik šiais atvejais galimas atjungimas.
-
Issinuomok VPN, jei labai rupi anonimiskumas. Kaina ju nera labai didele ir dazniausiai jie buna kokybiski, tad interneto greitis irgi nenukentes.
Ar jiems nekils įtarimas kai visas interneto srautas eina per konkretų serverį, tarkim užsienio?
Paskalis
Programuotojų kampas
Atrašyta
Aš ne apie output kalbu, o apie programinį kodą.