Diskuze: dosazení matic ze souboru txt.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 2 zpráv z 2.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
// 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;
}
Zobrazeno 2 zpráv z 2.