Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

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

 

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

Featured Replies

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

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

Здравейте, 

 

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

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

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

 

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

 

Поздрави !

  • Автор

Здравейте, 

 

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

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

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

 

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

 

Поздрави !

 

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

                          Например: 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;}

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

 

Поздрави !

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.