Pereiti prie turinio

saltis77

Nariai
  • Pranešimai

    115
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

saltis77 Pranešimai

  1. Sveiki, teste suklydau klausima su siuo kodu. Reikia pasirinkti viena is variantu kuri skaicu seka bus teisinga, kai bus kreipiamasi i funkcija TrasavimuiV (70). As pasirinkau 2 varianta, bet jis netiko...

    Sąraše : 56 15 20 78 3 55 78 5 99 3 8 8. Kreipinys toks: TrasavimuiV (70);  

    void Sarasas::TrasavimuiV(int psl) {
     for(Mazgas *sna = pr->kitas; sna->kitas != NULL; sna = sna->kitas){
       int du =  sna->Imti();
       Mazgas *eiti = sna->kitas;
       if (du > psl)
          *sna = *eiti; // ka daro sitas???
       else
          sna = sna->kitas;
    } 
    }

    1. 56 15 20 78 3 55 5 3 8 8

    2. 56 15 20 3 55 5 3 8 8

    3. 56 15 20 78 3 55 78 5 99 3 8 8

  2. Dekui, bet yra pora klausimu. Mano kodas atrodo taip

    private: System::Void įkeltiDuomenųFailąToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
    	IO::Stream^ myStream;
           OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
    
           openFileDialog1->InitialDirectory = "c:\\";
           openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
           openFileDialog1->FilterIndex = 2;
           openFileDialog1->RestoreDirectory = true;
    
           if(openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK){
               if ((myStream = openFileDialog1->OpenFile()) != nullptr){
                   //code
                   myStream->Close();
               }
           }
    }

    Ir as noriu kad tas nuskaitytas failas butu naudojamas ivairiose funkcijose

    		SkaitytiB(kai);
    
    		RasytiB(kai);
    		richTextBox1->LoadFile("Rezultatai.txt", RichTextBoxStreamType::PlainText);

    Kaip tai reiktu daryti? Kiek matau as nusiskaitau faila i myStream ir kaip ji siusti i skaitymo funkcijas?

  3. Explode?

    Dekui, gal pabandysiu kazkiek aiskiau paklausti man reikia padaryti detalia, kurios ta arka (ar apskiritimas nezinau kaip pasakyti butu pilnaviduris) dabar jis yra tusciaviduris kaip tai reiktu padaryti? As paprasciausiai nusibreziau apskritima ir jo kampus sutriminau ir kazkas gavosi, beda ta kad pasirinkus conceptual uzpilda ar kaip cia pasakyti negaaunu tai ko reikia. Su kokia komanda ta arka brezti? (cia kur ta rodyklyte rodo i arka tai ta arka turi buti pilnavidure)

    post-90967-0-62744400-1396879596_thumb.jpg

    post-90967-0-12623200-1396879974_thumb.jpg

  4. Nesupratau ką tu nori konvertuoti. Gal galėtum patikslinti?

    Programoje turetu buti ivedami kazkoki tai duomenys is textbox. Pvz Miestas ir tarifas. Man reiktu kad jie butu sukonvertuoti i string kad veliau galeciau siusti juos i funkcijas.

      string miestas, tarifas; // kntamieji kurie turi buti ivedami is textobox
                            bool yra = false;
    
                            textBox1->Text = System::Convert::ToString(); // ivedamas miestas
                            textBox2->Text = System::Convert::ToString(); // ivedamas tarifas
    
                            if(tarifas == "d" || tarifas == "D" || tarifas == "diena"){
                                   DSarasas(ab, sar, miestas, yra);
                            }
                            else if(tarifas == "n" || tarifas == "N" || tarifas == "naktis"){
                                   NSarasas(ab, sar, miestas, yra);
                            }

    post-90967-0-79209300-1395304610_thumb.jpg

  5. Sveiki, yra tokia beda kazkaip grafineje plinkoje reiktu padaryti kad butu konvertuojamas system string i string. Niekaip nepadarau, kiek internete ieskojau pavyzdziai man neveikia. Ka reiktu daryti?

                      System::Void button4_Click(System::Object^  sender, System::EventArgs^  e) {
    		 string miestas, tarifas;
    		 bool yra = false;
    
    		 textBox1->Text = System::Convert::ToString(); // ???
    
    		 if(tarifas == "d" || tarifas == "D" || tarifas == "diena"){
    			DSarasas(ab, sar, miestas, yra);
    		 }
    		 else if(tarifas == "n" || tarifas == "N" || tarifas == "naktis"){
    			NSarasas(ab, sar, miestas, yra);
    		 }
    
    		 sar->Rikiuoti();

  6. Ar yra kam nors buves toks erroras? Del kokiu priezasciu tai vyskat ir kodel? Kai bandau nuskaitytus pazymius deti i kita knteinerine klase sitas eroras pasirode.

                   while(fd.peek() != '\n' && !fd.eof()){
    		int d;
    		fd >> d;
    		S.SetMarks(d);
    		cout << S.GetMark(i) << endl;
    		i++;
    		snew.SetStud(d); // klaida kai dedu cia
    
    	}

    visos klases koda deti nezinau ar yra prasme nes tenai praktiskai tas pats tik kad masyvas yra objekto ar kaip cia pasakyti (Student *Stu;)

    post-90967-0-11806500-1393689501_thumb.jpg

  7. Tu skaitai į paprastą statinį masyvą kurio dydis yra 5 (Student::M = 5). Tau reikėtų skaityti ir reikšmes įrašinėti į savo konteinerinę klasę Student.

     

    void Read(School & snew){
    string school, name, group;
    Student S;
    [...]
    while(!fd.eof()){
    	[...]
    	while(fd.peek() != '\n' && !fd.eof()){
                           int d;
    		fd >> d; 
                           S.SetMarks(d);
    	}
    	fd.ignore();
    }
    fd.close();
    }

     

    Ir dar vienas patarimas: kintamųjų vardus pradėk iš mažosios raidės, nes pasvyzdžiui Student S atrodo kaip kažkokia konstanta, o int *Marks atrodo kad Marks būtų klasės pavadinimas.

    Viliau, eilini karta dekoju. Padariau kaip liepiai gaunu kita errora ir debuginus issiaiskinau kas ne taip. Susitvarkiau berods. Buvau nepriskyres n(0) konstruktoriuje.

    post-90967-0-47990000-1393685003_thumb.jpg

  8. Sveiki, neusitvarkau su problema. Ivykdzius programa gaunu toki errora

    Unhandled exception at 0x569521F8 (msvcp110d.dll) in ConsoleApplication1.exe: 0xC0000005: Access violation reading location 0x0000000D.
    Nesuprantu kodel. Lyg masyvo dydi ir didinu, bet kazkokios nesamones su tuo fd >> Paz[kiek++]; vyksta

    class Student{
    public:
    static const int M = 5;
    private:
    string school, name, group;
    int *Marks; // dynamic array of student marks
    int nmax; // max size of array
    int n; // current size of array
    void IncreaseCapasity(int kiek);
    public:
    Student(int nmax = 0);
    ~Student();
    
    void SetMarks(int mark);
    void SetSchool(string school);
    void SetName(string name);
    void SetGroup(string group);
    
    int GetMark(int i){return Marks[i];}
    string GetSchool(){return school;}
    string GetName(){return name;}
    string GetGroup(){return group;}
    int GetN(){return n;}
    };
    
    Student::Student(int nmax):Marks(NULL), n(n), nmax(nmax){
    if(nmax > 0){
    	Marks = new int[nmax];
    }
    }
    
    Student::~Student(){
    if(Marks){
    	delete [] Marks;
    	Marks = NULL;
    }
    }
    
    void Student::IncreaseCapasity(int kiek){
    if(kiek > nmax){ // if array increasing
    	int *SNew = new int [kiek];
    	for(int i=0; i<n; i++)
    		SNew[i] = Marks[i];
    	delete [] Marks;
    	Marks = SNew;
    	nmax = kiek;
    }if(kiek < nmax){ // if array decreasing
    	int *SNew = new int [kiek];
    	for(int i=0; i<kiek; i++)
    		SNew[i] = Marks[i];
    	delete [] Marks;
    	Marks = SNew;
    	n = nmax = kiek;
    }
    }
    
    void Student::SetMarks(int mark){
    if(n == nmax) IncreaseCapasity(n + M);
    Marks[n] = mark;
    n++;
    }
    
    void Student::SetSchool(string school){
    this->school = school;
    }
    
    void Student::SetName(string name){
    this->name = name;
    }
    
    void Student::SetGroup(string group){
    this->group = group;
    }

    Nujauciu kad metodas IncreaseCapasity gali buti klaidingas, bet tiksliai nezinau

    mano skaitymo funkcija

    void Read(School & snew){
    string school, name, group;
    Student S;
    ifstream fd(CD);
    getline(fd, school, ';');
    fd >> ws;
    S.SetSchool(school);
    cout << S.GetSchool() << endl;
    while(!fd.eof()){
    	getline(fd, name, ',');
    	fd >> ws;
    	getline(fd, group, ' ');
    	int Paz[student::M];
    	int kiek = 0;
    	while(fd.peek() != '\n' && !fd.eof()){
    		fd >> Paz[kiek++]; // sitoje vietoje uzkomentavus erroras nyksta
    	}
    	fd.ignore();
    }
    fd.close();
    }

    Greiciausiai cia nera dididinama masyvo dydis kiek suprantu, bet kodel?

  9. Sveiki, dirbant GUI aplinkoje iskilo problema. Konsoleje viskas idealiai veiki bet bandant perkelti i grafine aplinka gavau toki errora. Bedos greiciausiai su sitomis funkcijomis, arba todel kad naudojau dinamine atminti. Ar kazkas jums yra buve panasaus ir kaip susitvarket?

     

    /** Įvedami matricos dydžiai
    @param Kub - bus saugomi įvesti duomenys*/
    void IvDuomenys(Kubas & Kub){
    int x, y;
    cin >> x;
    cin >> y;
    Kub.DetiXY(x+2, y+2);
    }
    
    /** Sugeneruoja kūbelių spalvas
    @param Kub - matricos dydis
    @param Kubeliai - konteineris, kur saugomos kūbelių spalvos
    @param Test - pagalbinis objektas
    @param Test2 - pagalbinis objektas
    @param Spal[] - spalvų masyvas*/
    void KubuGeneratorius(Kubas Kub, Kubai & Kubeliai, Kubai & Test, Kubai & Test2, string Spal[]){
    srand(time(NULL));
    int sp;
    
    Kubeliai.KeistiDydi(Kub.ImtiX()); // dinamine atmintis keiciami dydziai
    Test.KeistiDydi(Kub.ImtiX());
    Test2.KeistiDydi(Kub.ImtiX());
    
    for(int i=0; i<Kub.ImtiX(); i++){
    	Kubeliai[i].KeistiDydi(Kub.ImtiY());
    	Test[i].KeistiDydi(Kub.ImtiY());
    	Test2[i].KeistiDydi(Kub.ImtiY());
    }
    
    for(int i=1; i<Kub.ImtiX()-1; i++){
    	for(int j=1; j<Kub.ImtiY()-1; j++){
    		for(int k=0; k<6; k++){
    			sp = rand() % 3;
    			Kubeliai.DetiSP(i, j, k, Spal[sp]);
    			Test.DetiSP(i, j, k, Spal[sp]);
    			Test2.DetiSP(i, j, k, Spal[sp]);
    		}
    	}
    }
    }

    post-90967-0-11940900-1392912146_thumb.jpg

  10. ID turi priskirti ir langeliams, ir suskaičiuotam maksimumui. Tada, radus maksimalią grupę, belieką atspausdinti langelius, kurie turi maksimalios grupės ID.

    As neturiu maksimalios langeliu grupes koordinaciu, todel taip padaryti negaliu, nes Funkcija Max as iskvieciu funkcijoje Kviesti. As gaunu visai kitokias koordinates. Be to praeidamas visa matrica as ja uzpildau

    Test.DetiSP(i, j, p, "-");

    (cia kad netikrintu dar karta tu langeliu) tai nelabai suvokiu kaip galima dar karta uzpildyti 1...9 ir t.t. Suprantu tavo ideja kad kiekviena grupe kazkokiu vis kitokiu simboliu nori uzpildyti ir tada skaiciuoti tu simboliu kieki, bet mano atveju (mano kode) to padaryti negalima. galiu tik max reiksmei prisikirti kazkoki tai simboli, bet langeliams ne.

  11. Net jei ir maksimumą skaičiuoji pereidinėdamas pačią matricą, gali langeliams prisiskyrinėti ID. Tada tiesiog saugai, koks buvo maksimumas ir koks ID tam maksimumui. Lengelių atspausdinimas išlieka toks pat.

    Tada ID priskirciau paciam maksimumui o ne langeliams. Visas grazintas reiksmes is void kviesti as saugau cia

            if(kiekis!=0){
                   Maxi[ind].Deti(kiekis, Spal[sp]);
                   ind++;
           }

    Jei kazkoki ID meginciau priskirinet as ji priskiriciau tam kiekiui, bet man reikia langelio koordinaciu. Nebent kazka ne taip supratau ka nori pasakyti.

  12. Dekui uz atsakyma, bet greiciausiai tavo nurodytas budas nebus tinkamas man, nes as Max'imum skaiciuoju visai kitoje funkcijoje.

    void Kviesti(Kubas Kub, Kubai & Test, Kubai & Kubeliai, int p, int & kiekis, int & max, string & maxspalva, Maximumas Maxi[], int & ind, Koordinates Ko[], int & sk){
    string Spal[3] = {"z", "r", "g"};
    for(int sp=0; sp < 3; sp++){
    	for(int i=1; i<Kub.ImtiX()-1; i++){
    		for(int j = 1; j < Kub.ImtiY()-1; j++){
    			Eiti(Test, Kubeliai, i, j, p, Spal[sp], kiekis, Ko, sk);
    			Max(kiekis, max, maxspalva, Spal, sp, Maxi, ind, i, j, Ko, sk);
    		}
    	}
    }
    }
    
    bool Eiti(Kubai & Test, Kubai & Kubeliai, int i, int j, int p, string spalva, int & kiekis, Koordinates Ko[], int & sk){
    int tt = 0; // kaimyno numeris
    bool yra = false;
    if(Test.ImtiReiksme(i, j).ImtiSiena(p) == spalva){
    	Test.DetiSP(i, j, p, "-");
    	kiekis++;
    	while(!yra && tt < 4 ){ // judejimas
    		i = i + Test.ImtiEil(tt);
    		j = j + Test.ImtiStu(tt++);
    		if(Test.ImtiReiksme(i, j).ImtiSiena(p) == spalva){ // kelias
    			Eiti(Test, Kubeliai, i, j, p, spalva, kiekis, Ko, sk);
    		}
    	}
    }
    return yra;
    }
    
    void Max(int & kiekis, int & max, string & s, string Spal[], int sp, Maximumas Maxi[], int & ind, int i, int j, Koordinates Ko[], int & sk){
    if(kiekis!=0){
    	Maxi[ind].Deti(kiekis, Spal[sp]);
    	ind++;
    }
    if(max < kiekis){
    	max = kiekis;
    	kiekis = 0;
    	s = Spal[sp];
    }
    else
    	kiekis = 0;
    }

  13. Sveiki, terkime turiu matrica kurioje yra daug skirtingu spalvu kvadratu ir kai kurie vienodos spalvos lieciasi sonais. Apsiskaiciavau kieki kiek vienodos spalvos kubeliu kurie lieciasi sonais yra (kiekis). Dabar noreciau issaugoti kubeliu koordinates. Ar kazkas turite bent ideja kaip tai reiktu daryti? Pats galvoju kad reiktu daryti taip:

    eiti per ta matrica ir fiksuoti pasirinktos spalvos pvz raudonos spalvos kubelius.

    daryti if'a jei kubelis lieciasi su kitu kubeliu ir tas kitas kubelis liecasi dar su kitu mazinti kiekis-- (taip kol kiekis bus lygus 0)

    jei if'as tenkinamas i kazkoki masyva ar dar kazkur saugoti tas koordinates.

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