Načítanie matice zo súboru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Načítanie matice zo súboru – C / C++ – Fórum – Programujte.comNačítanie matice zo súboru – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
16. 12. 2013   #1
-
0
-

Čaute ľudia :) 

potreboval by som malý help v c++ potrebujem toto naprogramovat :)

Napíšte program, ktorý načíta dve matice zo súboru vstup.txt. V
prvom riadku súboru sa nachádzajú dve čísla reprezentujúce počet riadkov a
stĺpcov matíc, ktoré sú v ďalších riadkoch súboru. Program vypíľe do konzoly
a zapíľe do súboru vystup.txt:
 -obidve načítané matice,
 -súčet načítaných matíc,
 -počet prvočísel v jednotlivých maticiach.
 

NEJAKO TAKTO

 vstup.txt
3 4
1 -3 8 2
3 10 1 0
2 -2 3 1


3 3 1 2
1 1 1 -3
-2 2 2 8

vystup.txt
Nacitana matica A:
1 -3 8 2
3 10 1 0
2 -2 3 1
Nacitana matica B:
3 3 1 2
1 1 1 -3
-2 2 2 8
Sucet matic A a B:
4 0 9 4
4 11 2 -3
0 0 5 9
Pocet prvocisel v matici A: 4
Pocet  prvocisel v matici B: 5
Pocet prvocisel v matici A+B: 2

Stacilo by mi aj nejaky kusok spravit kto by si trufol velmi budem vdacny :)
 

Nahlásit jako SPAM
IP: 46.227.176.–
Reklama
Reklama
Kent0
Stálý člen
17. 12. 2013   #2
-
0
-

#1 DušanDinoZzo
ja by som to riešil tak, že by som si najprv prečítal tie prvé dve čísla v súbore, ktoré reprezentujú počet riadkov a stĺpcov..potom dynamicky alokoval dve dvojrozmerné polia a po znakoch čítal súbor a hneď kontroloval či je prečítané číslo prvočíslo..keď prečítaš prvý riadok tak zvýšiš index riadkov o jeden a znova čítaš ďalší riadok..

keď zistíš, že index riadkov a zároveň stĺpcov sa rovná tým dvom číslam, ktoré si načítal na začiatku tak vieš, že máš načítanú prvú maticu..a s druhou spravíš to isté..až na to, že tam máš nejaké prázdne riadky medzi tými dvoma maticami takže to musíš nejak "preskočiť". Súčet matíc je už jednoduchá vec. Good luck :) 

Nahlásit jako SPAM
IP: 178.253.134.–
17. 12. 2013   #3
-
0
-

#2 Kent
jasné,díki za radu :) pustím sa do toho,potom sem hodím výsledok...

Nahlásit jako SPAM
IP: 46.227.176.–
DušanDinoZzo
~ Anonymní uživatel
4 příspěvky
17. 12. 2013   #4
-
0
-

#2 Kent
Vedel by si prosím ťa poslať zdroják na čítanie tých matíc zo súboru ? ?

Nahlásit jako SPAM
IP: 46.227.176.–
Kent0
Stálý člen
17. 12. 2013   #5
-
0
-

#4 DušanDinoZzo

na začiatku otvoríš súbor, odtestuješ správnosť otvorenia, alokuješ dve dynamické polia A[m][n], B[m][n]..pričom "m" je počet riadkov a "n" je počet stĺpcov..vytvoríš si dve pomocné premenné, z ktorých jedna bude na riadky a druhá na stĺpce a v dvoch cykloch for čítaš zo súboru..prvý for cyklus budeš mať na riadky a druhý na stĺpce, resp. na posun v riadku od 0-tého prvku po n-tý..myslím, že to nie je ťažké :) skús niečo napísať a hoď to sem :)
Síce ja kódim v Cčku ale ak náhodou tak možno na dačo prídeme :) 

Nahlásit jako SPAM
IP: 178.253.134.–
paya0
Newbie
20. 12. 2013   #6
-
0
-

 Co treba...

#include <cassert>
#include <fstream>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

namespace ublas = boost::numeric::ublas;

template<typename T>
std::istream& operator>>(std::istream& in,
        ublas::matrix<T> &matrix)
{
    size_t n_rows, n_cols;
    in >> n_rows >> n_cols;
    matrix.resize(n_rows, n_cols);
    for (size_t i = 0; i < n_rows; ++i)
        for (size_t j = 0; j < n_cols; ++j) in >> matrix(i, j);
    return in;
}


int main()
{
    ublas::matrix<double> A;

    std::fstream f;
    f.open("matrix.txt", std::fstream::in);
    assert(f.is_open());

    f >> A;

    f.close();

    std::cout << A << std::endl;
}
Nahlásit jako SPAM
IP: 37.48.38.–
++C > C++
25. 12. 2013   #7
-
0
-

Vyriešené :)) len mi tam chýba ten výpis prvočísiel... ak by mal niekto návrh ako na to sem s ním :)) 

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>

using namespace std;

int main() {
    ifstream vstup;
    ofstream vystup;
    string riadok;
    int riadky, stlpce, i = 0, x = 0, j, cislo;
    vector < vector < int > > matica1;
    vector < vector < int > > matica2;
    
    vstup.open("vstup.txt", ios::in);

    if (vstup.is_open()) {
        vstup >> riadky >> stlpce;

        // Dynamicke vytvorenie matic
        matica1.resize(riadky);
        for (size_t i = 0 ; i < riadky; i++) matica1[i].resize(stlpce);
        matica2.resize(riadky);
        for (size_t i = 0 ; i < riadky; i++) matica2[i].resize(stlpce);

        // Nacitanie matic
        while (getline(vstup, riadok)) {
            if (riadok == "") continue;
            else {
                istringstream iss(riadok);

                // Prva matica
                if (i < riadky) {
                    j = 0;
                    while (iss >> cislo) {
                        matica1[i][j++] = cislo;
                    }
                    i++;
                }
                // Druha matica
                else {
                    j = 0;
                    while (iss >> cislo) {
                        matica2[x][j++] = cislo;
                    }
                    x++;
                }
            }
        }

        vstup.close();

        vystup.open("vystup.txt", ios::out);

        // Zapiseme udaje
        vystup << "Nacitana matica A: \n";
        for (i = 0; i < riadky; i++) {
            for (j = 0; j < stlpce; j++) {
                vystup << matica1[i][j] << " ";
            }
            vystup << "\n";
        }

        vystup << "\nNacitana matica B: \n";
        for (i = 0; i < riadky; i++) {
            for (j = 0; j < stlpce; j++) {
                vystup << matica2[i][j] << " ";
            }
            vystup << "\n";
        }
        
        vystup << "\nSucet matic A a B: \n";
        for (i = 0; i < riadky; i++) {
            for (j = 0; j < stlpce; j++) {
                vystup << matica1[i][j] + matica2[i][j] << " ";
            }
            vystup << "\n";
        }

        vystup.close();
    }
    else cout << "Subor sa nepodarilo otvorit.";

    return 0;
}

Nahlásit jako SPAM
IP: 46.227.176.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 129 hostů

Podobná vlákna

Program nacitanie matice — založil pcmaker

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý