Форум программистов, компьютерный форум, киберфорум
Наши страницы

Указатели - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Где нужно писать сообщение об ошибке, если ввели неправильное значение? http://www.cyberforum.ru/cpp-beginners/thread690045.html
простите за глупый вопрос, но где нужно писать сообщение об ошибке, если ввели неправильное значение, перепробовала кучу вариантов, никак do { cout<<"Enter data for transaction "<<count<<endl;...
C++ Перерисовка отдельного элемента в Canvas Здраствуйте, есть задача - написать игру змейка, соответственно есть поле Canvas на котором нанесено множество прямоугольников, и один "ползающий" прямоугольник, соответственно с каждым шагом таймера... http://www.cyberforum.ru/cpp-beginners/thread690042.html
Нужно написать программу!Пжлст C++
Початкова умова Трансцендентну функцію f(x), визначену на інтервалі (a; b), задано аналітичною формулою та нескінченною сумою. Програма має отримати декілька дійсних значень аргументу x із...
Найдите плз ошибку, Одномерный массив с указателями C++
Если максимальный элемент находится левее минимального элемента, то упорядочить в порядке убывания элементы, находящиеся между максимальным и минимальным. #include <iostream> #include <stdio.h>...
C++ целочисленная арифметика c++ http://www.cyberforum.ru/cpp-beginners/thread690022.html
Как сравнивать цифры в числе который находиться в массиве???
C++ Рекурсивный вывод элементов массива Снова блин рекурсия, смысл задачи: Реализовать рекурсивный ввод элементов массива. и в этой же функции рекурсивный вывод этих же элементов. Все в одной процедуре. Массив одномерный. Добавлено... подробнее

Показать сообщение отдельно
sheldon-yura
30 / 30 / 7
Регистрация: 02.11.2011
Сообщений: 216

Указатели - C++

06.11.2012, 16:43. Просмотров 254. Ответов 2
Метки (Все метки)

Всем привет. Нам дали сделать лабу:
Дана целочисленная прямоугольная матрица.
1) Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "stdafx.h"
#include "iostream"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{   int i,j,n,m,t,l;
    int a[10][10]={{0},{0}};
    int b[10]={0};
    setlocale(LC_ALL,"Russian");
    cout <<"n=";
    cin >> n;
    cout <<"m=";
    cin >> m;
    cout <<"\n";
    
    cout <<"введите элементы массива:\n";
    for (int i=0; i<n; i++){
      for (int j=0; j<m; j++)
         cin >> a [i][j];}
    cout <<"\n";
 
   cout << "Текущий массив: \n";
   for (int i=0; i<n; i++){
      for (int j=0; j<m; j++){
          cout << a[i][j];
          cout << " ";}
          cout << "\n";}
 
   int q;
   q=0;
   cout << "\n";
 
    for (int i=0; i<n; i++)
      for (int j=0; j<m; j++)
          if (a[i][j]==0){
              q=j+1;              
          break;
      break;}
 
    if (q==0)
        cout <<"нули не обнаружены";
    else{
        cout << "ноли обнаружены в строке - ";
        cout << q;}
 
    cout <<"\n";
    cout <<"\n";
 
    for (int i=0; i<n; i++)
      for (int j=0; j<m; j++)
          if ((a[i][j]%2==0) && (a[i][j]<0) )
              b[i]=b[i]+a[i][j];
 
   for (int i=0; i<n; i++)
       for (int l=i+1; l<n; l++)
           if (b[i]<b[l]){
               for (int j=0; j<m; j++){
                   t=a[i][j];
                   a[i][j]=a[l][j];
                   a[l][j]=t;}}
   cout <<"отсортированный массив: \n";
 
   for (int i=0; i<n; i++){
      for (int j=0; j<m; j++){
          cout << a[i][j];
          cout << " ";}
          cout << "\n";}
 
    system("pause");
    return 0;
}
потом нам сказали сделать ее через указатели:
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
#include "stdafx.h"
#include "iostream"
using namespace std;
 
 
void main()
{   int i,j,n,m,l,k=0;;
    int *b[10]={0}, *t={0};
    setlocale(LC_ALL,"Russian");
    cout <<"n=";
    cin >> n;
    cout <<"m=";
    cin >> m;
    cout <<"\n";
    
    cout <<"введите элементы массива:\n";
    int ** a = new int*[n];
    for (int i=0;i<n;i++)
        a[i]=new int[m];
    for (int i=0;i<n;i++) 
        for (int j=0;j<m;j++)
            cin>>a[i][j];
    for (int i=0;i<n;i++) 
        for (int j=0;j<m;j++)
            if (a[j][i]==0) {
                k++;
                break;
            }
 
   cout << "Текущий массив: \n";
   for (int i=0; i<n; i++){
      for (int j=0; j<m; j++){
          cout << a[i][j];
          cout << " ";}
          cout << "\n";}
 
   int q;
   q=0;
   cout << "\n";
 
    for (int i=0; i<n; i++)
      for (int j=0; j<m; j++)
          if (a[i][j]==0){
              q=j+1;              
          break;
      break;}
 
    if (q==0)
        cout <<"нули не обнаружены";
    else{
        cout << "ноли обнаружены в строке - ";
        cout << q;}
 
    cout <<"\n";
    cout <<"\n";
 
    for (int i=0; i<n; i++)
      for (int j=0; j<m; j++)
          if ((a[i][j]<0) && (a[i][j]%2==0))
              b[i]=b[i]+a[i][j];
 
    for (int i=0; i<n; i++)
       for (int l=i+1; l<n; l++)
           if (b[i]<b[l]){
               for (int j=0; j<m; j++){
                   t=&a[i][j];     //вот тут
                   a[i][j]=a[l][j];    //вот тут
                   a[l][j]=*t;       //вот тут
                   /*(*(t+i)+j)=(*(a+i)+j);
                   *(*(a+i)+j)=*(*(a+l)+j);
                   *((a+l)+j)=*(*(t+i)+j);    */}}
 
   cout <<"отсортированный массив: \n";
 
   for (int i=0; i<n; i++){
      for (int j=0; j<m; j++){
          cout << a[i][j];
          cout << " ";}
          cout << "\n";}
   for (int i=0; i<n; i++)
    delete [] a[i];
   delete [] a;
    system("pause");
}
тут все работает, кроме обмена строк через пузырек. помогите плиз. а то скоро ее сдавать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru