Wczytywanie ciagow liczb

0

Witam, mam problem z którym nie potrafię sobie poradzić. Chodzi o to ze mam wczytywać z pliku po 3 liczby . Plik wyglada w taki sposob: (2,5,7),(4,6,8),(1,2,3). Kazdy ciag 3 liczbowy jest oddzielony nawiasem a po nawiasie występuje przecinek. Nie mogę nic wymyślić żeby pozbyć się tych nawiasów oraz przecinków (wszystko kończy się błędem albo wyjątkiem).

1
rixis321 napisał(a):

Witam, mam problem z którym nie potrafię sobie poradzić. Chodzi o to ze mam wczytywać z pliku po 3 liczby . Plik wyglada w taki sposob: (2,5,7),(4,6,8),(1,2,3). Kazdy ciag 3 liczbowy jest oddzielony nawiasem a po nawiasie występuje przecinek. Nie mogę nic wymyślić żeby pozbyć się tych nawiasów oraz przecinków (wszystko kończy się błędem albo wyjątkiem).

Pokaż kod, który już masz.

4
#include <iostream>
using namespace std;

int main() {
	char ch;
	int pos = 0;
	int a, b, c;
	while(cin >> ch) {
		int varno = ((pos % 8) + 1) / 2;
		int value = ch - '0';
		if (((pos % 8) & 1) && (varno < 4)) {
			switch(varno) {
				case 1: a = value; break;
				case 2: b = value; break;
				case 3: {
					c = value; 
				    cout << "a: " << a << ", b: " << b << ", c: " << c << "\n";
				    break;
				}    
			}
		}
		pos++;
	}
	return 0;
}

https://ideone.com/CwRwNL

1

Witam.

Proszę trzymaj kod @rixis321

#include<iostream>
#include<fstream>
using namespace std;
class program
{
public:
    program();
    ~program();
    void show()const;
    void format(char znak);
private:
string dane;
fstream plik;
};
int main()
{
program *obj=new program();
obj->format('(');
obj->format(')');
obj->format(',');
obj->show();
delete obj;
}
program::program()
{
plik.open("liczby.txt",ios::in);
if(plik.good())
{
   while(getline(plik,dane))
   {
    cout<<dane<<endl;
   }
}


}
program::~program()
{
plik.close();

}
void program::show()const
{
   cout<<dane<<endl;
}
void program::format(char znak )
{
int pozycja=0;
string::size_type tym;
while(pozycja<this->dane.size())
{
    tym=this->dane.find(znak,pozycja);
    if(tym!=string::npos)
    {
       this->dane.erase(tym,1);
    }
    pozycja++;
}

}

Życzę miłego dnia. Pozdrawiam serdecznie.

3

Myślałem, że wszyscy uszanują:

katakrowa napisał(a):

Pokaż kod, który już masz.

żeby nie promować lenistwa.

Tymczasem, widzę kody, na których lepiej się nie wzorować, a pytający mógłby je uznać za dobre.
Tylko z tego powodu zamieszczam, swój kod:
https://godbolt.org/z/T8sn39

struct Data
{
    int a, b, c;
};

std::istream& operator>>(std::istream& in, Data& d)
{
    char open, close, comma1, comma2;
    if (in >> open >> d.a >> comma1 >> d.b >> comma2 >> d.c >> close) {
        if (open != '(' || close != ')' || comma1 != ',' || comma2 != ',') {
             in.setstate(std::ios::badbit);
        }
    }
    return in;
}

int main()
{
    Data a;
    while (std::cin >> a) {
        std::cout << "a:" <<a.a << " b:" << a.b << " c:" << a.c << '\n';
        char sep;
        std::cin >> sep;
        if (sep != ',') break;
    }
    
    return 0;
}

Pisane na szybko, więc jest jeszcze miejsce na poprawki.

0

Kurde liczylem na jakies podpowiedzi w zwiazku z pisaniem kodu. Dziękuję wszystkim za odpowiedzi udało mi się to ogarnąć z wasza pomocą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1