Pereiti prie turinio

C++ programavimo uzdaviniai


Rekomenduojami pranešimai

Aisku aciu, dar vienas klausimas pavyzdziui man reikia, kad f-ja grazintu eiles numeri tai tinka komanda return i; ? Ir kodel negaliu jos naudoti void f-joje tik int tipo?

"return kazkas;" gali naudoti visose funkcijose išskyrus void tipo. "void" reiškia, kad funkcija negrąžina jokios reikšmės.

Redagavo rimcx
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ne. return komanda leidžia gąžinti tik vieną kintamąjį. pvz

int fx()
{
return 10; // negali rašyti "return 10,20,30;"

}

 

Tai galima apeiti (ką jau savo kode darei) pasinaudojant 'reference' (& ženkliukas prie funckijos argumento)

void funkcija(int skaicius,int &puse_skaiciaus,int &dvigubas_skaicius)
{
 puse_skaiciuas=skaicius/2;
 dvigubas_skaicius=skaicius*2;

}

// ...

int x=10;
int du_x=0,puse_x=0;
funkcija(x,puse_x,du_x);
// dabar puse_x=5, du_x=20

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aciu. Suvokiau :)

 

Turiu dar viena 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. kaip tai padaryti, arba is visurio 00, 13, ir t.t.?

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aciu. Suvokiau :)

 

Turiu dar viena 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. kaip tai padaryti, arba is visurio 00, 13, ir t.t.?

Galėtum daryti su string tipu, bet puikiai pamenu šią užduotį – čia asmens kodai, užtenka ir paprasčiausio skaidymo skaitmenimis, kurį turėjai kažkada daryti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Galėtum daryti su string tipu, bet puikiai pamenu šią užduotį – čia asmens kodai, užtenka ir paprasčiausio skaidymo skaitmenimis, kurį turėjai kažkada daryti.

Aisku, bet kaip tada man issikviesti skaicius is masyvo? Ar paprasciausiai galiu skaidyti cikle for A/100 ir t.t.?

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aisku, bet kaip tada man issikviesti skaicius is masyvo? Ar paprasciausiai galiu skaidyti cikle for A/100 ir t.t.?

Gali daryt masyvą su reikiamais skaičiais, gali struktūrą, gali cikle kintamuosius, kaip tik nori – čia programavimas! O ką, nemoki masyvo elementų pasiimt? :blink:

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gali daryt masyvą su reikiamais skaičiais, gali struktūrą, gali cikle kintamuosius, kaip tik nori – čia programavimas! O ką, nemoki masyvo elementų pasiimt? :blink:

Na kaip as suprantu tai paprasciausiai (A mano masyvas) A/padalinta is kazko paprasciasuiai cikle taip?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Del to skaiciu issiskaidymo darau taip:

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;
}
}

Bet isvedus i ekrana programa uzlusta. Kas blogai?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nei aš žinau, ką tu į tą masyvą dėsi, nei ką. Jei jau rodai, tai rodyk visą kodą.

#include <iostream>
#include <fstream>
#include <fstream>
using namespace std;
const int Cmax = 100;
const char CD[]="Duomenys.txt";
const char CR[]="Rezultatai.txt";
void Skaitymas(int n, int A[], long int & S, long int & Y, long int & M, long int & D, long int & X);
int main(){
int A[Cmax], n;
long int S, Y, M, D, X;
Skaitymas(n, A, S, Y, M, D, X);

}
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;
}
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pirmiausiai, tai kiekvienoj ciklo iteracijoj gauni reikšmę, bet jos niekur nenaudoji ir kitu kartu užrašo ant jos kitą, o grąžini tik paskutines. Kam taip darai? Jei tau reiks tų gabalėlių kiekvienam kodui, tai kurk masyvus (arba vieną struktūrų masyvą).

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pirmiausiai, tai kiekvienoj ciklo iteracijoj gauni reikšmę, bet jos niekur nenaudoji ir kitu kartu užrašo ant jos kitą, o grąžini tik paskutines. Kam taip darai? Jei tau reiks tų gabalėlių kiekvienam kodui, tai kurk masyvus (arba vieną struktūrų masyvą).

Kitame forume pasiule is viso nenaudoti for ciklo. Siule while. Nezinau, bet ar while cia tinkamas? Jei taip kodel?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ir for, ir while galima panaudoti kone visur. Čia ne esmė „naudoti while ar naudoti for“, esmė, ar supranti algoritmą ir ką reikia daryti. O tada jau kartu ir suvoksi, jog ne tiek svarbu, ar for, ar while...

Kode parodziau, kad uzsipyldziau masyva. Isvedu ji i ekrana ir meta nesamones. Va ko nesuprantu.

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tu būk geras ir neklausinėk po kiekvienos mažiausios problemėlės „kaip čia padaryti“, o iš pradžių pats pabandyk susitvarkyti. Nes galiausiai būna taip, kad tau neišeina kažkas ir tu net nesugebi papasakot, kas tau neišeina. Va pavyzdžiui paskutiniai forumo įrašai, tai tik kažką ne į temą klausinėji.

 

Toks jausmas, kad kai gauni kokį kompiliatoriaus error'ą, tu net nepažiūri, kurioj eilutėj jis yra, o iškart printscreen'ą darai ir tiesiai į forumą.

 

Jeigu nori, kad padėtumėm, tai konkrečiai sakai, kas negerai, pateiki viską ką turi, pažymi, kuriose eilutėse error'ą metą ir kuriose vietose negerai skaičiuoja. Ir iš kur mums žinoti, kokias gi nesąmones į tą ekraną meta? O dažniausiai tu tiesiog „kodas ilgas, todėl nerodysiu. Nieko neskaičiuoja, padėkit.“

 

Žinai, kaip vyksta debug'inimas? Paimi popieriaus lapą ir pagal programos duomenis apskaičiuoji visų kintamųjų reikšmes. Tada programoje pridėlioji po cout'ą kiekvienam kintamajam arba po kiekvieno sudėtingesnio skaičiavimo. Jeigu kažkurioj vietoj rezultatai skiriasi nuo tavo ranka suskaičiuotų, tada žinai, kad ten ir problema. Kaip matai, šitas algoritmas neturi komandos „parašyti žinutę forume“, nes tai atliekamai, kai jau nebeturi minčių, kas negerai (o tokią stadiją pasieki, na, tarkim, bent jau po pusvalandžio–valandos debug'inimo).

 

Nes nu rimtai, sprendi vaikiškus uždavinius ir be kitų pagalbos nei vieno neišsprendi...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ko tu cia pyksti? Galvoji metu tik siaip sau uzduotis, kad issprestumet? Galvoju pats, o nesugalvojes rasau i foruma, o kas blogai? Gi nemaladauju Taves padeti ir istaiyt klaidas. klausiu del konkrecios vietos, o jei niekas neaisku ir del viso kodo. Programuot dar tik pradedu, tai nesirsk jau taip baisiai. Geriau ka tiek laiko sugaisai rasydamas butum kazkam padejes su programavimu. Be to neprasau visa algoritma parasyti, mokinuosi pats. Tad jei kazkas nepatinka paprasciausiai ignoruok sita tema ir viskas, o nereikia kelt bangas, kad as tik metu kodus visai nepagalvojes ir tiek. Is tokio darbo man naudos tikrai nebus. Be to is kur zinai, kad neanalizuoju kodo? Tikek, netikek cia tavo reikalas, bet prie kodo sedziu tikrai ilgai. Plius po paaiskinimu jusu duodu klausimu ne siap sau, o kad galutinai suprasciau. Tad gali galvoti, kad visai nedirbus su kodu. Man tas pats. Vis tiek as geriau zinau ka as darau nei tu...

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Turiu klausima (gal wi_lius labai neuzpyks, nes pagal ji pats visai negalvojau). Bandau pildyti masyva, o jis uzpildomas nerealiomis reiksmemis. Kodel?

#include <iostream>
#include <fstream>
using namespace std;
const long int Cmax = 100;
const char CD[]="Duomenys.txt";
const char CR[]="Rezultatai.txt";
void Skaitymas(int & n, long int A[]);
int main(){
int n;
long int A[Cmax];
Skaitymas(n, A);

}
void Skaitymas(int & n, long int A[]){
ifstream fd(CD);
fd >> n;
for(int i=0; i<n; i++){
   fd >> A[i];
   cout << A[i]<< endl;
}
fd.close();
}

post-80785-0-70740200-1371480494_thumb.jpg

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ko tu cia pyksti? Galvoji metu tik siaip sau uzduotis, kad issprestumet? Galvoju pats, o nesugalvojes rasau i foruma, o kas blogai? Gi nemaladauju Taves padeti ir istaiyt klaidas. klausiu del konkrecios vietos, o jei niekas neaisku ir del viso kodo. Programuot dar tik pradedu, tai nesirsk jau taip baisiai. Geriau ka tiek laiko sugaisai rasydamas butum kazkam padejes su programavimu. Be to neprasau visa algoritma parasyti, mokinuosi pats. Tad jei kazkas nepatinka paprasciausiai ignoruok sita tema ir viskas, o nereikia kelt bangas, kad as tik metu kodus visai nepagalvojes ir tiek. Is tokio darbo man naudos tikrai nebus. Be to is kur zinai, kad neanalizuoju kodo? Tikek, netikek cia tavo reikalas, bet prie kodo sedziu tikrai ilgai. Plius po paaiskinimu jusu duodu klausimu ne siap sau, o kad galutinai suprasciau. Tad gali galvoti, kad visai nedirbus su kodu. Man tas pats. Vis tiek as geriau zinau ka as darau nei tu...

 

Tai kad ir norėjau tau padėti, bet kai daugmaž per 10 postų diskutuojama apie tą tavo problemą ir niekaip neina suprasti, kokia gi ta problema... Nu atsiprašau...

 

Jei nori, kad kas tau padėtų, tai ir pats pasistenk. Papasakok, ką debug'inai, ką išsiaiškinai. Nes kad ir 5 eilutės funkcionalaus kodo, vis tiek kažkodėl tau kyla problemų.

 

   fd >> A[i];
   S=A[i]/10000000000;
   Y=(A[i]/100000000)%10;
   D=(A[i]/1000000)%10;
   X=A[i]%10000;

 

Daugybė laiko diskutavo žmonės apie kažkokį neveikimą šitoj dalį, apie kažkokias nesąmones, galiausiai apie ciklus pradėjo kalbėti. Būtų užtekę tiesiog papildyti kodą:

 

   fd >> A[i];
   cout << A[i];
   S=A[i]/10000000000;
   Y=(A[i]/100000000)%10;
   D=(A[i]/1000000)%10;
   X=A[i]%10000;

 

Ir suformuluoti klausimą: „Nenuskaito skaičių iš failo, turiu tokį ir tokį duomenų failą, o nuskaito va ką“? Garantuoju, kad atsakymą būtum gavęs per keletą minučių (ir būtent taip viskas ir įvyko, kai pagaliau žmoniškai suformulavai klausimą).

 

Kiti žmonės, prašydami pagalbos, parodo visą kodą, pateikia duomenis ir rezultatus su kuriais veikia ir su kuriais ne, papasakoja, kaip programa veikia, netgi nurodo klaidos vietą eilučių, o gal net simbolių tikslumu. O tu daugmaž „kažkas kažkur neveikia“.

 

TL;DR

Įdėk pats pastangų, bus didesnė tikimybė kad kas tau pagelbės. O dabar gaišini ne tik savo, bet svarbiausia ir kitų laiką. Čia lankosi daugybė žmonių, kurie sugebės tau pagelbėti beveik visais atvejais. Bet kai jie turi kamantinėti tave, kad įdėtum source kodą, vėliau programos rezultatus, o dar vėliau turi išsiaiškinti, kurios kodo dalies nesupranti...

Redagavo wi_lius
Nuoroda į pranešimą
Dalintis kituose puslapiuose

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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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