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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Где нужно писать сообщение об ошибке, если ввели неправильное значение? http://www.cyberforum.ru/cpp-beginners/thread690045.html
простите за глупый вопрос, но где нужно писать сообщение об ошибке, если ввели неправильное значение, перепробовала кучу вариантов, никак do { cout<<"Enter data for transaction "<<count<<endl; cout<<"Number of shares:"<<endl; cin>>number_of_shares;} while (total_of_shares>number_of_shares); if (number_of_shares==0){ cout<<"Bye.Have a nice day."<<endl; break;}
C++ Перерисовка отдельного элемента в Canvas Здраствуйте, есть задача - написать игру змейка, соответственно есть поле Canvas на котором нанесено множество прямоугольников, и один "ползающий" прямоугольник, соответственно с каждым шагом таймера прямоугольник должен быть перерисован и появиться на новом месте. Вопрос - можно ли обойтись без перерисовки всего Canvas, а только отдельно взятой области движущегося прямоугольника? http://www.cyberforum.ru/cpp-beginners/thread690042.html
Нужно написать программу!Пжлст C++
Початкова умова Трансцендентну функцію f(x), визначену на інтервалі (a; b), задано аналітичною формулою та нескінченною сумою. Програма має отримати декілька дійсних значень аргументу x із інтервалу і для кожного з них вивести значення f(x), обчислені за формулою та на основі нескінченної суми степенів x, а також різницю між ними. Вхідні дані задає користувач за допомогою клавіатури. Робота...
Найдите плз ошибку, Одномерный массив с указателями C++
Если максимальный элемент находится левее минимального элемента, то упорядочить в порядке убывания элементы, находящиеся между максимальным и минимальным. #include <iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> using namespace std; //ввод размерности массива
C++ целочисленная арифметика c++ http://www.cyberforum.ru/cpp-beginners/thread690022.html
Как сравнивать цифры в числе который находиться в массиве???
C++ Рекурсивный вывод элементов массива Снова блин рекурсия, смысл задачи: Реализовать рекурсивный ввод элементов массива. и в этой же функции рекурсивный вывод этих же элементов. Все в одной процедуре. Массив одномерный. Добавлено через 29 минут вывод элементов нужен в обпатном порядке. подробнее

Показать сообщение отдельно
sheldon-yura
30 / 30 / 7
Регистрация: 02.11.2011
Сообщений: 214
06.11.2012, 16:43     Указатели
Всем привет. Нам дали сделать лабу:
Дана целочисленная прямоугольная матрица.
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");
}
тут все работает, кроме обмена строк через пузырек. помогите плиз. а то скоро ее сдавать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru