Pereiti prie turinio

rimcx

Patvirtinti nariai
  • Pranešimai

    130
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    100%

rimcx Pranešimai

  1. Beveik prieš metus užsiregistravau freelancer.com bet gauti darbo pavyko tik prieš kelias dienas. Iš pradžių taikiausi į smulkius darbus už mažą kainą (homework assignments ir pan.) bet dėl tokių darbų konkurencija labai didelė ir neturint atsiliepimų gauti darbo praktiškai neįmanoma. Tad pradėjau žvalgytis į sudėtingesnius bei labiau apmokamus darbus ir po kelių bandymo pavyko :-)

    Žinoma prireikė pastangų įrodyti, kad sugebėsiu viską padaryti, bet kai darbdavys pasakė "... you really have a good knowledge of your subject" supratau kad darbą skirs atlikti man. Dabar dirbu vienam indui ir 1/4 užmokeačio jau pas mane :-)

  2. OK. Jei jau kankintis tai iki galo. Ar aš gerai suprantu, kad unsigned bitai pasimame sekantį baitą einantį po mūsų ieškomų duomenų? idx yra pirmas mūsų ieškomas narys + ieškomas dydis ir atsiduriam kaip tik už ieškomų duomenų.

    Teisingai :)

     

    Ar nereikėtų man ANDint su 0xC0, ko pasekoje gaučiau rezultatą: x x 0 0 0 0 0 0. Ar čia aš blogai kažką suprantu?

    Čia jau aš blogai supratau; galvojau tau reikia rasti pirmus sekančio baito bitus. Tad tu teisus, reikia ANDinti su 0xC0.

     

    Ar įmanoma tuos du bitukus per printf kažkaip išvesti į ekraną(kiek ieškojau tai neradau panašaus formato)? Vis dar nepagaunu esmės kaip pasiekiamas palyginimas. Atsiprašau jeigu klausimai skamba nelabai logiškai. Dar kartą ačiū už pagalbą :)

    unsigned char bitai=m->payload[idx+sizeof(ieskomi_duomenys)]&0xC0;
    printf("%d\n",bitai>>6); // perstumi tuos 2 bitus per 6 pozicijas i desine ir atspausdini
    
    // XX000000
    // >>6
    // 000000XX
    
    // arba palygini if( (bitai >>6)==3) ar pan.
    

     

    Edit: Rytas už vakarą protingesnis, tikiuosi. Jeigu suANDinus su 0xC0 gaunu kažkokį baitą, tai jo du pirmi bitukai liks nepakitę. Tada vėl galiu naudoti memcmp tam poto einančiam baitui ir lyginti su su 0xC0 ar pirmi bitukai 11 arba lyginti su kokiu 0x40 ar 0x80 jei pirmi bitukai 01 ar 10. O paėmus 0x00 galiu patikrinti ar turiu pradžioje 00. Tikiuosi labai nenusišnekėjau.

    Nereik jokio memcmp jei tau reikia palyginti tik 1 baitą ar bitus, tiesiog palygini su if ir AND

    if(bitai&0x80){} //tikrini pirmąjį bitą, t.y. X0000000
    if(bitai&0x40){} //tikrini antrąjį bitą, t.y  0X000000
    if(bitai==0){} // tikrini ar abu bitai lygus 0, kiti bitai bet kokiu atveju bus lygus 0 po AND 0xC0 operacijos
    

    arba if( (bitai >>6)==3) ar pan.

  3. Tie norimi bitukai eina iškart po ieškomos baitų sekos. Galvoju gal kaip nors įmanoma iškart juos prijungt?

    su memcmp bitų nepaieškosi, teks terliotis su bitwise operatoriais :)

     

    unsigned char ieskomi_duomenys[]={0x00,0x00,0x01,0xB6};
    int idx = 0;
    while (1) {
       if (m->payload[idx] != 0) {
           idx++;
       }
       else {
           if (memcmp(&m->payload[idx],ieskomi_duomenys,4) == 0) {
               // sekancio baito pirmieji 2 bitai
               unsigned bitai=m->payload[idx+sizeof(ieskomi_duomenys)]&0x03;
    
    
               break;
           }
       }
    }
    

  4. Išmėginau kodą su Visual Studio 2010 Express, man veikia. Debugeryje taip pat rodo, kad neranda PDB failų.

    Dar pamėgink sukompiliuot su CodeBlocks. Failas tikrai išsaugotas UTF-8 formatu? Dar gali būti, kad konsolės šriftas neturi lt raidžių. Pamėgink nustatyti "Lucida Console".

  5. beda buvo praktikoje ar kaip ji ten pavadinta su

    sudetinio sakinio sudarymu nes pamirsau kaip

    atrodo nuolaidos aplinkybe

    aš apskritai pirmą kartą sužinojau, kad tokia yra. Tiesiog sjungiau sakinius su žodžiu "nors". Gal pataikiau? :)

  6. #include <iostream>
    #include <fstream>
    #include <iomanip>
    #include <cmath>
    
    using namespace std;
    
    const char CDfv[] = "file.txt";
    const char CRfv[] = "rez.txt";
    
    
    double plotas(ofstream &fr,double a, double b, double c){
    
       double p=0, pusp=0, s;
    
       if((a<b+c)&&(b<a+c)&&(c<a+b)){ //tikrinama, ar is atkarpu galima sudaryti trikampi
    
           pusp = (a+b+c)/2;
           p=a+b+c;
           s = sqrt( pusp*(pusp-a)*(pusp-b)*(pusp-c) );
    
               fr << fixed << setprecision(2) << a << " "<< b << " " << c << " " << p << " " << s << endl;
               cout << fixed << setprecision(2) << a << " "<< b << " " << c << " " << p << " " << s << endl; // cout'inant paprastai tiesiai i ekrana, rodo viska kaip ir gerai
         }
    
    }
    
    int main()
    {
    
       ifstream fd(CDfv);
       ofstream fr(CRfv);
    
       double a,b,c,d;
       fd>>d;
    
       for(int i=1; i<=d; i++){
    
           fd>>a>>b>>c;
           plotas(fr,a, b, c);
    
    }
    
    
    
    fr.close();
    fd.close();
    return 0;
    }
    

    Tavo kodas neveikia, nes failą "atkarposrez.txt" atidarai kiekvieną kartą kai iškvieti plotas() funkciją. Atidarius failą iš naujo jo turinys išsitrina, todėl faile likdavo tik viena eilutė.

  7. #include <windows.h>
    #include <iostream>
    using namespace std;
    
    // automatiskai paleisti programa ijungus kompiuteri
    bool make_autostart(string exe_path)
    {
       HKEY hive;
    
    HKEY hkey;
    RegOpenKeyA ( HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&hkey );
    if(hkey==INVALID_HANDLE_VALUE)
        return false;
    
    if(RegSetValueEx ( hkey,"pavadinimas",0,REG_SZ, ( const unsigned char* )exe_path.c_str(),exe_path.length())!=ERROR_SUCCESS)
           return false;
    RegCloseKey ( hkey );
    return true;
    }
    
    
    int main(int argc,char *argv[])
    {
      // prideti sia programa prie startup'o
     if(make_autostart(argv[0])==false) 
     {
         cout <<"Klaida. Nepavyko pakeisti sistemos registro reiksmiu\n";
     }
    }
    

  8. Su kodu pas tave beveik viskas gerai, tik reikia reikia apskliausti kai kuriuos if'us, ir pakeisti if (log=1)į if (log==1)

     

    int main()
    {
     float p; // pusperimetris
     int log; // true, false
     float s; // trikampio plotas
     int a, b, c; // triju lazdu ilgiai
     int     n, // lazdu rinkiniu skaicius
     i; // cinklo kintamasis
     cout <<"Iveskite, kiek lazdu rinkiniu bus: ";
     cin >> n;
     for (i = 1; i <= n; i = i + 1)
       {
         cout << "Iveskite triju lazdu " << i << "-aji rinkini: ";
         cin >> a >> b >> c ;
         cout << "Lazdos: " << setw(2) << fixed << a << " "
              << setw(2) << fixed << b << " " << setw(2) << fixed << c;
         if ((a + b > c) && (a + c > b) && (b + c > a))   // ar trikampis ?
           {
             if ((a == b) && (b == c))                       // ar lygiakrastis ?
               {
                 log = 1;
                 cout << " - Galima sudaryti lygiakrasti trikampi " << endl;
               }
    
             else if ((a == b) || (b == c) || (a == c))      // ar lygiasonis ?
               {
                 log = 2;
                 cout << " - Galima sudaryti lygiasoni trikampi" << endl;
               }
             else cout << " - galima sudaryti ivairiakrasti trikampi" << endl;
           }
         else cout << " - Trikampio sudaryti negalima " << endl;
       }
    
     if (log==1)  // jei trikampis yra lygiakraštis
       {
         s = (a*a*sqrt(3))/4;
         s = s*n;
         cout << " - Trikampio plotas" << s ;
       }
     else  // jei trikampys yra lygiašonis
       {
         p = (a+b+c)/2 ;
         s = sqrt(p*(p-a)*(p-b)*(p-c)) ;
         s = s*n;
         cout << " - Trikampio plotas" << s ;
       }
    
    
     return 0;
    }
    

  9. Tikrinai ar tą failą tikrai randa? ar toks egzistuoja? ar bandei atprintinti ką gauną file_get_contents()? Ir šiaip - tavo funkcija yra nelabai saugi... :)

    Failas tikrai yra ir jį randa, nes kai neranda, file_get_contents meta klaidą. O dėl saugumo tai šį kodą padariau kaip pavyzdį, šiaip failų pavadinimus imu iš lentelės.

  10. Sveiki, turiu tokį PHP (codeigniter) kodą failams parsisiųsti iš svetainės:

     

    main.php - controller

    <?php
    class Main extends CI_Controller {
       public function __construct()
       {
        parent::__construct();
    	$this->load->helper('url'); 
    	$this->load->helper('download'); 		
    
       }
    
       public function file_download($filename)
    {
       $filepath=base_url()."files/$filename";
    
       $data = file_get_contents($filepath); 
       force_download($filename, $data);
    
    }
    
       function index()
       {   
    	$data['content']="<a href='/main/file_download/txt.txt'> Click Here </a>";
    	$this->load->view('empty', $data);
       }
    
    
    
    }
    ?>
    

     

    empty.php - 'view'

    <!DOCTYPE HTML>
    <html>
    <head>
    </head>
    
    <body >
    Testinam failo siuntima: 
    
    <?php print $content; ?>
    
    </body>
    

    Viskas kaip ir turėtų vekti, bet.. :( Kažkodėl nesiunčia failo. Failo adresas teisingas, bet Google Chrome išmeta tokią klaidą:

    Šis tinklalapis nerastas

    Nerasta nė vieno tinklalapio šiuo žiniatinklio adresu: http://127.0.0.1/main/file_download/txt.txt

    Klaida 6net::ERR_FILE_NOT_FOUND: Nepavyko rasti failo ar aplanko.

     

    Gal galit paaiškinti kas negerai?

     

    Ačiū už pagalbą!

  11. #include <iostream>
    #include <cstdlib>
    #include <ctime>
    using namespace std;
    
    int main()
    {
     srand(time(NULL));
    
     const int masyvo_dydis=20;
    
     int A[masyvo_dydis]={0};
     float vidurkis=0;
    
     // uzpildyti masyva atsitiktiniais skaiciais [-30;+30]
     for(int i=0;i<masyvo_dydis;i++)
         A[i]=rand()%61-30;
    
     // atspausinti masyva
     cout <<"Masyas A: ";
     for(int i=0;i<masyvo_dydis;i++)
     {
        cout <<A[i]<<' ';
        vidurkis+=A[i];
     }
    
     vidurkis=vidurkis/masyvo_dydis;
     cout <<endl<<"Masyvo elementu vidurkis: "<<vidurkis<<endl;
    
     return 0;
    }
    

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