Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 10 ] 
AutorSpráva
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok NapísalOffline : 29.12.2012 15:53

Zdravím.Mám textový súbor a v ňom sú zapísané čísla.Potrebujem vypočítať súčet týchto čísiel ,ale iba v jednotlivých riadkoch.Riadky sú rôznej dĺžky.
Napadli ma dva spôsoby ako túto úlohu riešiť:
1. Uložiť si ich do poľa spôsobom f >> pole[100].Tu ale mám problém ,že neviem otestovať kedy nastane koniec riadku.Nič také ,ako if(f == '\n') nefunguje.
2. Pomocou príkazu getline si ich uložiť do stringu. Lenže následne neviem ako dané čísla z toho stringu mám vytiahnuť aby som ich mohol spočítať.
.... Prosím o radu.Ďakujem.


Offline

Užívateľ
Užívateľ
Testovanie konca riadku v textových súboroch (c++)

Registrovaný: 06.11.08
Prihlásený: 06.09.21
Príspevky: 3091
Témy: 84
Bydlisko: Trnava
Príspevok NapísalOffline : 29.12.2012 16:07

A čo tak čítať súbor po znakoch? Vtedy by ti mal zareagovať na podmienku s '\n'.


Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 29.12.2012 16:40

Veď to je ten prvý spôsob,čo som skúšal.Ja si načítavam čísla po jednom a zapisujem si ich postupne do poľa...... nezáleží na tom či ich dávam do poľa ,alebo ich vypisujem priamo po znaku.Tá podmienka s '\n' proste nefunguje.


Offline

Užívateľ
Užívateľ
Testovanie konca riadku v textových súboroch (c++)

Registrovaný: 06.11.08
Prihlásený: 06.09.21
Príspevky: 3091
Témy: 84
Bydlisko: Trnava
Príspevok NapísalOffline : 29.12.2012 16:49

A prečo pole? Nestačí premenná typu char?

//I keď s polom by sa potom možno lepšie robilo ...


Offline

Užívateľ
Užívateľ
Testovanie konca riadku v textových súboroch (c++)

Registrovaný: 14.05.08
Prihlásený: 16.06.23
Príspevky: 99
Témy: 14
Bydlisko: Prievidzaaa...
Príspevok NapísalOffline : 29.12.2012 17:28

Nie som si istý ako je to v C++ ale malo by to byť podobné ako v C:
Máš dve možnosti:

1. buď si to uložíš do stringu ako si povedal a potom budeš vo "for" cykle prirátavať do nejak premennej každú hodnotu až kým x != '\n', pričom k jednotlivým indexom stringu budeš pristupovať cez riadiaciu premennú cyklu (typicky "i").
2. alebo nemusíš mať žiaden string a budeš tie údaje priamo čítať zo súboru, pričom pokým tá hodnota nie je '\n' tak to pripočítaš do sumy.
A ak sa rovná novému riadku tak si vytvoríš premennú sum pre nový riadok a zase ideš od začiatku.

predpokladám že pracovať so súbormi vieš :)







_________________
MB: MSI Z170I GAMING PRO AC CPU: i-5 6600K @3.50GHz GPU: MSI GeForce GTX 970 GAMING 4G RAM: 2x 8GB DDR4 3600 MHz PSU: EVGA 750G2 SSD: SAMSUNG 850 EVO 250GB HDD: 2TB Keyboard: Logitech G915 Mouse: Logitech G502 Audio: Microlab SOLO 9C + Kingston HyperX Cloud Alpha
Offline

Skúsený užívateľ
Skúsený užívateľ
Testovanie konca riadku v textových súboroch (c++)

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 29.12.2012 19:03

Prilis to komplikujete. Staci precitat konkretny riadok do premennej typu string a potom:

Kód:
#include <iostream>
#include <sstream>

using namespace std;

int main()
{

    int             tmp, result = 0;
    istringstream   line("10 11 12 33");    /*  v tejto premennej budes mat nacitany konkretny riadok, s ktorym chces pracovat, tuna
                                                su nahodne cisla len pre ilustraciu */

    while ( !line.eof() )
    {
        line >> tmp;
        result += tmp;
    }

    cout << result << endl;
    return 0;
}







_________________
Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS.
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 31.12.2012 17:40

Robil som to tým systémom,ako to ukazoval "fico".Pochopil som ako to funguje,lenže aj tak neviem prísť na to ,akú chybu mám v mojom kóde.Môj program mi dokáže správne vypísať prvý riadok na obrazovku a vypočítať súčet prvkov v prvom riadku.Pri opakovaní cyklu pre dalšie riadky to nefunguje.....

Kód:
   
    fstream f;
    string str;
    stringstream riadok;
    int sucet = 0,i;
   
    f.open("vstup.txt");
   
    while( ! f.eof() ){
        getline(f,str);
        riadok << str;
        cout << riadok.str();
        while( ! riadok.eof() ){
               riadok >> i;
               sucet = sucet + i;
        }
        cout << " - Sucet prvkov v riadku je " << sucet << endl;
        riadok.str("");
        sucet = 0;
        i = 0; 
    }
   
    f.close();


Ked ale odstránim z kódu tú časť cyklu,kde počítam súčet riadku ,tak mi ten program správne vypíše na obrazovku všetky riadky...Vedel by niekto poradiť kde mám chybu?Dúfam že som to dobre vysvetlil...


Offline

Užívateľ
Užívateľ
Testovanie konca riadku v textových súboroch (c++)

Registrovaný: 27.12.08
Prihlásený: 13.12.22
Príspevky: 1874
Témy: 96
Bydlisko: Bratislava,...
Príspevok NapísalOffline : 01.01.2013 1:08

http://www.cplusplus.com/reference/sstr ... tream/str/ :
Citácia:
Notice that setting a new string does not clear the error flags currently set in the stream object unless the member function clear is explicitly called.

EOF je tzv. "error flag" stream-u, tym, ze vymenis string v stringstream-e, sa nezmazu error flag-y, pokial je nastaveny nejaky error flag, stream sa nesprava tak ako by sa mal spravat, musis ich zmazat volanim riadok.clear();







_________________
~Listen to your brain, not your heart~
NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot)
NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI)
Offline

Užívateľ
Užívateľ
Testovanie konca riadku v textových súboroch (c++)

Registrovaný: 14.03.11
Prihlásený: 02.08.23
Príspevky: 814
Témy: 23
Bydlisko: Bratislava
Príspevok NapísalOffline : 04.01.2013 17:02

Hmmm nespočítava to číslice? A nebolo zadanie spočítať čísla?


Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 16.01.2013 22:51

Po dlhšom čase sa znova ozývam,kedže som sa k tomu až teraz dostal... bude to asi posledna vec čo budem potrebovať ,za ostatne rady ďakujem. dajme tomu že takto sú zapísané čísla v mojom súbore
Kód:
2 -3 8 5 0
3 5 1
2 -2 3 1 7 6
5 -3 15 0 1

Keď ich chcem však vypísať na obrazovku ,posledné číslo sa mi vypíše dvakrát:
Kód:
2 -3 8 5 0
3 5 1
2 -2 3 1 7 6
5 -3 15 0 1 1

Kód:
    int a;
    string str;
    stringstream riadok;
   
    while ( ! f.eof() )     
    {
          getline(f,str);
          riadok << str;   
          while( !riadok.eof() ){
                      riadok >> a;
                      if(f.eof()){
                                  break;
                      }
                      else{
                           cout << a << " ";
                      }
               }
               cout << endl;
               riadok.clear();
               riadok.str("");
         
    }
   
    f.close();


skúšal som aj také niečo ako if(f.eof() && riadok.eof()) ... ale nič také nefunguje ..ďakujem


Odpovedať na tému [ Príspevkov: 10 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. C Testovanie prvočíselnosti

v Assembler, C, C++, Pascal, Java

4

690

23.10.2011 13:50

PipoPP Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. testovanie prvku pola char [C++]

v Assembler, C, C++, Pascal, Java

6

482

06.07.2010 8:09

koso Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C - viac vstupov v 1 riadku

v Assembler, C, C++, Pascal, Java

2

331

01.02.2016 20:14

faraon Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ Hlavickovy subor vs Hlavickovy subor s CPP suborom (Alebo deklaracia a definicia tried v1 alebo 2och suboroch)

v Assembler, C, C++, Pascal, Java

5

611

19.06.2017 21:16

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zoznam textovych suborov

v Ostatné programy

2

308

07.08.2013 15:06

nBXXL Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Drupal 7 - Sprava textovych formatov

v Redakčné systémy

2

442

13.07.2012 1:12

Strýco Mat Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ruská vízia konca sveta

v Spoločnosť, politika, psychológia, filozofia, náboženstvo

25

1599

17.11.2012 0:35

silentasflash Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Info o súboroch

v PHP, ASP

2

452

07.02.2008 20:09

tatysp Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Virus v systemovych suboroch

v Antivíry a antispywary

5

329

26.09.2014 19:49

Mandy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Identifikovanie elementov v php súboroch

v HTML, XHTML, XML, CSS

8

273

16.05.2014 7:27

don jebot Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém s zobrazením skrytých súboroch

v Operačné systémy Microsoft

4

532

21.12.2008 21:09

OmeGa Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Rocnikova praca v suboroch (Pascaaaaal)

v Assembler, C, C++, Pascal, Java

17

1551

02.06.2007 16:17

audiotrack Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Do konca mesiaca nás bude 7 mld

v Spoločnosť, politika, psychológia, filozofia, náboženstvo

24

1425

31.10.2011 20:55

NesTon Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Open office popisky V xls suboroch

v Ostatné programy

0

317

01.06.2015 21:01

04Miro84 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PC s predinštalovanými XP iba do konca roka

v Novinky

14

599

13.04.2007 19:56

johny128 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Masívne zvyšovanie kapacity HDD Seagate do konca dekády

v Novinky

1

498

20.03.2012 13:04

delong Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra