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

Вывести номера столбцов, в которых находится более двух простых чисел - C++

Восстановить пароль Регистрация
 
Викулишна
 Аватар для Викулишна
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 28
06.01.2011, 08:50     Вывести номера столбцов, в которых находится более двух простых чисел #1
Задали решить задачу.Сама не справляюсь((((Помогите пожалуйста!
Задана матрица целых чисел А(n,n).вывести номера столбцов в которых находится более двух простых чисел.Найти сумму положительных элементов на периметре матрицы.
Заранее СПАСИБО!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2011, 08:50     Вывести номера столбцов, в которых находится более двух простых чисел
Посмотрите здесь:

C++ Найти порядковые номера двух соседних чисел, сумма которых максимальна.
C++ Все строки матрицы, где находится более двух простых чисел, обнулить
Задана матрица целых чисел A(n,n). Все элементы столбца, с наибольшим номером, среди тех, где находится более двух простых элементов, заменить разно C++
Вывести номера столбцов , в которых находиться более двух простых чисел C++
C++ Номера столбцов в которых находиться более двух простых чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
06.01.2011, 11:01     Вывести номера столбцов, в которых находится более двух простых чисел #2
долго не тестил
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
#include <iostream>
#include<iomanip>
#include<stdio.h>
#include<vector>
using namespace std;
 
int main(){
    int n, m, i, j, sum=0, cou=0;
    cout<<"Chislo strok matrici: n=";
    cin>>n;
    cout<<"\nChislo stolbcov matrici: m=";
    cin>>m;
    int **mat=new int *[n];
    for(i=0;i<n;i++)mat[i]=new int[m];
    cout<<"\n\nEnter elements\n\n";
    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            printf("mat[%d][%d]= ", i, j);
            cin>>mat[i][j];
            if((i==0||i==n-1||j==0||j==m-1)&&mat[i][j]>0) sum+=mat[i][j];
        }
        cout<<endl;
    }
    cout<<"\nSozdana matrica\n\n";
    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            cout<<setw(4)<<mat[i][j]<<" ";
        }
    cout<<"\n\n";
    }
    vector<int>v;
    for(j=0;j<m;j++){
        for(i=0;i<n;i++){
            for(int k=2;k<=mat[i][j];k++){
                if((mat[i][j]%k==0)&&k!=mat[i][j]) break;
                if(k==mat[i][j]) ++cou;
            }
            if(cou>2){
                v.push_back(j);
                cou=0;
                break;
            }
        }
    }
    for(i=0;i<v.size();i++)
        cout<<"\nNomer stolbca: "<<v[i]<<" ";
    cout<<"\n\nsummaPosPerim = "<<sum;
}
vx5
 Аватар для vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
06.01.2011, 11:30     Вывести номера столбцов, в которых находится более двух простых чисел #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
#include <string>
#include <iostream>
 
bool is_prime(int value)
{
  int k=0;
  if(value<=1) return 0;
  for(int i=1;i<value;i++) 
    if(!(value%i)) k++;
  return !bool(k-1);
}
 
int get_int(const std::string& err_mess)
{
  char ch;
  while(std::cin.get(ch) && isspace(ch) && ch=='\n') 
    if(!std::isdigit(ch) && !isspace(ch) && !ch=='\n')
      std::cout << err_mess;
  std::cin.unget();
  int value;
  std::cin >> value;
  return value;
}
 
int** read_matrix(int n,const std::string& err_mess)
{
  int** matrix = new int*[n];
  for(int i=0;i<n;i++)
    {
      matrix[i] = new int[n];
      for(int j=0;j<n;j++)
    matrix[i][j]=get_int(err_mess);
    }
  return matrix;
}  
 
int matrix_sum(int** matrix, int n)
{
  int sum=0;
  for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
      if(matrix[i][j]>0) sum+= matrix[i][j];
  return sum;
}
 
int main()
{
  const std::string err_msg = "Ошибка, введено не число!\n";
 
  std::cout << "Введите размерность квадратной матрицы:\n";
  int n=get_int(err_msg);
  std::cout << "Введите матрицу размерности " << n 
        << " на " << n << "\n";
  int** matrix=read_matrix(n,err_msg);
  
  for(int i=0;i<n;i++)
    {
      int k=0;
      for(int j=0;j<n;j++)
    if(is_prime(matrix[j][i])) k++;
      if(k>1) std::cout << "Столбец №" << i+1 
            << " содержит " << k 
            << " простых чисел\n";
    }
  std::cout << "Сумма элементов матрицы равна " 
                 << matrix_sum(matrix, n) << std::endl;
  delete[] matrix;
}
Викулишна
 Аватар для Викулишна
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 28
06.01.2011, 12:33  [ТС]     Вывести номера столбцов, в которых находится более двух простых чисел #4
Спасибо огромное!!!
Yandex
Объявления
06.01.2011, 12:33     Вывести номера столбцов, в которых находится более двух простых чисел
Ответ Создать тему
Опции темы

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