Pereiti prie turinio

Viktorija12345

Nariai
  • Pranešimai

    13
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

Viktorija12345 Pranešimai

  1. struct zmones{
     string vardas;
     string pavarde;
     struct asmens_duomenys{
       int asm_kodas;
       string gyv_vieta;
     }duom; //<-- look
    };
    

     

    Masyvą sukurtum taip: zmones zmogus[100];

    Duomenis keistum taip: zmogus[0].duom.gyv_vieta = "Pineapple under the sea";

    Tavo klaidą buvo ta, kad tu tiesiog apibrėžei naują struktūros tipą struktūroje, bet nedeklaravai jo kaip tos struktūros nario (turbūt negera terminologiją naudoju). Nors šiaip nežinia kokia iš vis buvo tavo problema, bet tikiuosi pataikiau. Manau, kad geriau būtų struktūras apibrėžti taip:

     

    struct asmens_duomenys{
     int asm_kodas;
     string gyv_vieta;
    };
    struct zmones{
     string vardas;
     string pavarde;
     asmens_duomenys duom;
    };
    

     

    Ačiū labai!!! Dabar supratau

  2. Sveiki. Norėjau pasiteirauti kaip reikia apsirašyti struktūrą struktūroje main'e?

    pvz turint tiesiog struktūrą reiktų aprašyti ją taip:

    struct zmones

    {

    string vardas;

    string pavarde

    };

     

    int main()

    {

    zmones zmogus[100];

    return 0;

    }

     

    Tačiau jeigu aš turiu struktūrą struktūroje:

    struct zmones

    {

    string vardas;

    string pavarde

    struct asmens_duomenys

    {

    int asm_kodas;

    string gyv_vieta;

    };

    };

     

    kaip ją apibrėžti main'e? (turi būt, sakykim, 100 zmones stuktūrų ir juose esančių po 100 asmens_duomenys struktūrų)

     

    int main()

    {

    ???

    return 0;

    }

  3. Naudok std::string (tiesiog string, jeigu turi „using namespace std;“). Jis turėtų turėti append ar panašų metodą, kur gali appendinti kiek nori simbolių (t.y., appendinti stringą). Šitoje užduotyje aš naudočiau papildomą stringą (pavadinkime jį result), į kurį vis appendinčiau atitinkamą (pagal Morzės alfabetą) stringą.

     

     

    Maždaug šitaip:

    std::string text = std::string("ABCD"); // Šitą versim į Morzę
    std::string result;
    
    for(int i = 0; i < text.length(); ++i)
    {
     string code = code_for(text[i]) // code_for yra tavo parašyta funkcija, kuri grąžina stringą su simbolio atvaizdavimu Morzės alfabete. Vietoje funkcijos gali naudoti map'ą (http://www.cplusplus.com/reference/map/)
     result.append(code);
    }
    
    std::cout << result << std::endl;
    

     

    Atkreipk dėmesį, kad newline'as, tabas, tarpas irgi yra simboliai, pagalvok kaip juos koduosi: paliksi tą patį simbolį ar ignoruosi – spręsti tau.

     

     

    Mano rule of thumb, programuojant cpp: jeigu įmanoma, nenaudoti C stringų (t.y., char masyvų), o vietoje jų naudoti std::string.

     

    Red: tik dabar pamačiau, kad jau naudoji appendą, tik kita forma: +=. :-)

     

    P.S., kodą dėk tarp [ code ] kodas [/ code ] tagų (be tarpų prieš/po [ ar ]).

    labai ačiū

  4. Ar čia man vaidenasi, ar tu į vieną charą nori sukišti du? Ko gero, todėl ir dingsta vienas simbolis, nes į vieno simbolio vietą tu nori įdėti du simbolius.

    aš dar tik plaukioju paviršium su tais string ir char. o tai kaip tada sukeisti, kad imtų 2 simbolius ar daugiau vietoj vienos raidės ?

  5. Tada Windows-1257 koduotę reikia naudoti, jei būtinas toks taškas. Nors kai mes darėm (jei darėm), tai su paprastu tašku. O kodėl simbolis po to pradingsta - nežinau.

    c++ koduotė tokia nustatyta, o failas pas mane txt tipo. pabandžiau pakeisti į normalų tašką '.', tačiau jį vistiek ignoruoja. Duotas tekstas RYTO RASA rezultatas RYTO R-S-

    #include <iostream>

    #include <fstream>

    #include <string>

    #include <cstdlib>

    #include <iomanip>

    #include <sstream>

    using namespace std;

     

    void skaitymas(string &tekstas)

    {

    ifstream failas;

    failas.open("Duomenys.txt");

    string eilute;

    while(!failas.eof())

    {

    getline(failas,eilute);

    tekstas+=eilute;

    }

    failas.close();

    }

     

    void rasymas(string tekstas)

    {

    ofstream failasR;

    failasR.open("Rezultatai.txt");

    for(int i=0;i<tekstas.length();i++)

    {

    if(tekstas=='A' || tekstas=='a'){tekstas='.-';}

    }

    failasR<<tekstas;

    failasR.close();

    }

     

    int main()

    {

    string tekstas;

    skaitymas(tekstas);

    rasymas(tekstas);

    return 0;

    }

  6. O kam tokio taško? Nes jis kažkoks čiudnas, už ASCII ribų. O C++ su unikodu ir pan. pati nesitvarko, tas "char" yra tiesiog baitas, o ne simbolis iš tikrųjų.

    man reikia raides sukeisti su Morzės abėcėlės simboliais ir ten tarkim A atitinka tą taškiuką ir brūkšniuką

    Beje, labai ačiū, ana programėlė veikia kuo puikiausiai!

  7. Ramiai :) Toks castinimas iš esmės visai nereikalingas - dėl char priskyrimo int'ui komipliatorius nepyksta net su -Wall. Ėmiau ir pataisiau, tai tiek. '6' ir 6 tikrai nėra tas pats.

     

    --

     

    Užtenka funkcijoje vos dviejų vienmačių masyvų - nuskaitai pirmą skaičių, antrą pridedi prie pirmo, tada vėl skaitai į antrą sk., pridedi, ir t.t., kol baigiasi. Tau kompiliatorius aiškina, kad nežino, kiek per vieną matmenį yra elementų. Tai iš esmės sakau, netgi neperdavinėk to dvimačio masyvo, turėk du skaičiavimui, grąžink vieną iš jų ir bus ok.

    o kaip padaryti, kad c++ normaliai išmestų tokius simbolius "·-" nes man parodo tik brūkšnį, o tašką nuslepia

  8. dabar su nuskaitymu viskas gerai, tačiau meta klaidą:

    error: declaration of 'skaicius' as multidimensional array must have bounds for all dimensions except the first|

    error: expected ')' before ',' token|

    error: expected unqualified-id before 'int'|

    (line 6)

  9. Skaityk kaip char ir konvertuok ji i int ,tiksliai nepamenu bet lygtais int skaicius = (int) kintamasischar

     

    P.s masyvas int tipo

    tuoj pabandysiu, o kaip padaryti, jog skaitant failą nenuskaitytu tarpo simbolio. aš naudoju failas.get(skaicius); ir patį pirmą simbolį man nuskaito tarpą, kuris man visai nereikalingas

  10. Susirandi kuris masyvas turi maziau nariu ,cia bus kintamasis n,suki cikla nuo n-ojo nario iki 0(kadangi masyvas nuo 0), sudedi vieno masyvo n-aji nari su kito masyvo n-uoju nariu,jei sudeti skaiciai didesni uz 9 ,tai kitam ciklo etape pridesi 1

    O kaip apsirašyti masyvą, kad į vieną poziciją keltų vieną skaičių? man viskas aišku, tik pati pradžia ne. kokio tipo turi būti kintamieji? su char masyvais sudėti nepavyksta

  11. Sveiki, turiu tokią užduotį:

    Parenkite programą, kuri sudėtų sveikuosius skaičius, sudarytus iš daug skaitmenų. Pirmoje pradinių duomenų failo eilutėje nurodytas skaičių kiekis. Toliau kiekvienoje eilutėje įrašytas sveikasis skaičius, kurio skaitmenų skaičius ne mažesnis kaip 20 ir ne didesnis kaip 80. Prieš kiekvieną skaičių nurodyta, iš kelių skaitmenų jis yra sudarytas.

     

    Pradiniai duomenys

    3

    22 5126717910121751622546

    29 88888888888888888888888888888

    40 2525255125133485451578436833138834387837

     

    Rezultatai

    2525255125222374345594043632149474899271

     

    Nusiskaitau tuos ilgus skaičius į char masyvą ir tuomet nesuprantu kaip tuos simbolius sudėti į vieną? Bandžiau versti į int, bet nelabai kas gavosi. Gal galite padėti??

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