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

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

Войти
Регистрация
Восстановить пароль
 
Dispa
1 / 1 / 0
Регистрация: 13.06.2011
Сообщений: 16
#1

Двумерный массив. Программу написать используя указатели и строковые функции. - C++

15.11.2011, 21:35. Просмотров 559. Ответов 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
#include <iostream.h>
int num (int **a, const int n, const int m);
void sum (int **b, const int k, const int r);
int main () {
int i, j, str, stb;
cout<<"Vvedite chislo strok i stolbzov matrizi\n";
cin>>str>>stb;
int **mas=new int*[str];
for (i=0; i<str; i++)
for (j=0; j<stb; j++)
cin>>*(*(mas+i)+j);
cout<< "Nomer stolbza" << num (mas, str, stb);
//sum (**b, k, r);
//cout<<"Preobraz massiv: \n"<<endl;
//for(i=0; i<str; i++) {
//for (j=0; j<stb; j++) {
// cout << endl (Эта запись нужна,чтоб вывести в виде таблицы, красиво массив, куда ее поставить,я не знаю()
//cout<< *(*(mas+i)+j) << " ";
//}}
return 0;
}
int num (int **a, const int n, const int m) {
int ii, jj, q=0;
for (ii=0; ii<n; ii++)
for (jj=0; jj<m; jj++)
if (a[ii][q=jj]==0)
return (q+1);
}
//void sum (int **b, const int k, const int r) {
//   int pp, ff, e, sum=0, temp;
//   int aa[pp]={0};
//   for (pp=0; pp<k; pp++) {
//
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 21:35     Двумерный массив. Программу написать используя указатели и строковые функции.
Посмотрите здесь:

Используя функции сформировать с помощью генератора случайных чисел двумерный массив и вывести его на экран C++
C++ построить двумерный массив вещественных чисел. (Нужно написать программу!)
Составить программу обработки двухмерного массива используя указатели и функции... C++
C++ Написать программу, которая вводит двумерный массив с клавиатуры...
Нужно написать программу(Двумерный массив) в Visual Studio 2008 C++
Написать программу копирования строки T в строку S, используя указатели. C++
C++ Написать программу используя функции
Написать код используя массивы, указатели, виртуальные функции, наследование, классы и т.д C++
C++ Написать программу сортировки через указатели на указатели
C++ Используя оператор цикла While, написать программу для вычисления значений функции Y
C++ Написать программу "Военкомат" используя указатели, функции и динамическую память
Написать программу умножения ряда нечётных натуральных чисел от 1 до 21, используя указатели C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Svinina
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
15.11.2011, 21:44     Двумерный массив. Программу написать используя указатели и строковые функции. #2
А что требуется от нас то?=)
Dispa
1 / 1 / 0
Регистрация: 13.06.2011
Сообщений: 16
15.11.2011, 22:58  [ТС]     Двумерный массив. Программу написать используя указатели и строковые функции. #3
Цитата Сообщение от Svinina Посмотреть сообщение
А что требуется от нас то?=)
Я случайно сохранила сообщение не полностью, сейчас полностью напишу)

Дана целочисленная прямоугольная матрица. Определить номер первого из столбцов, содерж. хотя бы один нулевой элемент.
Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, раложить их в соотвествии с убыванием характеристик. Нужно все сделать с помощью указателей и строковых функций.

Первую часть программы я вроде худо ли бедно сделала. Во второй части вобще провал Как выводить двумерный массив с помощью функций, как сортировать строки, вобще верно ли алгоритм нахождения характеристик написала, их еще и вывести желательно в одномерном массиве. Свои потуги закомментила. Помогите, пожалуйста.
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
#include <iostream.h>
int num (int **a, const int n, const int m);
void sum (int **b, const int k, const int r);
int main () {
int i, j, str, stb;
cout<<"Vvedite chislo strok i stolbzov matrizi\n";
cin>>str>>stb;
int **mas=new int*[str];
for (i=0; i<str; i++)
for (j=0; j<stb; j++)
cin>>*(*(mas+i)+j);
cout<< "Nomer stolbza" << num (mas, str, stb);
//sum (**b, k, r);
//cout<<"Preobraz massiv: \n"<<endl;
//for(i=0; i<str; i++) {
//for (j=0; j<stb; j++) {
// cout << endl (Эта запись нужна,чтоб вывести в виде таблицы, красиво массив, куда ее поставить,я не знаю()
//cout<< *(*(mas+i)+j) << " ";
//}}
return 0;
}
int num (int **a, const int n, const int m) {
int ii, jj, q=0;
for (ii=0; ii<n; ii++)
for (jj=0; jj<m; jj++)
if (a[ii][q=jj]==0)
return (q+1);
}
//void sum (int **b, const int k, const int r) {
//   int pp, ff, e, sum=0, temp;
//   int aa[pp]={0};
//   for (pp=0; pp<k; pp++) {
//       for (ff=0; ff<r; ff++) {
//             if (e<0 && e%2==0)
//                sum+=e; }
// нужно как то вывести тут одномерный массив
// }
//int max=aa[0];
//for (pp=1;pp<n;pp++)
//if (aa[ff])<aa[ff+1])
//  for (pp=0; pp<n; pp++) {
//      for (ff=0; ff<m; ff++)
//           int temp=b[pp][ff+1];
//            b[pp][ff+1]=b[pp][ff];
//            b[pp][ff]=temp;
// }
// }
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
17.11.2011, 07:01     Двумерный массив. Программу написать используя указатели и строковые функции. #4
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
typedef int Value;
typedef Value *Row;
typedef Row *Matrix;
 
 
int firstColumnWithZero(Matrix matrix, size_t height, size_t width) {
  int i, j;
  for (i = 0; i < height; ++i)
    for (j = 0; j < width; ++j)
      if (matrix[i][j] == 0)
        return j;
  return -1;
}
 
Value sumEvenNegatives(Row row, size_t width) {
  Value result = 0;
  int i;
  for (i = 0; i < width; ++i)
    if ((row[i] < 0) && (row[i] % 2 == 0))
      result += row[i];
  return result;
}
 
void quickSort(Matrix matrix, size_t height, size_t width,
  Value (*predicate)(Row, size_t)) {
  int i = 0, j = height;
  Row temp;
  Value pivot;
 
  pivot = predicate(matrix[height >> 1], width);
  do {
    while (predicate(matrix[i], width) > pivot) i++;
    while (pivot > predicate(matrix[j], width)) j--;
 
    if (i <= j) {
      temp = matrix[i];
      matrix[i] = matrix[j];
      matrix[j] = temp;
      i++; j--;
    }
  } while ( i<=j );
 
  if (j > 0) quickSort(matrix, j, width, predicate);
  if (height > i) quickSort(matrix + i, height - i, width, predicate);
}
 
void printMatrix(Matrix matrix, size_t height, size_t width,
  Value (*predicate)(Row, size_t)) {
  int i, j;
  for (i = 0; i < height; ++i) {
    printf("Row %3d | ", i);
    for (j = 0; j < width; ++j)
      printf("%4d", matrix[i][j]);
    printf(" | %5d\n", predicate(matrix[i], width));
  }
}
 
int main(int argc, char *argv[]) {
  srand(time(0));
  size_t width = 10;
  size_t height = 15;
  int i, j;
  Matrix matrix = (Matrix)malloc(sizeof(Row) * height);
  for (i = 0; i < height; ++i) {
    matrix[i] = (Row)malloc(sizeof(Value) * width);
    for(j = 0; j < width; ++j)
      matrix[i][j] = rand() % 101 - 50;
  }
  
  printMatrix(matrix, height, width, sumEvenNegatives);
  
  int columnWithZero = firstColumnWithZero(matrix, height, width);
  if (columnWithZero >= 0)
    printf("Number of first column with zero is %d.\n", columnWithZero);
  else
    printf("No zeroes in any column.\n");
 
  quickSort(matrix, height - 1, width, sumEvenNegatives);
 
  printf("\nSorted:\n");
  printMatrix(matrix, height, width, sumEvenNegatives);
  
  for (i = 0; i < height; ++i)
    free(matrix[i]);
  free(matrix);
  return 0;
}
Yandex
Объявления
17.11.2011, 07:01     Двумерный массив. Программу написать используя указатели и строковые функции.
Ответ Создать тему
Опции темы

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