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

Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите решить проблемку http://www.cyberforum.ru/cpp-beginners/thread384195.html
Дано натуральное число. Определить оно простое. Число называется простым, если оно не имеет других делителей, кроме 1 и самого себя. Как написать кодик: или писать через for то как помогите плиз! int y; cout<<"Vedit` proste chislo: "; cin>>y; if (y < 0 || y/1 == y && y/y == 1 )
C++ for поднисение к степени Всем доброго дня суток. помогите решить задачу Как вывести 2 в 9 степени? Что-то тут я не догоняю const int // тут что-то должно бить и как дописать for (int i = 2; i < 9; i*=2) { cout<< i <<"\n"; http://www.cyberforum.ru/cpp-beginners/thread384181.html
C++ Исправить программу
привет ,не могу понять что за проблема с этой программой)) помогите плиз понять ошибки,буду признательна!! #include <iostream> using namespace std; int ArrayRead (double Array,int limit); void ArrayPrint (const double Array,int limit); void ArrayChange (double Array,int,float); int main()
C++ typedef непонятно чего
Есть вот такой код typedef private void (T::*TimedFunction)(void); По сути это должна быть ссылка на функцию класса Т с возвращаемым значением void, но как разбираются такие выражения я не знаю, можете помочь? Добавлено через 15 минут http://www.newty.de/fpt/index.html - хороший ман по этому поводу
C++ Работа с файлами, помогите найти ошибку. http://www.cyberforum.ru/cpp-beginners/thread384149.html
Нужно написать программу которая будет выписывать в файл значения синуса от 0 до 2Pi с шагом Pi/11 в два столбика-в первом угол, во втором значения синуса. Вот что я написал, но почему то не работает, когда открываю файл он просто зависает. Помогите пожалуйста. #include<iostream> #include<cmath> #define PI 3,14 using namespace std; int main() { FILE *F; F = fopen("out.txt","w"); if...
C++ Не понимаю сообщение компилятора При компиляции компилятор выдает предупреждение "no newline at end of file". Среда C-Free Professional 5.0. Компилятор Mingw. Заранее спасибо. подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.11.2011, 09:25     Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик
По первой задаче, должно работать, но только при равентве размеров инта и указателя, является наглядным пособием, как делать не надо:
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
void (int **Data, unsigned int n, unsigned int m)
{
 int **p1;
 int *p2;
 int **Start;
 Data=new (int*) [n*m+n];
 if (Data)
 {
  Start=Data+n;
  for (p1=Start-1; p>=Data; --p)
  {
   *p1=Data+(p-Data)*m+n;
  }
  for (p2=*Data+n*m-1; p>=Start; --p)
  {
   *p2=rnd()%100-50;
  }
 }
}
int Norm(int *Data, unsigned int n)
{
 int *End;
 int *p;
 int r;
 r=0;
 if (Data)
 {
  End=Data+m-1;
  for (p=Data; p<=End; p+=2)
  {
   if ((*p) <0)
   {
    r-=*p;
   }
  }
 }
 return r;
}
void Sort (int **Data, unsigned int n, unsigned int m)
{
 int **i;
 int **j;
 int n1;
 int n2;
 int *p1;
 int *p2;
 int t;
 if (Data)
 {
  for (i=Data+n-1; i>Data; --i)
  {
   for (j=i-1; j>=Data; --j)
   {
    n1=Norm(*i, m);
    n2=Norm(*j, m);
    if (n1<n2)
    {
     for (p1=*i+m-1, p2=*j+m-1; p1>=*i; --p1, --p2)
     {
      t=*p1;
      *p1=*p2;
      *p2=t;
     }
    }
   }
  }
 }
}
Добавлено через 18 минут
А вот так делать надо:
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
void (int **Data, unsigned int n, unsigned int m)
{
 int **p1;
 int *p2;
 int **End;
 bool Flag;
 if (n*m>0)
 {
  Data=new int*[n];
  if (Data)
  {
   End=Data+n-1;
   Flag=false;
   for (p1=End; p>=Data; --p)
   {
    *p1=new int [m];
     if (p1)
     {
      for (p2=*p1+m-1; p2>=*p1; --m)
      {
       *p2=rnd()%100-50;
      }
     }
    else
    {
     Flag=true;
     break;
    }
   }
   if (Flag)
   {
    for (++p1; p1>=End; ++p1)
    {
     delete [] *p1;
    }
   delete [] Data;
   Data=NULL;
   }
  }
 }
 else
 {
  Data=NULL;
 }
}
int Norm(int *Data, unsigned int n)
{
 int *End;
 int *p;
 int r;
 r=0;
 if (Data)
 {
  End=Data+m-1;
  for (p=Data; p<=End; p+=2)
  {
   if ((*p) <0)
   {
    r-=*p;
   }
  }
 }
 return r;
}
void Sort (int **Data, unsigned int n, unsigned int m)
{
 int **i;
 int **j;
 int n1;
 int n2;
 int *p1;
 int *p2;
 int t;
 if (Data)
 {
  for (i=Data+n-1; i>Data; --i)
  {
   for (j=i-1; j>=Data; --j)
   {
    n1=Norm(*i, m);
    n2=Norm(*j, m);
    if (n1<n2)
    {
     for (p1=*i+m-1, p2=*j+m-1; p1>=*i; --p1, --p2)
     {
      t=*p1;
      *p1=*p2;
      *p2=t;
     }
    }
   }
  }
 }
}
void Free (int **Data, int n)
{
 int **p2;
 if (Data)
 {
  for (p=Data+n-1; p>=Data; --p1)
  {
   delete [] *p1;
  }
  delete [] Data;
 }
 Data=NULL:
}
Добавлено через 8 минут
В идеале всё надо спрятать в класс, функции - public, остальное - private, Init переписать в контруктор, Free - в дестурктор, размеры и **Data вынести из параметров в члены-данные, *Data чиать из **Data по индексу внутри функции Norm, добавить этот индекс в качетсве ещё одного параметра, соответственно поменять и синтаксис вызова Norm из Sort.
 
Текущее время: 20:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru