Diskuze: dosazení matic ze souboru txt.

Člen

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;
}
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.