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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
#1

Определить количество столбцов с неповторяющимися элементами в двумерном массиве - C++

23.10.2011, 00:35. Просмотров 440. Ответов 2
Метки нет (Все метки)

подскажите алгоритм для того, как посчитать столбцы, в которых все элементы отличаются(с неповторяющимися элементами) для Си
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2011, 00:35     Определить количество столбцов с неповторяющимися элементами в двумерном массиве
Посмотрите здесь:

Различное количество строк и столбцов в двумерном массиве - C++
Здравствуйте! Нужно, чтобы пользователь мог задать количество столбцов и строк в двумерном массиве; Пытался как для одномерного через new...

В двумерном массиве найти среднее арифметическое первого столбца и количество элементов в каждом из следующих столбцов - C++
В двумерном массиве найти среднее арифметическое первого столбца и количество элементов в каждом из следующих столбцов, превышающих среднее...

В двумерном массиве определить количество строк, не содержащих отрицательных элементов - C++
В двумерном массиве определить количество строк, не содержащих отрицательных элементов.

В двумерном массиве определить количество строк, содержащих элементы равные -47 - C++
1. В двумерном массиве, элементами которого являются целые числа, подсчитать среднее арифмитическое элементов кратных 31. 2. В...

Нужно определить, есть ли в двумерном массиве столбец, в котором равное количество положительных и отрицательных элементов - C++
Нужно определить, есть ли в двумерном массиве столбец, в котором равное количество положительных и отрицательных элементов и вывести их...

Зануление столбцов в двумерном массиве - C++
Разработать функцию зануления столбца в двумерном массиве. Занулить 3 столбца, результат вывести на печать. Собственно код: #include...

Сортировка столбцов в двумерном массиве - C++
{ int a; int row, col; int i, j; printf( "Enter sizes of matrix: \n" ); ...

Замена столбцов в двумерном массиве - C++
Дана матрица размера M x N. Поменять местами столбцы, содержащие минимальный и максимальный элементы матрицы.

Поиск элементов строк и столбцов в двумерном массиве - C++
Добрый вечер, дорогие форумчане! Имеется такая проблема. Мне необходима функция поиска элементов в двумерном массиве по строкам и...

Множество с неповторяющимися элементами - C++
При вводе нескольких одинаковых чисел, множество должно принимать только одно это число. #include<iostream> using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.10.2011, 10:49     Определить количество столбцов с неповторяющимися элементами в двумерном массиве #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
#include <stdio.h>
 
#define ROWS 5
#define COLS 5
 
int main() {
    int matrix[ROWS][COLS] = { 0 };
    int unique_cnt = 0;
    int unique = 0;
    int i = 0;
    int j = 0;
    int k = 0;
 
    for (i = 0; i < ROWS; ++i) {
        for (j = 0; j < COLS; ++j)
            scanf("%d", &matrix[i][j]);
    }
 
    for (j = 0; j < COLS; ++j) {
        unique = 1;
        for (i = 0; i < ROWS && unique; ++i) {
            k = i + 1;
            while (k < ROWS && matrix[i][j] != matrix[k][j]) 
                ++k;
 
            unique = (k == ROWS);
        }
 
        unique_cnt += unique;
    }
 
    for (i = 0; i < ROWS; ++i) {
        for (j = 0; j < COLS; ++j)
            printf("%2d ", matrix[i][j]);
        printf("\n");
    }
 
    printf("unique cols = %d\n", unique_cnt);
    return 0;
}
letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
24.10.2011, 11:36  [ТС]     Определить количество столбцов с неповторяющимися элементами в двумерном массиве #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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#define n1 5
#define m1 10
#define n2 7
#define m2 11
#define MAX_n 7
#define MAX_m 11
 
int mas_ind(int mas[][MAX_m],int,int);
int mas_rad(int *mas,int,int);
 
int main() {
int i, j, n,m,BLA,BLA2;
int mas[MAX_n][MAX_m];
char answer;
 
//--------vibor massiva=> 5X10 ili 7X11----------------------//
while (1)
{
printf("Kakuju matricu ispoljzovatj?!\n\t1-5X10 \n\t2-7x11\n");
switch(getchar()) {
 case '1' :n=n1;
           m=m1;
            break;
 case '2': n=n2;
           m=m2;
           break;
 
 case'3': exit(0);
 break;
//------------------------------------------------------------//
                    default:
                    printf("oshibka...\n");
                    getch();
                    break;
                   }
}
        getchar();
 //--------vibor metoda zapolnenija massiva-------------------//
    printf("Budem zapolnjatj vruchnuju?!\n\t1-vru4nuju \n\t2-randomno\n");
    //--------------------------------------------------------//
    switch(getchar())
    {              //----------------------------------//
     while(answer!=1&&answer!=2) {
        case '1' : for(i=0; i<n; i++)
                   {
                     for(j=0; j<m; j++)
                     {
                       printf("mas[%d][%d]=", i+1,j+1);
                       scanf("%d",&mas[i][j]);
                     }
                   }
 
                   break;
                   //----------------------------------//
        case '2':  srand(time(0));
                   for(i = 0; i < n; i++)
                   {
                     for(j = 0; j < m; j++)
                     {
                       mas[i][j]= rand()%100;
                     }
                   }
 
                   break;
                   //----------------------------------------------//
        default:   printf("oshibka...\n");
                   printf("mas[%d][%d]=%d\n", i+1, j+1, mas[i][j]);
                   }//konec cikla
 
    }//------------------------------------------------------------//
 
    for(i = 0; i < n; i++)
    {
        for(j=0; j<m; j++)
        {
            printf("%5i", mas[i][j]);
        }
 
        printf("\n");
    }
    
    BLA=mas_ind(mas,n,m);
    BLA2=(&mas[MAX_n][MAX_m],n,m);
    printf("koli4estvo stolbcov(indeks) = %i\n\n",BLA);
    printf("koli4estvo stolbcov(ukazatelj) = %i",BLA2);
    //-------------------------------//
        getch();
        
        return 0;
}
//-------------------------indeksi-----------------------------//
int mas_ind(int mas[][MAX_m],int n, int m)
{
  int i,j,ii,jap,kol;
  kol=0;
  for (j=0;j<m;j++)
  {
      jap=0;
      for (i=0;i<n;i++)
      {
          for (ii=i+1;ii<n;ii++)
          {
              if(mas[i][j]==mas[ii][j])
                {jap=1; break;
                }
          }
      }
      if (jap==0)
        kol++;
  }
  return kol;
}
 
//-------------------------ukazateli-----------------------------//
int mas_rad(int *mas,int n, int m)
{
  int i,j,ii,jap,kol;
  kol=0;
  for (j=0;j<m;j++)
  {
      jap=0;
      for (i=0;i<n;i++)
      {
          for (ii=i+1;ii<n;ii++)
          {
              if(*(mas+i+j*n)==*(mas+ii+j*n))
                {jap=1; break;
                }
          }
      }
      if (jap==0)
        kol++;
  }
  return kol;
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru