Форум программистов, компьютерный форум CyberForum.ru

массивы - C++

Восстановить пароль Регистрация
 
Red_Shoeheart
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 12
18.05.2010, 20:08     массивы #1
такой вопрос

меня интересует как из матрицы выделить простые числа

а это вся задача:

характеристикой столбца целочисленной матрицы назовем сумму элементов, являющихся простыми числами. упорядочить столбцы матрицы по убыванию их характеристик
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2010, 20:08     массивы
Посмотрите здесь:

массивы C++
Массивы C++
C++ С++ массивы
C++ Массивы
C++ Массивы
C++ массивы
C++ Массивы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
18.05.2010, 20:13     массивы #2
Вот вам пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool test (int i, int j) // принимаются индексы посылаемого элемента.
{
    for (int i=2; i<MAS[i][j]; i++)
        if (MAS[i][j]%i==0) return true;
    return false;
}
 
int main ()
{
    for (int i=0; i<Row; i++)
        for (int j=0; j<Column; j++)
        if (test(MAS[i][j])) count++;
        
    //
    //
    //
    return 0;
}
Red_Shoeheart
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 12
20.05.2010, 22:47  [ТС]     массивы #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <ctime>
#include <iomanip>
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int row,column;
        std::cout << "enter rows number: ";
        std::cin >> row;
        std::cout << "enter columns number: ";
        std::cin >> column;
 
        int **MAS = new int *[row];
        for (int i = 0; i < row; i++)
        MAS[i] = new int [column];
 
        srand(time(NULL));
        std::cout << "native matrix: " << std::endl;
        for (int i=0; i<row; i++) 
        {
                for (int j=0; j<column; j++) 
                {
                        MAS[i][j]=rand() % 21 - 10;
                        std::cout << std::setw(3) <<MAS[i][j] ; 
                }
                std::cout << std::endl;
        }
 
        int *MAS_neg=new int [column];    
        int number;
        
        for (int i=0; i<column; i++)
        {
                number=0;
                for (int j=0; j<row; j++)
                if ((MAS[j][i]%2==0)||(MAS[j][i]%3==0)||(MAS[j][i]%5==0)||(MAS[j][i]%7==0)) number+=1; // находим кол-во отрицатлеьных элементов,
        
                MAS_neg[i]=number;
        } 
 
        int t;
        for (int i=0; i<column -1; i++)
    for (int j=i+1; j<column; j++)
            if (MAS_neg[i]<MAS_neg[j])
                {
                                t=MAS_neg[i];       
                                MAS_neg[i]=MAS_neg[j];
                                MAS_neg[j]=t;
                                for (int k=0; k<row; k++)
                                {    
                                        t=MAS[k][i];     
                                        MAS[k][i]=MAS[k][j];
                    MAS[k][j]=t;
                                }
                }
 
        std::cout << "sorted matrix: " << std::endl;
        for (int i=0; i<row; i++)  
        {
                for (int j=0; j<column; j++)
                        std::cout << std::setw(3) <<MAS[i][j];  
 
                std::cout << std::endl;
        }
         for (int i = 0; i < row; i++)
        delete []MAS[i];
        delete []MAS;
        delete []MAS_neg;
 
    system("pause");
    return 0;
}

неправильно переставляет столбцы, в чем ошибка?

Добавлено через 2 часа 46 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
uses crt;
const n=6;
      m=5;
function Prost(z:integer):boolean;{функция логического типа, определяет простое или нет}
var i:integer;
begin
for i:=2 to round(sqrt(z))do{делим число по порядку от 2 до корня из числа, дальше нет смысла}
if z mod i=0 then {если на что-то делится}
   begin
     Prost:=false; {то не простое}
     break;
   end;
end;
 
var a:array[1..n,1..m]of integer;
    b:array[1..m]of integer;
    i,j,l,sm,x,y:integer;
begin
clrscr;
randomize;
writeln('Ishodnaia matrica:');
for i:=1 to n do
  begin
    for j:=1 to m do
       begin
       a[i,j]:=random(40)+1;
         write(a[i,j]:4);
       end;
      writeln;
  end;
for j:=1 to m do {идем по столбцам вправо}
   begin
      sm:=0;
      for i:=1 to n do {идем по столбцу вниз}
        begin
          if Prost(a[i,j]) then {если простое}
          sm:=sm+a[i,j];{суммируем}
          b[j]:=sm;  {заносим в массив}
        end;
   end;
for i:=1 to m-1 do
for j:=i+1 to m do
if b[i]<b[j] then {по убыванию сумм}
   begin
    x:=b[i]; {сортируем массив сумм}
    b[i]:=b[j];
    b[j]:=x;
    for l:=1 to n do
     begin
       y:=a[l,i]; {сортируем в строках, переставляем столбцы}
       a[l,i]:=a[l,j];
       a[l,j]:=y;
     end;
   end;
Writeln('Rrzultat:');
for i:=1 to n do
   begin
     for j:=1 to m do
     write(a[i,j]:4);
     writeln;
   end;
writeln('Harakteristiki stolbcov:');
for i:=1 to m do
write(b[i]:4);
readln
end.

надоело с тем кодом возиться. вот полностью рабочий, только одна загвоздка - он на паскале
интерпретируйте пожалуйста
Yandex
Объявления
20.05.2010, 22:47     массивы
Ответ Создать тему
Опции темы

Текущее время: 10:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru