Консультация № 110166
19.11.2007, 15:39
0.00 руб.
0 4 4
Даны целочисленные массивы А[4][6], B[4][6]. для каждого массива определить номер строки с наибольшим количеством положительных элементов.

Плиз помогите сделать это) ток опять же попонятние)))
Зарание СПС)))

Обсуждение

Неизвестный
19.11.2007, 17:54
общий
это ответ
Здравствуйте, Александер Александров!
Ну надеюсь понятно написал!

Приложение:
#include "iostream"using namespace std;void main(void){ int A[4][6]={{-1,3,-4,-6,2,4},{-1,-3,-4,-6,1,2},{1,-3,4,-6,-4,2},{-1,3,4,6,1,2}},//Заводим два масива B[4][6]={{1,3,-4,-6,-2,4},{-1,-3,4,6,-1,2},{1,3,-4,6,4,-2},{1,-3,-4,-6,-1,-2}};//как заводить не указано //поэтому решил так int ma=0,sa=-1,ca,mb=0,sb=-1,cb; //елементы m - это макс кол-во,s - номер стоки, c= кол-во текущей строки for(int x=0;x<4;x++) { ca=0;cb=0;//в начале обнуляем кол-во текущей строки for(int y=0;y<6;y++) { //считаем кол-во if(A[x][y]>=0)ca++; if(B[x][y]>=0)cb++; } //сравниваем с макс, если больше то записываем в макс кол-во и запоминаем номер стоки if(ca>ma){ma=ca;sa=x;} if(cb>mb){mb=cb;sb=x;} } //выводим результат cout<<"Naib col v str A: "<<ma<<" Str# "<<sa<<"\n"; cout<<"Naib col v str B: "<<mb<<" Str# "<<sb<<"\n"; cin.get();}
Неизвестный
19.11.2007, 23:11
общий
это ответ
Здравствуйте, Александер Александров!

Держите:
Массивы взял целочисленные(int).

Приложение:
#include<iostream.h>#include<conio.h>void main(){int A[4][6],B[4][6];int cnt,max;int A_ind,B_ind;int i,j;clrscr();cout<<"Input elemebts of array A: ";for(i=0;i<4;i++) { for(j=0;j<6;j++) { gotoxy(j*6+1,i+2); cin>>A[i][j]; } }cout<<"Input elemebts of array B: ";for(i=0;i<4;i++) { for(j=0;j<6;j++) { gotoxy(j*6+1,i+7); cin>>B[i][j]; } }max=0;for(i=0;i<4;i++) { cnt=0; for(j=0;j<6;j++) { if(A[i][j]>0) { cnt++; } } if(cnt>max) { max=cnt; A_ind=i; } }max=0;for(i=0;i<4;i++) { cnt=0; for(j=0;j<6;j++) { if(B[i][j]>0) { cnt++; } } if(cnt>max) { max=cnt; B_ind=i; } }cout<<"\nV massive A "<<A_ind<<"-ya stroka";cout<<"\nV massive B "<<B_ind<<"-ya stroka";getch();}
Неизвестный
20.11.2007, 03:50
общий
это ответ
Здравствуйте, Александер Александров!
Вот STL вариант решения вашей задачи...

Приложение:
#include <stdlib.h>#include <time.h>#include <vector>#include <algorithm>#include <functional>#include <iostream>using namespace std;typedef vector<vector<int> > matrix;int my_rand() { static const int r_limit = 100; return rand()%(r_limit*2) - r_limit;}int row_with_max_positive_elemnts(const matrix& m) { return 0;}int main(int argc, char* argv[]) { const int n = 4; const int m = 6; matrix A; matrix B; A.resize(n); B.resize(n); int i, j; for(i=0; i<n; i++) { A[i].resize(m); B[i].resize(m); } srand((unsigned) time(NULL)); for(i=0; i<n; i++) { generate(A[i].begin(), A[i].end(), my_rand); generate(B[i].begin(), B[i].end(), my_rand); } cout << "Array A:" << endl; for(i=0; i<n; i++) { for(j=0; j<m; j++) cout << A[i][j] << "\t"; cout << endl; } cout << endl << "Array B:" << endl; for(i=0; i<n; i++) { for(j=0; j<m; j++) cout << B[i][j] << "\t"; cout << endl; } vector<int> v; for(i=0; i<n; i++) v.push_back(count_if(A[i].begin(), A[i].end(), bind2nd(greater<int>(), 0))); cout << endl << "In array A row with index " << distance(v.begin(), max_element(v.begin(), v.end())) << " count of positive elements is maximum" << endl; v.clear(); for(i=0; i<n; i++) v.push_back(count_if(B[i].begin(), B[i].end(), bind2nd(greater<int>(), 0))); cout << "In array B row with index " << distance(v.begin(), max_element(v.begin(), v.end())) << " count of positive elements is maximum" << endl; return 0;}
Неизвестный
20.11.2007, 06:32
общий
это ответ
Здравствуйте, Александер Александров!
Вроде работает (только свои массивы надо ввести)

#include <vcl.h>
#include <conio.h>
#include <stdio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int A[4][6]={{1,-4,-5,4,-7,-3},
{2,4,6,7,-7,6},
{-7,-2,-7,-6,7,1},
{-1,-1,-1,-1,-1,-2}},
B[4][6]={{2,4,6,7,-7,6},
{1,-4,-5,4,-7,-3},
{-7,-2,-7,-6,7,1},
{-1,-1,-1,-1,-1,-2}};
int KolA[4]={0}, KolB[4]={0}, MaxA = 0, MaxB=0, MaxStrA = 0, MaxStrB = 0;
for (int i = 0; i < 4; i++)
{
for (int k = 0; k < 6; k++)
{
if (A[i][k]>0) KolA[i] = KolA[i]+1;
if (B[i][k]>0) KolB[i] = KolB[i]+1;
}
}
for (int i = 0; i < 4; i++)
{
if (KolA[i]>MaxA)
{MaxStrA = i;
MaxA = KolA[i];
}
if (KolB[i]>MaxB)
{MaxStrB = i;
MaxB = KolB[i];
}

}
printf("# строки с масимальным количеством положительных чисел в массиве\n");
printf("A - %d\n", MaxStrA);
printf("B - %d\n", MaxStrB);
getch();
return 0;
}
Форма ответа