SeweXIN Temat założony przez niniejszego użytkownika |
Wczytanie z pliku tekstowego macierzy, następnie mnożenie ich i zapisanie wyniku do innego pliku tekstowego. » 2016-05-26 19:41:25 Witam wszystkich bardzo serdecznie. Pisze tutaj ponieważ zaczynam dopiero programować w c# i c++. Dawniej tylko pascal. Mam problem ponieważ nie wiem jak wczytać macierze z pliku tekstowego które zostały wygenerowane przez użytkownika w innym osobnym programie.
Następnie musze je także pomnożyć i zapisać w innym pliku. (w senise wynik mnożenia)
tu zamieszczam program w którym generuje macierze i zapisuje je do pliku.
#include "stdafx.h" #include <iostream> #include <cstdlib> #include <fstream> #include <conio.h> #include <stdio.h> using namespace std;
ifstream plik; int main() { int tab1[10][10], tab2[10][10], wysokosc1, wysokosc2, szerokosc1, szerokosc2; ofstream plik; plik.open("C:\\Users\\a\\macierz.txt");
printf("Podaj szerokosc dla macierzy 1 \n"); scanf_s("%d", &szerokosc1); printf("Podaj wysokosc dla macierzy 1 \n"); scanf_s("%d", &wysokosc1); printf("Podaj szerokosc dla macierzy 2 \n"); scanf_s("%d", &szerokosc2); printf("Podaj wysokosc dla macierzy 2 \n"); scanf_s("%d", &wysokosc2);
if (szerokosc1 != wysokosc2) { printf("Nie mozna pomnozyc macierzy \n"); _getch(); plik.close(); return EXIT_FAILURE; }
printf("Podaj wartosci dla macierzy 1 \n"); for (int i = 0; i < wysokosc1; i++) { if (i != 0) plik << "\n"; for (int j = 0; j < szerokosc1; j++) { scanf_s("%d", &tab1[j]); plik << tab1[j] << " "; } } plik << "\ndruga"; printf("Podaj wartosci dla macierzy 2 \n"); for (int i = 0; i < wysokosc2; i++) { plik << "\n"; for (int j = 0; j < szerokosc2; j++) { scanf_s("%d", &tab2[j]); plik << tab2[j] << " "; } } plik.close(); return EXIT_SUCCESS; }
Czy mógłby mi ktoś pomóc? Z góry dziękuje. |
|
mateczek |
» 2016-05-26 19:59:55 kod wstawiaj w znaczniki [cpp] tutaj kod c++ [/cpp]
|
|
carlosmay |
» 2016-05-26 20:32:47 Zdecyduj się na jeden język. |
|
mateczek |
» 2016-05-26 21:03:09 ponieważ douczając się na temat konstruktorów przenoszących i przenoszących operatorów przypisania. Akurat bawiłem się w mnożenie macierzy. Więc mogę wrzucić kod. kod jest trochę na wyrost ale jeśli chcesz przeglądnąć, potestować. #include <iostream> #include<fstream> using namespace std; class matrix { int * tab = nullptr; int wiersze = 0, kolumny = 0; public: friend ostream & operator <<( ostream & s, matrix & m ); matrix( int w, int k ) : wiersze( w ) , kolumny( k ) { cout << "jestem konstruktor" << endl; int rozmiar = w * k; tab = new int[ rozmiar ]; } matrix() { } ~matrix() { if( tab ) { delete[] tab; tab = nullptr; } } int & operator ()( int w, int k ) { return tab[( w - 1 ) * kolumny + k - 1 ]; } int row() { return wiersze; } int column() { return kolumny; } matrix & operator =( matrix && wzor ); matrix( matrix && wzor ); matrix( const matrix & wzor ); matrix operator *( matrix & m ); matrix & operator =( const matrix & wzor ); };
matrix & matrix::operator =( matrix && wzor ) { cout << "jestem operator przenoszenia" << endl; std::swap( wzor.tab, tab ); std::swap( wiersze, wzor.wiersze ); std::swap( kolumny, wzor.kolumny ); return * this; } matrix::matrix( matrix && wzor ) { cout << "jestem konstruktor przenoszący" << endl; tab = wzor.tab; wiersze = wzor.wiersze; kolumny = wzor.kolumny; wzor.tab = nullptr; }
matrix::matrix( const matrix & wzor ) { cout << "jestem konstruktor kopiujący" << endl; wiersze = wzor.wiersze; kolumny = wzor.kolumny; int rozmiar = wiersze * kolumny; tab = new int[ rozmiar ]; for( int i = 0; i < rozmiar; i++ ) { tab[ i ] = wzor.tab[ i ]; } }
matrix & matrix::operator =( const matrix & wzor ) { cout << "jestem operator przypisania" << endl; wiersze = wzor.wiersze; kolumny = wzor.kolumny; int rozmiar = wiersze * kolumny; if( tab ) delete[] tab; tab = new int[ rozmiar ]; for( int i = 0; i < rozmiar; i++ ) { tab[ i ] = wzor.tab[ i ]; } return * this; }
matrix matrix::operator *( matrix & m ) { if( kolumny != m.wiersze ) throw "nie pomnozysz takich macierzy"; matrix temp( wiersze, m.kolumny ); for( int w = 1; w <= temp.wiersze; w++ ) { for( int k = 1; k <= temp.kolumny; k++ ) { int element = 0; for( int i = 1; i <= kolumny; i++ ) element += operator ()( w, i ) * m( i, k ); temp( w, k ) = element; } } return temp; }
ostream & operator <<( ostream & s, matrix & m ) { for( int w = 1; w <= m.wiersze; w++ ) { for( int k = 1; k <= m.kolumny; k++ ) { s << m( w, k ) << " "; } s << endl; } return s; } int main() { matrix m1( 5, 5 ); matrix m2( 5, 4 ); for( int w = 1; w <= m1.row(); w++ ) { for( int k = 1; k <= m1.column(); k++ ) { m1( w, k ) = 1; } } cout << m1 << endl; for( int w = 1; w <= m2.row(); w++ ) { for( int k = 1; k <= m2.column(); k++ ) { m2( w, k ) = 2; } } cout << m2 << endl; matrix m3; try { m3 = m1 * m2; } catch( char const * p ) { cout << p << endl; return 0; } cout << m3 << endl; ofstream plik( "wynik.txt" ); plik << m3; return 0; } |
|
SeweXIN Temat założony przez niniejszego użytkownika |
» 2016-05-26 22:35:17 Kod ten napisałem w Visual Studio 2013, najlepiej gdyby ktoś podpowiedział jak to zrobić w C# |
|
carlosmay |
» 2016-05-26 23:29:54 C# jest językiem obiektowym. Czy na pewno chodzi o C#, czy czysty język C? To co napisał @mateczek jest dobrym punktem wyjścia w kierunku programowanie oo. |
|
mateczek |
» 2016-05-27 00:04:34 c# - https://pl.wikipedia.org/wiki/C_Sharp C++ - https://pl.wikipedia.org/wiki/C%2B%2B C - https://pl.wikipedia.org/wiki/C_%28j%C4%99zyk_programowania%29
1. Tą klasę do mnożenia macierzy 2D napisałem w c++ (w celach auto-edukacyjnych).
2. Twój fragment kodu wygląda na surowe C!!! nie zaś C#
3. C# nie znam gdyż. Ja większość czasu spędzam na LINUX a "c#" jest pomysłem Microsoftu. A co za tym idzie na Linux miał bym z tego kiepski pożytek.
4. C# bardziej przypomina Javę (Bo kod kompilowany do kodu pośredniego i jest odpalany na wirtualnej maszynie) Języki "c++" oraz "c" są kompilowane do kodu maszynowego.
Reasumując Twój post wygląda tak: Dajesz przykład kodu w czystym C. A pytasz o c# i c++. Stąd podejrzenie, że nie bardzo się jeszcze orientujesz w tym co chcesz osiągnąć (znaczy mylą Ci się języki programowania) |
|
SeweXIN Temat założony przez niniejszego użytkownika |
» 2016-05-27 10:46:38 mateczek masz racje, jest to surowe C. sorry ale jak pisałem dopiero zaczynam programować więc wybaczcie za błędy. |
|
« 1 » 2 3 |