IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: dosazení matic ze souboru txt.

Aktivity
Avatar
ondra.482
Člen
Avatar
ondra.482:17.2.2014 15:16

Ahoj, mám problém s tím, že sa nemohu domluvit s textákem, aby mi dosadil pouze jednu číslici ze souboru. Děkuju za jakoukoliv radu.
// soucet matic.cpp
// 10.12.2013
// soucet matic rozmeru m x n

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;

int main()
{
cout << "*** Soucet matic ***\n\n";
cout << "Zadejte rozmery matic\n";
int m,n; // pocet radku a sloupcu matic
int const chyba =1;

const int radek = 100; // max. pocet radku matic
const int sloupec = 100; // max. pocet sloupcu matic
double a[radek] [sloupec]; // matice A
double b[radek] [sloupec]; // matice B
double c[radek] [sloupec]; // matice vysledku C = A+B

cout << "pocet radku m: ";
ifstream fin ("matice.txt");

if (!fin) // nastala chyba pri otevirani souboru?
{ // ano, vypis chybove hlaseni
cout << "Soubor nelze otevrit pro cteni.\n";
system ("pause");
return chyba; // ukonci funkci a vrat chybovy kod
}
// chyba nenastala, cteni znaku ze souboru
string line; // buffer pro radek souboru
int poloha = 0; // poloha oddelovace v retezci
int delka = 0; // zjisteni delky retezce
int polohazac = 0;
string ret1 = " "; // retezce pro jednotlive polozky radku

// odradkuj

while (getline(fin, line)) // dokud nenarazis na konec souboru, tak precti radek
{
// zpracovani radku po blocich pomoci metody assign
cout << line << endl; // vypis radku na obrazovku
polohazac = 0; // poloha zacatku retezce
delka = line.length(); // zjisteni delky retezce
poloha = line.find(" "); // najdi pozici carky

ret1.assign(ra­dek,polohazac,po­loha-polohazac); // zkopiruj retezec po carku
// metode assign se zadava
// nazev retezce, ze ktereho se kopiruje
// pozice ve retezci, od ktere se kopiruje
// pocet kopirovanych znaku

polohazac = poloha+1; // poloha zacatku dalsiho retezce je az za carkou
poloha = line.find_fir­st_of(" ",polohazac);
}
cout << "pocet sloupcu n: ";
cin >> n;
cout << "\nZadejte matici A\n";
for (int i=0;i<m;i++)
{
for (int j=0; j<n; j++)
{
cout << "a(" << i<< "," << j << "): ";
cin >> a[i] [j];
}
}
cout << "\nZadejte matici B\n";
for (int i=0;i<m;i++)
{
for (int j=0; j<n; j++)
{
cout << "b(" << i<< "," << j << "): ";
cin >> b[i] [j];
}
}
// cyklus pro soucet matic C = A + B
for (int i=0;i<m;i++)
{
for (int j=0; j<n; j++)
{
c[i] [j]= a[i] [j] + b[i] [j];
}
}
// vypis matic A a B po radcich
for (int i=0;i<m;i++)
{
for (int j=0; j<n; j++)
{
//cout << "c(" << i<< "," << j << ")=";
cout << a[i] [j] << " ";
}
cout << endl;
}
cout << endl;

for (int i=0;i<m;i++)
{
for (int j=0; j<n; j++)
{
//cout << "c(" << i<< "," << j << ")=";
cout << b[i] [j] << " ";
}
cout << endl;
}
cout << endl;
// vypis matice C po radcich
for (int i=0;i<m;i++)
{
for (int j=0; j<n; j++)
{
//cout << "c(" << i<< "," << j << ")=";
cout << c[i] [j] << " ";
}
cout << endl;
}
cout << endl;

system("pause");
return 0;
}

 
Odpovědět
17.2.2014 15:16
Avatar
ondra.482
Člen
Avatar
ondra.482:17.2.2014 15:17
// soucet matic.cpp
// 10.12.2013
// soucet matic rozmeru m x n

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;

int main()
{
        cout << "*** Soucet matic ***\n\n";
        cout << "Zadejte rozmery matic\n";
        int m,n;        // pocet radku a sloupcu matic
        int const chyba =1;

        const int radek = 100;  // max. pocet radku matic
        const int sloupec = 100;        // max. pocet sloupcu matic
        double a[radek] [sloupec];      // matice A
        double b[radek] [sloupec];      // matice B
        double c[radek] [sloupec];      // matice vysledku C = A+B

        cout << "pocet radku m: ";
        ifstream fin ("matice.txt");

        if (!fin)                                       // nastala chyba pri otevirani souboru?
        {       // ano, vypis chybove hlaseni
                cout << "Soubor  nelze otevrit pro cteni.\n";
                system ("pause");
                return chyba;   // ukonci funkci a vrat chybovy kod
        }
        // chyba nenastala, cteni znaku ze souboru
        string line;                            // buffer pro radek souboru
        int poloha = 0;                         // poloha oddelovace v retezci
        int delka = 0;                          // zjisteni delky retezce
        int polohazac = 0;
        string ret1 = " ";                      // retezce pro jednotlive polozky radku

                                        // odradkuj

        while (getline(fin, line))      // dokud nenarazis na konec souboru, tak precti radek
        {
                // zpracovani radku po blocich pomoci metody assign
        cout << line << endl;   // vypis radku na obrazovku
        polohazac = 0;                          // poloha zacatku retezce
        delka = line.length();          // zjisteni delky retezce
        poloha = line.find(" ");                // najdi pozici carky

        ret1.assign(radek,polohazac,poloha-polohazac);  // zkopiruj retezec po carku
        // metode assign se zadava
        // nazev retezce, ze ktereho se kopiruje
        // pozice ve retezci, od ktere se kopiruje
        // pocet kopirovanych znaku

        polohazac = poloha+1;           // poloha zacatku dalsiho retezce je az za carkou
        poloha = line.find_first_of(" ",polohazac);
        }
        cout << "pocet sloupcu n: ";
        cin >> n;
        cout << "\nZadejte matici A\n";
        for (int i=0;i<m;i++)
        {
                for (int j=0; j<n; j++)
                {
                        cout << "a(" << i<< "," << j << "): ";
                        cin >> a[i] [j];
                }
        }
        cout << "\nZadejte matici B\n";
        for (int i=0;i<m;i++)
        {
                for (int j=0; j<n; j++)
                {
                        cout << "b(" << i<< "," << j << "): ";
                        cin >> b[i] [j];
                }
        }
        // cyklus pro soucet matic C = A + B
        for (int i=0;i<m;i++)
        {
                for (int j=0; j<n; j++)
                {
                        c[i] [j]= a[i] [j] + b[i] [j];
                }
        }
        // vypis matic A a B po radcich
        for (int i=0;i<m;i++)
        {
                for (int j=0; j<n; j++)
                {
                        //cout << "c(" << i<< "," << j << ")=";
                        cout << a[i] [j] << " ";
                }
                cout << endl;
        }
        cout << endl;

        for (int i=0;i<m;i++)
        {
                for (int j=0; j<n; j++)
                {
                        //cout << "c(" << i<< "," << j << ")=";
                        cout << b[i] [j] << " ";
                }
                cout << endl;
        }
        cout << endl;
        // vypis matice C po radcich
        for (int i=0;i<m;i++)
        {
                for (int j=0; j<n; j++)
                {
                        //cout << "c(" << i<< "," << j << ")=";
                        cout << c[i] [j] << " ";
                }
                cout << endl;
        }
        cout << endl;

        system("pause");
        return 0;
}
 
Nahoru Odpovědět
17.2.2014 15:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.