Pereiti prie turinio

C++ programavimo uzdaviniai


Rekomenduojami pranešimai

Ka tavo nuomone ciklo viduje daro fd >> k ir fd >> m ? P.S. Atsakymas tik situo atveju geras, pasitikrink kai n = 4, gausi 800, o turetu but 860.

Va butent as juos uzkomentavau ir atsakymas nepasikeite... del to ir imeciau koda, nes kazkas cia ne taip.

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

o galima paciame cikle keisti kintamojo reiksme? pvz nusiskaitau kintamaji m = 30, o as noriu kad jis butu 0, tai butu galima po while parasyti, kad m = 0? Kuo toliau, tuo labiau as cia i matematika krypstu ir jau noriu aritmetine progresija taikyti... :D

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Greiciausiai viskas isejo. Del visa pikto imesiu koda.

#include <iostream>
#include <fstream>

const char CDfd[] = "Duomenys.txt";
const char CRfr[] = "Rezultatai.txt";
//-------------------------------------------------------------
using namespace std;
int main(){
   int k, i=1; // porciju parduota per pirma diena
   int m; // porciju daugiau nei buvusia
   int vk = 0; // kiek is viso pardave porciju ledu
   int n; // kelias dienas prekiauta ledais
   ifstream fd(CDfd);
   fd >> k >> m >> n;

   while (i <= n){
       vk = vk + k;
       k = k +m;
       i++;
       }
   fd.close();
   ofstream fr(CRfr);
   fr << vk;
   fr.close();
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gerai, matos kad nesupranti kaip tas programavimas veikia, tai kai pasirasysi kokia programa, pasiimk popieriaus lapa ir simuliuokis tame lape kaip viskas atrodo ivykdzius kiekviena kodo zingsniuka; taip sakant kas zingsniuka issirasinek visu kintamuju reiksmes, nes nieko nesigaus kitaip.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O aš darydavau atvirkščiai. Pirmiausiai pabandydavau išspręsti užduotį pats, be kompiuterio pagalbos, ir tada pamatydavau kokius žingsnius reikia padaryti kompiuteriui, kad ir jis galėtų tą užduotį išspręsti. Ir šiaip, pirmiausiai reikėtų pamėginti suprasti teoriją, o ne iš karto šokti rašyti programas. Ne taip daug laiko užimtų paskaityti kaip veikia ciklai, masyvas ir panašiai.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O aš darydavau atvirkščiai. Pirmiausiai pabandydavau išspręsti užduotį pats, be kompiuterio pagalbos, ir tada pamatydavau kokius žingsnius reikia padaryti kompiuteriui, kad ir jis galėtų tą užduotį išspręsti. Ir šiaip, pirmiausiai reikėtų pamėginti suprasti teoriją, o ne iš karto šokti rašyti programas. Ne taip daug laiko užimtų paskaityti kaip veikia ciklai, masyvas ir panašiai.

Teorija ir skaiciau ir net pamokas youtube ziurejau (bucky, pora lietuvisku ir t.t.) tik va, beda, kad be praktikos nieko normaliai ismokti negalima. Ziuredamas online pamokas ten viska supranti (juk aiskina po 10 sykiu ta pati dalyka) bet kai sedi rasyti programos yra sunku teorines zinias pritaikyti praktiskai ( bent jau man) todel konsentruosiuosi i kuo daugiau praktikos (be to spresdamas koki nors uzdavini vis tiek neisvengiamai busi priverstas skaityti teorija)...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Yra klausimu del 1 uzdavinio. Uzdavini issprendziau naudodamasis svmaciais masyvais. Norejau paklausti ar yra koks kitas kelias nenaudojant masyvu apskritai?

cia mano kodas naudojant dvimacius masyvus.

#include <iostream>
#include <fstream>
#define max 100
using namespace std;

const char CDfd[] = "Duomenys.txt";
const char CRfr[] = "Rezultatai.txt";

int main(){
int n, x, b;
int k;
int varzybos[max][2];
int sum=0;
ifstream fd(CDfd);
fd >> n >> x >> b;
for (int i=1; i<=n; i++){
   fd >> varzybos[i][0];
   fd >> varzybos[i][1];
}
for (int i=1; i<=n; i++){
   if(varzybos[i][1]<x)
   k = b*(x - varzybos[i][1]);
   sum=sum+k+varzybos[i][0];
}
fd.close();
ofstream fr (CRfr);
fr << sum;
fr.close();


}

post-80785-0-47354700-1370871152_thumb.jpg

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Yra klausimu del 1 uzdavinio. Uzdavini issprendziau naudodamasis svmaciais masyvais. Norejau paklausti ar yra koks kitas kelias nenaudojant masyvu apskritai?

cia mano kodas naudojant dvimacius masyvus.

[...]

 

Mano sprendimas (be masyvų).

 

//Biatlonininko rezultatas

#include <fstream>

using namespace std;

const char D[] = "Duomenys.txt";
const char R[] = "Rezultatas.txt";

int main()
{
   int n, x, b, t, k, //etapai, šūvių skaičius, baudos minutės, rato įveikimo laikas, pataikymo skaičius
       suma, bauda, laikas;

   ifstream Df(D);
   ofstream Rf(R);
   Df >> n >> x >> b;

   suma = 0;
   bauda = 0;
   for (int i = 0; i < n; i++) {
       Df >> t >> k;
       suma += t;
       bauda += x - k;
   }
   laikas = suma + bauda * b;

   Rf << laikas << endl;

   Df.close();
   Rf.close();

   return 0;
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aisku, aciu bus proga paanalizuot ir kita sprendimo buda. Turiu dar viena uzdavini. Gal galit bent ideja pasakyti kaip cia reiktu daryti? Ant popieriaus pasibraiziau ir viska suvokiau, bet kaip tai parasyti programa? (pacio kodo nerasykit, tik ideja ka cia reiktu ir kaip tikrinti) P.S kaip suprasti ta n kur yra tarp 1<=n<=109?.(pacioje programoje, kaip jis apsiraso?)

post-80785-0-03234900-1370872483_thumb.jpg

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Idėja ir yra svarbiausia šito uždavinio dalis. Jis iš olimpiados. Jei jau viską suvoki, tai tikrai nesuprantu kokių tu galėtum turėti problemų rašydamas programą. Nemanau, kad verta leisti laiką prie tokių užduočių besiruošiant IT egzaminui, nes kiek prisimenu, egzamine buvo tik paprastos standartinės užduotys.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Idėja ir yra svarbiausia šito uždavinio dalis. Jis iš olimpiados. Jei jau viską suvoki, tai tikrai nesuprantu kokių tu galėtum turėti problemų rašydamas programą. Nemanau, kad verta leisti laiką prie tokių užduočių besiruošiant IT egzaminui, nes kiek prisimenu, egzamine buvo tik paprastos standartinės užduotys.

O kaip ta visa tai perteikti i programa?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Bet pirmoje eiluteje d rodo kiek dienu programutojas sprende uzdavinius, o likusieji d kiek uzdaviniu issprende kiekviena diena. Cia juk skirtingi dalykai, tai kaip juos galime laikyti tuo paciu d. Beje as nelabai suprantu kur tas d yra nuskaitomas. Pvz pirmame for cikle tai pries cikla yra fd >> n; cia to nera.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Likusieji skaičiai nėra skaičius d. Užduotyje parašyta, kad kai nuskaitai d, tai po to dar seka d skaičių. Pvz., jei d=4, tai nuskaitęs d dar nuskaitysi 4 skaičius. Nors turbūt ne tame čia bėda. Pačioje pirmoje eilutėje yra ne d, o n.

Redagavo Valdas3
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Likusieji skaičiai nėra skaičius d. Užduotyje parašyta, kad kai nuskaitai d, tai po to dar seka d skaičių. Pvz., jei d=4, tai nuskaitęs d dar nuskaitysi 4 skaičius. Ir pačioje pirmoje eilutėje yra ne d, o n.

Aiku, tai kiek supratau skaiciu d cia nuskaito pacio ciklo viduje o ne pries ji taip?

for (int j=1; j<=d; j++)

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip reiketu daryti si uzdavini? Niekaip nesugalvoju... Koda radau internete, bet niekaip nesuprantu poros vietu.

#include <iostream>
#include <fstream>
using namespace std;

int main()
{   int a,b,i,j,sum,skirt,daug,dal,c;
   ifstream failas("U1.txt");
   failas >> a >> b;
   failas.close();

   if (b<a) // kodel b<a?
   {
       c = b; // kodel?
       b= a; // kodel? juk b = 10, o a =3. (cia taip iseina,k ad a tampa 10?)
       a = c; // kodel?
   }


      for (i=a;i<=b-1;i++)
          for (j=i+1;j<=b;j++)
            if ((j % i) == 0)
         {
         sum = j + i;
         cout << j << "     +     " << i << "      = " << sum << endl;
         skirt = j - i;
         cout << j << "     -     " << i << "      = " << skirt << endl;
         daug = j * i;
         cout << j << "     *     " << i << "      = " << daug << endl;
         dal = j / i ;
         cout << j << "     /     " << i << "      = " << dal << endl;
         cout << "*****************"<< endl;
         }

   return 0;
}

post-80785-0-51034100-1370956703_thumb.jpg

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ta vieta tiesiog apkeičia a ir b reikšmes, jei b<a. Kažkaip jau turėtum pats suvokti tokius dalykus :D . Ir ta kodo dalis yra visiškai nereikalinga. Ir taip aišku, kad antras skaičius niekada nebus mažesnis už pirmą, nes tie skaičiai nurodo intervalo rėžius.

Aciu, o

c = b
       b= a;
       a = c; 

tai iseina, kad c tampa 10.?

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.

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