Премини към съдържанието
ARCS

Умножение по стълбове на квадратна матрица

Препоръчан отговор


Здравейте, моля някой да ми напише една функцийка, за намиране на умножението по стълбове на квадратна матрица Ако има такъв. Благодаря Публикувано изображение 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Здравейте, моля някой да ми напише една функцийка, за намиране на умножението по стълбове на квадратна матрица Ако има такъв. Благодаря Публикувано изображение 

Здравейте, 

 

Зададен по този начин, въпроса е много неточен:

- Какво означава "намиране на умножението" - самата операция, резултата или алгоритъма на извършване ?

- "Умножение по стълбовете" е нещо, което за първи път чувам.

 

Моля, проверете валидните операции с матрици тук и уточнете какво Ви трябва. След това ще подходим с общ размисъл как да реализираме и самия код, който Ви е необходим.

 

Поздрави !

  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Здравейте, 

 

Зададен по този начин, въпроса е много неточен:

- Какво означава "намиране на умножението" - самата операция, резултата или алгоритъма на извършване ?

- "Умножение по стълбовете" е нещо, което за първи път чувам.

 

Моля, проверете валидните операции с матрици тук и уточнете какво Ви трябва. След това ще подходим с общ размисъл как да реализираме и самия код, който Ви е необходим.

 

Поздрави !

 

Това е моята задача, аз искам да добавя и това!

                          Например: 2     3       4

                                            3      4       7

                                            4      3       1

           Умножението    е:   24    36    28  

Тоест да умножава всеки елемент на колоната.

 

#include<iostream>

#include<iomanip>

#include<conio.h>

using namespace std;

const int rows = 3;

const int columns = 4;

void ReadMatrix (float a[rows][columns])

{int r,c;

cout<<endl<<"Vavejdane stoinosti za red"<<endl;

for(r=0; r<rows; r++)

{cout<<endl<<"------------------------------";

cout<<endl<<"Stoinostti za colona "<<(r+1)<<"; ";

for(c=0; c<columns; c++)

{do

{cout<<endl<<"Vavedi stoinost za red "<<(c+1)<<"; ";

cin>>a[r][c];

}while (a[r][c]<1||a[r][c]>9);

}

}

}

void WriteMatrix(float a[rows][columns], float grade[rows])

{int r, c;

cout<<endl<<"==========================;

cout<<endl<<"Spisakat e: ";

for(r=0; r<rows; r++)

{cout<<endl;

for(c=0; c<columns; c++)

cout<<setw(5)<<a[r][c]<<" ";

cout<<" Sumata na reda e: "<<setw(5)<<grade[r];

}

}

 

void FindScore (float sq[rows][columns], float grade[rows])

{

int i, j;

for (i=0; i<rows; i++)

{grade=0;

for (j=0; j<columns; j++)

grade += sq[j];

grade=grade;

}

}

 

void main()

{ float a[rows][columns], G[rows];

ReadMatrix(a);

FindScore(a,G);

cout<<endl<<"Uspehat e izchislen! ";

WriteMatrix(a,G);

system("pause");

}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Здравейте, 

 

Мисля, че успях да Ви разбера - искате да направите произведението на всички елементи от даден стълб (поне по примера, който сте дал).

Ще приложа промените си, директно върху Вашия код.

#include<iostream>#include<iomanip>#include<conio.h>using namespace std;const int rows = 3;const int columns = 4;void ReadMatrix (float a[rows][columns]){int r,c;cout<<endl<<"Vavejdane stoinosti za red"<<endl;for(r=0; r<rows; r++)       {cout<<endl<<"------------------------------";             cout<<endl<<"Stoinostti za colona "<<(r+1)<<"; ";for(c=0; c<columns; c++){do{cout<<endl<<"Vavedi stoinost za red "<<(c+1)<<"; ";cin>>a[r][c];}while (a[r][c]<1||a[r][c]>9);}}}void WriteMatrix(float a[rows][columns], float grade[rows]) // Този метод трябва да има нова дефиниция: void WriteMatrix(float a[rows][columns], float grade[rows], float multiplication[columns]){int r, c;cout<<endl<<"==========================";cout<<endl<<"Spisakat e: ";for(r=0; r<rows; r++){cout<<endl;for(c=0; c<columns; c++)       cout<<setw(5)<<a[r][c]<<" ";cout<<" Sumata na reda e: "<<setw(5)<<grade[r];}//Допълвате със следния код://cout << "n================================" << endl;//for(c=0; c<columns; c++)//       cout<<setw(5)<<multiplication[c]<<" ";}void FindScore (float sq[rows][columns], float grade[rows]) // Метода трябва да се промени на: void FindScore (float sq[rows][columns], float grade[rows], float multiplication[columns]){       int i, j;       //Правите "зануляване" на масива multiplication с 1-ца       //for (j = 0; j < columns; j++)                //               multiplication[j] = 1;       for (i=0; i<rows; i++)       {grade[i]=0;       for (j=0; j<columns; j++) // Тук трябва да се направи вече блок: добавяте {             grade[i] += sq[i][j];             //Допълвате тук с multiplication[j] *= sq[i][j];                               // След което затваряте блока: добавяте }       grade[i]=grade[i];     // А това защо го правим ?!       }}void main(){ float a[rows][columns], G[rows]; // Тук добавяме и M[columns]ReadMatrix(a);FindScore(a,G);   // Това става FindScore(a,G,M);cout<<endl<<"Uspehat e izchislen! ";WriteMatrix(a,G); // Това трябва да стане WriteMatrix(a,G,M);system("pause");}

Надявам се това да резултата, който желаете да постигнете. 

 

Поздрави и успех !

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Здравейте, 

 

Мисля, че успях да Ви разбера - искате да направите произведението на всички елементи от даден стълб (поне по примера, който сте дал).

Ще приложа промените си, директно върху Вашия код.

#include<iostream>#include<iomanip>#include<conio.h>using namespace std;const int rows = 3;const int columns = 4;void ReadMatrix (float a[rows][columns]){int r,c;cout<<endl<<"Vavejdane stoinosti za red"<<endl;for(r=0; r<rows; r++)       {cout<<endl<<"------------------------------";             cout<<endl<<"Stoinostti za colona "<<(r+1)<<"; ";for(c=0; c<columns; c++){do{cout<<endl<<"Vavedi stoinost za red "<<(c+1)<<"; ";cin>>a[r][c];}while (a[r][c]<1||a[r][c]>9);}}}void WriteMatrix(float a[rows][columns], float grade[rows]) // Този метод трябва да има нова дефиниция: void WriteMatrix(float a[rows][columns], float grade[rows], float multiplication[columns]){int r, c;cout<<endl<<"==========================";cout<<endl<<"Spisakat e: ";for(r=0; r<rows; r++){cout<<endl;for(c=0; c<columns; c++)       cout<<setw(5)<<a[r][c]<<" ";cout<<" Sumata na reda e: "<<setw(5)<<grade[r];}//Допълвате със следния код://cout << "n================================" << endl;//for(c=0; c<columns; c++)//       cout<<setw(5)<<multiplication[c]<<" ";}void FindScore (float sq[rows][columns], float grade[rows]) // Метода трябва да се промени на: void FindScore (float sq[rows][columns], float grade[rows], float multiplication[columns]){       int i, j;       //Правите "зануляване" на масива multiplication с 1-ца       //for (j = 0; j < columns; j++)                //               multiplication[j] = 1;       for (i=0; i<rows; i++)       {grade[i]=0;       for (j=0; j<columns; j++) // Тук трябва да се направи вече блок: добавяте {             grade[i] += sq[i][j];             //Допълвате тук с multiplication[j] *= sq[i][j];                               // След което затваряте блока: добавяте }       grade[i]=grade[i];     // А това защо го правим ?!       }}void main(){ float a[rows][columns], G[rows]; // Тук добавяме и M[columns]ReadMatrix(a);FindScore(a,G);   // Това става FindScore(a,G,M);cout<<endl<<"Uspehat e izchislen! ";WriteMatrix(a,G); // Това трябва да стане WriteMatrix(a,G,M);system("pause");}

Надявам се това да резултата, който желаете да постигнете. 

 

Поздрави и успех !

Благодаря получи се!

 

 

А можете ли да ми кажете къде греша в тази задача !

(Условие: Шефът следи сметките на подчинените си. Всеки подчинен има номер. Когато някой подчинен купи нещо стойността на покупката се записва в масив. Накрая се извежда отчет, съдържащ номера на всеки подчинен, сумата от направените покупки):

#include<iostream>

#include<conio.h>

using namespace std;

const int n=100;

void func1(double klient[n], int & i)

{ do{

char a = getche();

do{

if(a=='1') novklient(klient[n],i)

if(a=='2') novapokupka(klient[n],i)

if(a=='3') spravka(klient[n],i)

while(a!='4');

}

while(a<'1'||a>'4');}

}

 

void novklient(double klient[n],int&i)

{if(i<n)

{i++;

cout<<"Vavedete suma na pokupkata za nomer klient N: "<<i<<"klient"<<endl;

cin>>klient;}

else cout<<"veche imate "<<n<< "klient"<<endl;

}

 

void novapokupka(double klient[n],int&i)

int b;

{ cout<<" Vavedete za koi klient ste vavejdate"<<endl;

do{cin>>int a;}

while(a<0||a>i);

cout<<"Vavedete suma "<<endl;

cin>>double b;

klient[a] += b;}

 

void spravka(double klient[n],int&i)

double sum=0;

for(int a=0; a<=i; a++)

{suma += klient[a];

cout<<a<<" "<<klient[n];}

cout<<suma<<endl;

cout<<suma/i<<endl;

 

int main()

{ klient[n]; int i=0;

func1(klient[n],i);

system("pause");

return 0;

}


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

А можете ли да ми кажете къде греша в тази задача !

Ами ... почти навсякъде ...

(Условие: Шефът следи сметките на подчинените си. Всеки подчинен има номер. Когато някой подчинен купи нещо стойността на покупката се записва в масив. Накрая се извежда отчет, съдържащ номера на всеки подчинен, сумата от направените покупки):

#include<iostream>#include<conio.h>using namespace std;const int n=100;void func1(double klient[n], int & i){ do{       char a = getche();       do{             if(a=='1') novklient(klient[n],i) // функция се извиква с грешен тип данна - трябва да е масив, а се подава double число. Липсва ;             if(a=='2') novapokupka(klient[n],i)// Като горното             if(a=='3') spravka(klient[n],i) // Като горното                                  while(a!='4'); // Ъ-ъ ?! Това защо е ?!       } // Май горния ред трябва да е тука ?!             while(a<'1'||a>'4');} // променливата a вече няма видимост тук !} void novklient(double klient[n],int&i){if(i<n){i++;cout<<"Vavedete suma na pokupkata za nomer klient N: "<<i<<"klient"<<endl;cin>>klient[i];}else cout<<"veche imate "<<n<< "klient"<<endl;} void novapokupka(double klient[n],int&i) // Къде започва тялото на метода ?! Къде е {        int b; // Каква е тази плаваща дефиниция на променлива ?!{ cout<<" Vavedete za koi klient ste vavejdate"<<endl;do{cin>>int a;} // Би било страхотно, ако с дефинирането можехме и да въвеждаме, ама уви - тука това е невалидно.while(a<0||a>i);cout<<"Vavedete suma "<<endl;cin>>double b; // И тука няма как да стане ...klient[a] += b;} void spravka(double klient[n],int&i) //Къде е { ?       double sum=0;  // Отново плаваща дефиниция на нещо ...for(int a=0; a<=i; a++){suma += klient[a]; // Няма дефинирана променлива suma - има sum !cout<<a<<" "<<klient[n];}cout<<suma<<endl; // Като горното ...cout<<suma/i<<endl; //Като горното ...     // Метода не се затваря никъде ... Липсва }int main(){ klient[n]; int i=0; // Какъв тип масив е klient ?! int, double, short, Node ? Според кода, трябва да е doublefunc1(klient[n],i); // Пак не се вика метода с правилния тип на параметъра - трябва да е масив от double данни, а не double променливаsystem("pause");return 0;}

Този код има нужда от мнооооого сериозна поправка. Не се компилира съм сигурност, трябва да се поправи и след това да се провери кое точно е проблема и кое не му работи както трябва.  Моля, преправете го, за да може да се компилира, според идеята Ви и след това ще продължим с конкретните проблеми по неговото изпълнение.

 

Поздрави !

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.