-
Pranešimai
96 -
Užsiregistravo
-
Lankėsi
-
Atsiliepimai
0%
Reputacijos išklotinė
-
deividas707 sureagavo į wi_lius Dinamine atmintis grafineje sasajoje C++
Kai išsiskiri atmintį statiškai, nereikia rūpintis jos atlaisvinimu, nes tuo pasirūpina kompiliatorius.
Statiškai:
void foo(string *s) { ... } string a("kažkoks tekstas"); foo(&a);
Dinamiškai:
void foo(string *s) { ... } string *a = new string("kažkoks tekstas"); foo(a); delete a;
Abejais atvejais veikimas toks pats — funkcija foo gauna kaip parametrą nuorodą į string'ą – tačiau pirmu atveju vietą objektui išrenka kompiliatorius, o antru — tu pats.
-
deividas707 sureagavo į kashiukas Dinamine atmintis grafineje sasajoje C++
Nesu kodinęs vindovsui su cpp, todėl ką šiame kontekste tiksliai daro – nežinau.
Šiaip šitas reikalas skaitomas taip: jei components != 0 (nelygu NULL), tada vykdomas kodas. components gali būti NULL tuo atveju, jeigu alokacija, dėl kažkokios priežasties, nepavyko.
-
deividas707 sureagavo į kashiukas Dinamine atmintis grafineje sasajoje C++
~MyForm() (destuktorius) būtų puiki vieta tą padaryti, nebent kažkoks komponentas tampa „nebereikalingas“ anksčiau, tokiu atveju, trink tada, kada objekto nebereikia.
-
deividas707 sureagavo į babunas Problemėlė C++
As galvoje turejau nenaudoti gatavu klasiu tokiu kaip map, list, vector, nes destytojas iskarto kabinsis,o savo kurtas tai zinoma, kad butina naudoti.
Parasiau as tau algortima kuris isrenka unikalius irasus http://pastebin.com/zFA6xh26, na ir kai issirinksi kita jau baika, tada kaip sakiau begi per visas eilutes matricos kur sutinka pavadinimas spausdini ir viskas ^_^
-
deividas707 sureagavo į hafnis1324 Problemėlė C++
Su mapai's turetu buti kazkas panasaus:
include <vector>; include <map>; map<string, vector<Duomenu_tipas_apie_zmogu> > mapas; for (int i = 0; i < Zmoniu_kiekis; i++) map[ZmoniuMasyvas.ImtiBanka(i)].push_back(ZmoniuMasyvas(i)); map<string, vector<Duomenu_tipas_apie_zmogu> >:: iterator it; for (it = mapas.begin(); it != mapas.end(); it++) cout << it->first << ": "; // Atspausdina banko varda; (for int i = 0; i < it->second.size(); i++) cout << it->second[i] << endl; // Atspausdina duomenis apie zmogu, tikriausiai // turetu buti kazkaip taip: // it->second[i].ImtiVarda() << " " << // it->second[i].ImtiDarKazka() ...
Siaip butu geriau kad imestum i koki pastebin pilna koda, nes dabar nelabai aisku kaip tu ten saugai tuos duomenis apie zmones, ar turi kazkoki tai zmoniu masyva, ar konteineri klase ar dar ka.
-
deividas707 sureagavo į hafnis1324 Problemėlė C++
O dar klase "Matrica" pashare'ink, nes dabar bijau suklysti, nes manau, kad joje tu ten laikai vardu/numeri/banku masyvus?
EDIT: nvm.
Tokie pastebejimai. Pirma, funkcijos ArYra (ta, kur as parasiau) prototipa pasirasyk. Antra, funkcijoj AtrenkamSkirtingus n = 0; turetu but, o ne n = 6. Tas n rodo, kiek yra skirtingu banku, o pradzioje ju yra 0, tiesa? O siaip tai turetu veikt kaip ir viskas, tik spausdinima dar pasirasyt. Nezinau koki ten errora apie undifined kintamaji gauni, galetum visa nukopijuot gal?
-
deividas707 sureagavo į hafnis1324 Problemėlė C++
Tokie pastebejimai. Pirma, funkcijos ArYra (ta, kur as parasiau) prototipa pasirasyk. Antra, funkcijoj AtrenkamSkirtingus n = 0; turetu but, o ne n = 6. Taip pat ArYra funkcijoj ciklas turi eiti iki n. Tas n rodo, kiek yra skirtingu banku, o pradzioje ju yra 0, tiesa? O siaip tai turetu veikt kaip ir viskas, tik spausdinima dar pasirasyt. Nezinau koki ten errora apie undifined kintamaji gauni, galetum visa nukopijuot gal?
-
deividas707 sureagavo į hafnis1324 Problemėlė C++
n rodo masyvo bankai dydi, t.y. to masyvo, kuris laiko visus skirtingus bankus. Pradzioje jis turi buti lygus 0. O siaip del erroro, tai probably persoki kazkur tai rezius masyvo kazkokio. Susitvarkyk ka parasiau auksciau ir patestuok.
-
deividas707 sureagavo į Mm8 Realis Problemėlė C++
Kokie galimi bankų pavadinimai žinai?
Tada galėtum:
cout<<"DNB: "<<endl; for (int i=0; i<M.ImtiSK(); i++) if (M.ImtiBankas(i)=="DNB") cout<<visa informacija, išskyrus banko pavadinimas<<" ";
Ir taip su kiekvienu banku.
Jei nežinai, kokie bankų pavadinimai gali būti, gali juos susirast. Rasti kiek skirtingų ir kokie tie bankai yra. Skirtingus bankus susirašyt į papildomą masyvą ir tada tikrinti.
int b - kiek yra bankų;
string bankai[10] - bankų rūšys.
int j=0; for (int i=0; i<b; i++) { cout<<bankai[i]<<": "; while (M.ImtiBankas[j]==bankai[i]) cout<<informacija apie žmogų[j]<<" "; j++; cout<<endl; }
-
deividas707 sureagavo į Taurius Matematika
Teisingai, dabar tereik suprastinti viršutinį Δx su apatiniu, įsistatyti 0 ir gaunasi tavo išvestinė
-
deividas707 sureagavo į hafnis1324 C++
fd >> ws; pries cikla imesk. Atrodo, kad tas getline'as pirmas paiima naujos eilutes simboli \n, kuris likes po tu skaiciu nuskaitymo.
-
deividas707 sureagavo į TheLightning C++
Man atrodo, kad tu nuskaitai 3 reikšmes, neperšoki į kitą eilutę ir pasiimi į masyvą tarpą arba nk nepasiimi.
Peršok į kitą eilutę prieš leidžiant ciklą.
-
deividas707 sureagavo į TheLightning C++
Gali naudoti klases arba struktūras.
pvz.:
struct MyPair { char letter; int number; }; MyPair pairAr[2]; MyPair myPair; myPair.letter = 'a'; myPair.number = 1; pairAr[0] = myPair;
-
deividas707 sureagavo į Sharpaz C++
O neturėtų būti taip?
Pirmą dieną Vardenis Pavardenis pagamino 1 detalę, antrą dieną pagamino 2, trečią - 3 ir t.t.
-
deividas707 sureagavo į philips112 C++
3 5 2.50
Pavardenis Vardenis Snoras LT123
Pavardenis Vardenis DNB LT456
Pavardenis Vardenis Sekundės bankas LT789
1 Pavardenis Vardenis 3
2 Pavardenis Vardenis 4
3 Pavardenis Vardenis 7
VA taip.
-
deividas707 sureagavo į shiltnamis C++ uzduotis
sveikas, pabandžiau pirmu bandymu padaryti abu punktus. Turbūt labai primityvu viskas, bet vis tiek gal rasi kokią idėją, kurią sau pritaikysi. Su tais dviem tavo failais berods veikia, netikrinau atidžiai :)
#include <iostream> #include <fstream> #include <vector> #include <cctype> #include <cstring> #include <algorithm> using namespace std; struct PalygintiStr { bool operator()(const string& s1, const string& s2) { return s1.size() > s2.size(); } }; void atrinktiZodzius(string s, vector<string>& v) { char tmp[1000]; strcpy(tmp, s.c_str()); char *p; p = strtok(tmp," ,.-\t\n"); while (p != NULL) { string konv(p); for (int i = 0; i < konv.size(); i++) { konv[i] = tolower(konv[i]); } v.push_back(konv); p = strtok (NULL, " ,.-"); } } void zodisPasikartoja(string z, int& p, int& a, const vector<string>& v1, const vector<string>& v2) { for (int i = 0; i < v1.size(); i++) { if (z == v1[i]) { p++; } } for (int i = 0; i < v2.size(); i++) { if (z == v2[i]) { a++; } } } bool yraZodis(string zodis, const vector<string>& z) { vector<string>::const_iterator it = find(z.begin(), z.end(), zodis); if (it != z.end()) return true; return false; } void ilgiausiZodziai(const vector<string>& v1, const vector<string>& v2) { int max = 0; vector<string> abu; // sujungsiu abu vektorius i viena, kad patogiau butu atrinkti abu.reserve(v1.size() + v2.size()); abu.insert(abu.end(), v1.begin(), v1.end()); abu.insert(abu.end(), v2.begin(), v2.end()); PalygintiStr pal; sort(abu.begin(), abu.end(), pal); vector<string> ilgiausi; // atrinktieji 10 zodziu for (int i = 0; i < abu.size(); i++) { if (ilgiausi.size() == 10) { break; } if (!yraZodis(abu[i], ilgiausi)) { ilgiausi.push_back(abu[i]); } } for (int i = 0; i < ilgiausi.size(); i++) { int p = 0; int a = 0; zodisPasikartoja(ilgiausi[i], p, a, v1, v2); cout << "Zodis: " << ilgiausi[i] << " pirmam: " << p << " antram " << a << endl; } } void ilgiausiPirmam(const vector<string>& v1, const vector<string>& v2) { vector<string> ilgiausi; for (int i = 0; i < v1.size(); i++) { if (ilgiausi.size() == 10) { break; } if (!yraZodis(v1[i], v2) && !yraZodis(v1[i], ilgiausi)) { ilgiausi.push_back(v1[i]); } } for (int i = 0; i < ilgiausi.size(); i++) { int kiek = 0; for (int j = 0; j < v1.size(); j++) { if (ilgiausi[i] == v1[j]) { kiek++; } } cout << "Zodis: " << ilgiausi[i] << " kartojasi: " << kiek << endl; kiek = 0; } } int main() { ifstream fin1("Knyga1.txt"); ifstream fin2("Knyga2.txt"); string k1, k2; while (!fin1.eof()) { k1.push_back(fin1.get()); } while (!fin2.eof()) { k2.push_back(fin2.get()); } vector<string> kn1; vector<string> kn2; atrinktiZodzius(k1, kn1); atrinktiZodzius(k2, kn2); PalygintiStr pal; sort(kn1.begin(), kn1.end(), pal); sort(kn2.begin(), kn2.end(), pal); cout << "1) uzd.\n\n"; ilgiausiZodziai(kn1, kn2); cout << "\n2) uzd.\n\n"; ilgiausiPirmam(kn1, kn2); }
-
deividas707 sureagavo į hafnis1324 C++ uzduotis
Atsiprasau labai, bet pats busiu pervertines tolower ir toupper galimybes, sitos funkcijos dirba tik su char'ais, stringu "nevalgo". Sioks toks pasiulymas butu pasirasyt tokia f-ja:
void mazinti (string & eilute) { for (int i = 0; i < eilute.length(); i++) eilute[i] = tolower(eilute[i]); }
Ir kiekviena kart nuskaicius eilute nusiusti ja i sita f-ja (t.y. po getline(fd, eil) parasyti tokia eilute: mazinti(eil); ), taip ji taps su visom mazosiomis raidemis.
-
deividas707 sureagavo į audrius^ Du vektoriu uzdaviniai. Pasimeciau
m = {x, y, z}, kadangi vektorius m statmenas Oz ašiai, tai z=0, tada m = {x, y, 0}
|m| = 51 -> x2 + y2 = 512
kadangi vektorius m statmenas vektoriui a = {8, -15, 3}, tai vektorių skaliarinė sandauga yra 0, iš čia
8x - 15y = 0
Toliau išspręskime lygčių sistemėlę:
x2 + y2 = 512
8x - 15y = 0
-
deividas707 sureagavo į audrius^ Du vektoriu uzdaviniai. Pasimeciau
1. Vektorius žymėsiu paryškintai:
a={1, -2, 3}
b={1, 0, -1}
Manau pradžiai spręsdamas gali pasirašinėti kaip atrodo vektoriai: 2a+j, 3b-i ir b-a-k
pvz: 2a+j = 2*{1, -2, 3} + {0, 1, 0} = {2, -4, 6} + {0, 1, 0} = {2, -3, 6} ir taip susirandęs vektorių koordinates juos sudaugini mišriąja sandauga... Po to ieškodamas projekcijos naudojiesi šia formule: http://upload.wikimedia.org/math/e/e/2/ee2ee3db6d2d8c1f63b99f13c019f1dd.png
-
deividas707 gavo reakciją nuo Eimantass Du vektoriu uzdaviniai. Pasimeciau
Nezinau kaip daryti siuos uzdavinius yra minicu ir ar mano skaiciavimai teisingi?
Del pirmo paprasciausiasi susidauginu ir gaunu (2+j; -4+j; 6+j)x(3-i; -i; 3-i)*(-k; -2-k; 2-k)
Ir tada viska i matrica susistatau ir suprantu kad gaunu nesamones....
Antrame pasirasau, kad m(x; y; 0) tada m_z = |m|*cos90 = 0... toliau nezinau nei ka daryti...
-
deividas707 sureagavo į hafnis1324 C++ antras maziausias masyvo narys
#include <limits.h> int A[5] = {10, 2, 10, 4, 5}; int min = numeric_limits<int>::max(); int min2 = numeric_limits<int>::max(); for (int i = 0; i < 5; i++) if (min > A[i]) { min = A[i]; } for (int i = 0; i < 5; i++) if (A[i] > min && A[i] < min2) min2 = A[i];
Atrodo toks kodas veikia. Tik prie viso sito reiketu sugalvot kazka dar, jeigu visi skaiciai masyve vienodi :)
-
deividas707 sureagavo į hafnis1324 C++ koordinaciu skaiciavimas
Zodziu, parsisiunciau tavo koda, kur vakar ten buvai idejes, jame nieko per daug keist nereikejo, kad viskas veiktu.
Figuru klases metode Perimetras pakoregavau kelias eilutes:
trper = trper + krastines[i]; pakeiciau i: trper = trper + Krastines(i); kvper = kvper + krastines[i]; pakeiciau i: kvper = kvper + Krastines(i);
Tada pagrindineje programoje pasirasiau isvedima:
for (int i = 0; i < fgk.Imti(); i++) cout << fgk.Imti(i).Perimetras() << endl;
Rezultatus gaunu 17.5634, 62.8319, 23.6. Nezinau ar jie teisingi, bet skaiciai atrodo normalus.
-
deividas707 sureagavo į hafnis1324 C++ koordinaciu skaiciavimas
Pasidarai metoda, kuris is figuros klases grazintu n (koordinaciu skaiciu). Tada ciklai atrodytu taip:
for (int i=0; i < fgk.Imti(); i++){ for(int j = 0; j < fgk.Imti(i).ImtiN(); j++) // ta ImtiN() metoda pasidaryk Figuru klasej.
-
deividas707 sureagavo į hafnis1324 C++ irasymas i faila
Ta veita turejau omeni, o problema labai paprasta, return srautas.str() isimk is to ciklo, nes jis grazina po pirmo irasymo i sstream'a, o ne surasius viska, ka reik ;)
-
deividas707 sureagavo į hafnis1324 C++ irasymas i faila
Aha supratau jau ta paskui parases, ir dar kol rasei savo posta sita as savaji paeditinau :D zodziu, prasilenkem. Kaip ir sakiau tokiu atveju tau i figuros n reik ideti irgi padalinta is dvieju, nes tavo masyvai yra dvigubai mazesni nei idetas n, o tu suki cikla juos isspausdint vistiek iki n.