• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Macierz, obliczanie iloczynów skalarnych

Object Storage Arubacloud
0 głosów
595 wizyt
pytanie zadane 23 stycznia 2018 w C i C++ przez Halpi Początkujący (300 p.)
edycja 23 stycznia 2018 przez Patrycjerz

Dana jest macierz A[1..M,1..N]. Napisać program, który oblicza iloczyny skalarne: pierwszego i drugiego wiersza, trzeciego i czwartego wiersza, itd. Jeżeli liczba wierszy jest nieparzysta to ostatnim iloczynem będzie iloczyn ostatniego wiersza z nim samym.

Program działa, ale wyniki wychodzą złe, proszę o pomoc.

#include <iostream>
#include <algorithm>
#include <time.h>
#include <functional>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
     srand (time(NULL));
        int m, n;
int iloczyn1,iloczyn2,iloczyn3;
iloczyn1=0;
iloczyn2=0;
iloczyn3=0;
    cout<<"Podaj ilosc wierszy M: "<<endl;
    cin>>m;
    cout<<"Podaj ilosc kolumn N: "<<endl;
    cin>>n;
int tab[m][n];
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
    tab[i][j] = rand()% 10;
    cout << tab[i][j] << " ";
 
}
cout<<endl;
}

    for (int j = 0; j<n; j++)
    {
        iloczyn1+=tab[0][n]*tab[1][n];
        iloczyn2+=tab[2][n]*tab[3][n];
    }
    cout<<"iloczyn pierwszego i drugiego wiersza wynosi: "<<iloczyn1<<endl;
    cout<<"iloczyn trzeciego i czwartego wiersza wynosi: "<<iloczyn2<<endl;
    if (m%2==1)
    {
    for (int j = 0; j<m; j++)
    {
        iloczyn3+=tab[m][n]*tab[m][n];
    }
    cout<<"iloczyn ostatniego wiersza pomnozonego przez jego samego wynosi: "<<iloczyn3<<endl;
    }
    system("pause");
    return 0;
}
komentarz 23 stycznia 2018 przez nik Obywatel (1,640 p.)
To się kompiluj z tak utworzoną tablicą statyczną ?
komentarz 23 stycznia 2018 przez Halpi Początkujący (300 p.)
tak
komentarz 23 stycznia 2018 przez Halpi Początkujący (300 p.)
wypisuje losowe liczby do macierzy, działaja liczba wierszy i kolumn jakie wpiszemy ale zle liczy
komentarz 23 stycznia 2018 przez Halpi Początkujący (300 p.)
nik jesteś mistrzem, dzięki Ci serdecznie!!!

2 odpowiedzi

+1 głos
odpowiedź 23 stycznia 2018 przez nik Obywatel (1,640 p.)

Dobra, poprawione fragmenty kodu :

	for (int j = 0; j<n; j++)
	{
		iloczyn1 += tab[0][j] * tab[1][j];
		iloczyn2 += tab[2][j] * tab[3][j];
	}

/*****************************************************************************/

		for (int j = 0; j<m; j++)
		{
			iloczyn3 += tab[m-1][j] * tab[m-1][j];
		}

 

komentarz 23 stycznia 2018 przez Halpi Początkujący (300 p.)
dzięki nik
komentarz 23 stycznia 2018 przez Halpi Początkujący (300 p.)
mogę wiedzieć jak długo już w c++ urzędujesz albo co polecasz aby się tego nauczyć?
1
komentarz 23 stycznia 2018 przez nik Obywatel (1,640 p.)
http://goalkicker.com/ tutaj masz całkiem dużo fajnych rzeczy
0 głosów
odpowiedź 23 stycznia 2018 przez criss Mędrzec (172,590 p.)

W pierwszej pętli powinno być `j` zamiast `n` - wychodzisz za tablice. No i nie iterujesz po wierszu. Podobnie w drugiej pętli, tylko tam dodatkowo nie wiem dlaczego warunek jest `j<m`. Mam wrażenie, że o tym nie wiesz, więc napisze: ostatni właściwy element tablicy n-elementowej znajduje się pod indeksem (n-1).
Co do zrozumienia zadania: z treści wynika, że masz policzyć iloczyny wszystkich par wierszów, a nie tylko {0,1}, {2, 3} i {dwa ostatnie}. Dodatkowo trzeci iloczyn liczysz tylko gdy liczba wierszy jest nieparzysta. Nie zrozumiałeś albo nie czytałeś treści.

PS: po co ci <functional> i <algorithm>? 
PSS: <time.h> to nagłówek dla C. W C++ mamy <ctime>.

komentarz 23 stycznia 2018 przez Halpi Początkujący (300 p.)
poprawiłem 2 ostatnie pętle i działa bezbłędnie.
komentarz 23 stycznia 2018 przez Halpi Początkujący (300 p.)
edycja 23 stycznia 2018 przez Halpi

Jedak w niektórych przypadkach nie działa, wiecie co ten błąd powoduje?

komentarz 23 stycznia 2018 przez criss Mędrzec (172,590 p.)
Nic nie widać na tym screenie. O co dokładnie chodzi?
komentarz 23 stycznia 2018 przez Halpi Początkujący (300 p.)
proszę sprawdz teraz zrobiłem macierz 3x3 i liczy mi dla trzeciego i czwartego :/

i jeszcze ostatni tak jakbym zrobił macierz 5x5
2
komentarz 24 stycznia 2018 przez criss Mędrzec (172,590 p.)
Liczy ci dla trzeciego i trzeciego tak jak to zakodowałeś. 5*5 + 4*4 + 0*0 = 41
komentarz 24 stycznia 2018 przez Halpi Początkujący (300 p.)
zgadza się ale trzeci i czwarty wiersz? czwartego nie ma nie powinoo to wyskakiwać, da się to naprawić czy średnio?
komentarz 24 stycznia 2018 przez criss Mędrzec (172,590 p.)
Chodzi ci o ten napis? No przecież go wypisujesz. Zawsze, bezwarunkowo.

Podobne pytania

0 głosów
0 odpowiedzi 487 wizyt
pytanie zadane 23 lutego 2020 w C i C++ przez Michał2019 Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 837 wizyt
0 głosów
0 odpowiedzi 553 wizyt
pytanie zadane 25 listopada 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...