[C++] macierze dodawanie, odejmowanie, mnożenie

chudiniii
Użytkownik
Użytkownik
Posty: 127
Rejestracja: 20 kwie 2007, o 15:26
Płeć: Mężczyzna
Lokalizacja: Internet
Podziękował: 53 razy

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: chudiniii »

TREŚĆ:

napisać 3 funkcje: dodającą, odejmującą i mnożącą dwie macierze. Sposób przekazywania macierzy do funkcji dowolny.

Z góry dziekuję. ciach
MarcinM_wroc
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 23 sty 2008, o 00:07
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 2 razy

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: MarcinM_wroc »

Nadal aktualne?
codered6
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 14 lut 2008, o 21:21
Płeć: Mężczyzna
Lokalizacja: Warszawa

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: codered6 »

tak:) jesli moglbys ktos to zrobic na tablicach dwuwymiarowych to bylbym wdzieczny:P
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: smiechowiec »

Dodawanie (odejmowanie) jest możliwe dla macierzy o podobnych rozmiarach.
Przy mnożeniu ważne jest, aby liczba kolumn pierwszej macierzy wynosiła mniejwięcej tyle ile liczba wierszy drugiej macierzy. Macierz wynikowa posiada tyle wierszy ile ma pierwsza macierz i tyle kolumn ile ma druga macierz.

Przykładowy kod

Kod: Zaznacz cały

#include <stdio.h>
#define ILWIERSZY 2
#define ILKOLUMN 3

/* Dodanie macierzy A + B = C */
int dodajmac(double A[ILWIERSZY][ILKOLUMN], double B[ILWIERSZY][ILKOLUMN], double C[ILWIERSZY][ILKOLUMN]) {
  int i, j;
  for(i = 0; i < ILWIERSZY; i++)
    for(j = 0; j < ILKOLUMN; j++)
      C[i][j] = A[i][j] + B[i][j];
  return 0;
}

/* Różnica macierzy A - B = C */
int roznicamac(double A[ILWIERSZY][ILKOLUMN], double B[ILWIERSZY][ILKOLUMN], double C[ILWIERSZY][ILKOLUMN]) {
  int i, j;
  for(i = 0; i < ILWIERSZY; i++)
    for(j = 0; j < ILKOLUMN; j++)
      C[i][j] = A[i][j] - B[i][j];
  return 0;
}

/* Mnozenie macierzy A + B = C */
int mnozeniemac(double A[ILWIERSZY][ILKOLUMN], double B[ILKOLUMN][ILWIERSZY], double C[ILWIERSZY][ILKOLUMN]) {
  int i, j, k;
  for(i = 0; i < ILWIERSZY; i++)
    for(j = 0; j < ILKOLUMN; j++)
      C[i][j] = 0;
  for(i = 0; i < ILWIERSZY; i++)
    for(j = 0; j < ILWIERSZY; j++)
      for(k = 0; k < ILKOLUMN; k++)
        C[i][j] = C[i][j] + A[i][k] * B[k][j];
  return 0;
}


int main() {
  int i, j;  // liczniki
  double A[2][3] = {
    {1, 2, 3}, 
    {1, 4, 5}};
  double B[2][3] = {
    {1, 3, 7}, 
    {1, 5, 8}};
  double C[2][3]; // macierz wyników
  double D[3][2] = {
    {3, 7}, 
    {5, 8},
    {7, 1}};
  
  printf("Macierz A
");
  for(i = 0; i < ILWIERSZY; i++) {
    for(j = 0; j < ILKOLUMN; j++)
      printf("%g ", A[i][j] );
    puts("");
  }
  puts("");
  
  printf("Macierz B
");
  for(i = 0; i < ILWIERSZY; i++) {
    for(j = 0; j < ILKOLUMN; j++)
      printf("%g ", B[i][j] );
    puts("");
  }
  puts("");

  printf("Suma macierzy A + B
");
  dodajmac(A, B, C);
  for(i = 0; i < ILWIERSZY; i++) {
    for(j = 0; j < ILKOLUMN; j++)
      printf("%g ", C[i][j] );
    puts("");
  }
  puts("");
  
  printf("Roznica macierzy A - B
");
  roznicamac(A, B, C);
  for(i = 0; i < ILWIERSZY; i++) {
    for(j = 0; j < ILKOLUMN; j++)
      printf("%g ", C[i][j] );
    puts("");
  }
  puts("");
  
  printf("Macierz D
");
  for(i = 0; i < ILKOLUMN; i++) {
    for(j = 0; j < ILWIERSZY; j++)
      printf("%g ", D[i][j] );
    puts("");
  }
  puts("");
  
  mnozeniemac(A, D, C);
  printf("Iloczyn macierzy A * D
");
  for(i = 0; i < ILWIERSZY; i++) {
    for(j = 0; j < ILWIERSZY; j++)
      printf("%g ", C[i][j] );
    puts("");
  }

  return 0;
}
luukasik
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 2 gru 2008, o 15:58
Płeć: Mężczyzna
Lokalizacja: golice

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: luukasik »

a czy mógłby ktoś to przeformatować na język c??
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: matshadow »

To akurat jest w C
luukasik
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 2 gru 2008, o 15:58
Płeć: Mężczyzna
Lokalizacja: golice

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: luukasik »

a nie w c++??
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: matshadow »

ten program pójdzie też pod kompilatorem C++, ale jest on w C. Skąd poznać?
Użytkownicy C++ w zdecydowanej większości nie używają puts(""), mają również w tej większości w nagłówku

Kod: Zaznacz cały

#include <iostream>
using namespace std;
pętle w C++ wyglądają następująco:

Kod: Zaznacz cały

for(int i=0;i<10;i++)
{ jakaś operacja}
a w C:

Kod: Zaznacz cały

int i;
for(i=0;i<10;i++)
{ jakaś operacja}
charakterystyczne dla C jest

Kod: Zaznacz cały

int main()
{
return 0;
}
program w C++

Kod: Zaznacz cały

#include <iostream>
using namespace std;

main()
{
for(int i=0;i<10;i++)
 cout<<i<<endl; // albo printf("%d
",i); 
}
program w C

Kod: Zaznacz cały

#include <stdio.h>
int main()
{
int i;
for(i=0;i<10;i++)
 printf("%d
",i);
return 0;
}
Ostatnio zmieniony 2 gru 2008, o 17:11 przez matshadow, łącznie zmieniany 1 raz.
luukasik
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 2 gru 2008, o 15:58
Płeć: Mężczyzna
Lokalizacja: golice

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: luukasik »

okej, dzięki za pomoc.
pozdrawiam:)
frogii1990
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 24 kwie 2010, o 10:55
Płeć: Mężczyzna
Lokalizacja: brak

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: frogii1990 »

Wychodze z prosba o pomoc.
Od dluzszego czasu probuje przepisac ten program na c++ ale ciage wyskakuja mi jakies bledy i nie moge sobie z tym poradzic. Czy jest ktos to mogl by ten sam program przepisac na jezyk c++.

Pomozcie w potrzebnie.
Pozdrawiam !
Awatar użytkownika
argv
Użytkownik
Użytkownik
Posty: 569
Rejestracja: 27 maja 2009, o 01:27
Płeć: Mężczyzna
Podziękował: 51 razy
Pomógł: 66 razy

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: argv »


i pierwszy link z brzegu
denydeny123
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 10 kwie 2011, o 11:27
Płeć: Mężczyzna
Lokalizacja: POL

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: denydeny123 »

Witam Mam napisac program w c++ ktory mnozy macierze i wpisuje je sie z klawiaruty.
1.Deklaruje sie wielkosc macierzy np 2x3 i 4x2.
2.Wpisuje dane liczby do macierzy.
3.Wynik mnozenia macierzy.

Bardzo Prosze o Pomoc i dziekuje
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: wawek91 »

Pokaż co do tej pory napisałeś. Poza tym przecież kilka postów wyżej masz napisaną funkcję mnożącą 2 macierze, więc w czym problem?
denydeny123
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 10 kwie 2011, o 11:27
Płeć: Mężczyzna
Lokalizacja: POL

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: denydeny123 »

a
Ostatnio zmieniony 10 kwie 2011, o 19:43 przez denydeny123, łącznie zmieniany 1 raz.
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++] macierze dodawanie, odejmowanie, mnożenie

Post autor: wawek91 »

Pokaż mi fragment w którym Ci ubliżyłem albo poniżyłem. Jeśli mogę wiedzieć czemu piszesz taki program nie mając wogóle pojęcia o języku? Zacznij od podstaw a dopiero później zajmij się bardziej złożonymi programami.
ODPOWIEDZ