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

Подкорректируйте код - C++

Восстановить пароль Регистрация
 
student-novi4ok
4 / 4 / 1
Регистрация: 05.09.2011
Сообщений: 113
14.12.2011, 22:15     Подкорректируйте код #1
Уплотнить матрицу, удаляя из нее строки и столбцы заполненные нулями. Пока сделал только удаление строк с нулями, только ничего не удаляется) подскажите в чем причина
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
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <windows.h>
int rus(char str_c[])
{char *str=new char[255];
AnsiToOem(str_c,str);
cout<<'\n'<<str;
return(0);
}
 
int main()
{
int nstr,nstb,k,i,j;
rus("Введите количество строк и столбцов через пробел   ");
cin>>nstr>>nstb;
int **p=new int *[nstr];
for(i=0;i<nstr;i++)
p[i]=new int [nstb];
 for(i=0;i<nstr;i++)
  for(j=0;j<nstb;j++)
 {
   cout<<"  mas ["<<i<<"] "<<"["<<j<<"] = "; cin>>p[i][j];
 }
 for(i=0;i<nstr;i++)
 {
   cout<<endl<<endl;
   for(j=0;j<nstb;j++)
   cout<<setw(3)<<p[i][j]<<" ";
 }
 k=0;
for(i=0;i<nstr;i++)
{
for(j=0;j<nstb;j++)
{
 if(p[i][j] == 0) k++;
}
 if(k == nstb-1){
 for(j=0;j<nstb;j++){
  p[i][j]=p[i+1][j];
  }
 }
 k=0;
}
cout<<endl;
 for(i=0;i<nstr;i++)
 {
   cout<<endl<<endl;
   for(j=0;j<nstb;j++)
   cout<<setw(3)<<p[i][j]<<" ";
 }
getch();
return 0;
}
Добавлено через 1 час 16 минут
Я смотрю, ответов нету, просто интересно, это реально сложная задача?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2011, 22:15     Подкорректируйте код
Посмотрите здесь:

Visual c++ код перевести в gcc linux код C++
C++ Не получается запустить длинный код Алгоритма Гомори, код правильный.
C++ прога, которая по нажатой клавише выводит ascii - код символа это клавиши или scan - код самой клавиши.
код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, как сделатьь так чтобы Студия воспринимала этот код?? C++
перевод десятичного вещественного в машинный код(двоичный код) C++
Перевести код программы Паскаля в код С++ C++
Нужно засунуть код инструкции в 4 char'a так, чтобы в памяти это был код инструкции. C++
Пожалуйста подкорректируйте программу! C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
student-novi4ok
4 / 4 / 1
Регистрация: 05.09.2011
Сообщений: 113
15.12.2011, 00:31  [ТС]     Подкорректируйте код #2
Все работает, но числа уменьшаются на 1, подскажите почему
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
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <windows.h>
#include <stdlib.h>
void numberofstr(int **p, int nstr, int nstb);
void str(int **p, int &nstr, int nstb);
void st(int **p, int nstr, int &nstb);
void vvod(int **p, int nstr, int nstb);
void outputt(int **p, int nstr, int nstb);
int rus(char str_c[])
{char *str=new char[255];
AnsiToOem(str_c,str);
cout<<'\n'<<str;
return(0);
}
int main()
{
int nstr,nstb,k,i,j;
rus("Введите количество строк и столбцов через пробел   ");
cin>>nstr>>nstb;
int **p=new int *[nstr];
for(i=0;i<nstr;i++)
p[i]=new int [nstb];
vvod(p,nstr,nstb);
rus("Исходный массив => "); cout<<endl;
outputt(p,nstr,nstb);
str(p,nstr,nstb);
st(p,nstr,nstb);
rus("Уплотненная матрица без нулей в строках и столбцах => "); cout<<endl;
outputt(p,nstr,nstb);
rus("Номер строки с первым положительным элементом =>, ");
numberofstr(p,nstr,nstb);
getch();
return 0;
}
void vvod(int **p, int nstr, int nstb)
{ int i,j;
 for(i=0;i<nstr;i++)
  for(j=0;j<nstb;j++)
 {
   cout<<"  mas ["<<i<<"] "<<"["<<j<<"] = "; cin>>p[i][j];
 }
}
 
void str(int **p, int &nstr, int nstb)
{    int i,j,k,t,m;
i=0;
  while(i<nstr){
         k=0;
         for (j=0;j<nstb;j++)
          if (p[i][j]==0){k++ ;}
          if (k == nstb){
                   for (t=0;t<nstb;t++)
                   {
                         for (m=i;m<nstr-1;m++)
                          {
                           p[m][t]=p[m+1][t];
                          }
                   }nstr--;
                }
                i++;
  }
  }
void st(int **p, int nstr, int &nstb)
{    int i,j,k,t,m;
j=0;
  while(j<nstb){
         k=0;
         for (i=0;i<nstr;i++)
          if (p[i][j]==0)k++ ;
          if (k==nstr){
                   for (t=0;t<nstr;t++)
                   {
                   for (m=j;m<nstb-1;m++)
                   {
                          p[m][t]=p[m][t+1];
 
                   }
                   }nstb--;
                 }else j++;
          }
}
void numberofstr(int **p, int nstr, int nstb)
{  int i,j,k=0;
 for(i=0;i<nstr;i++)
 for(j=0;j<nstb;j++)
 {
 if(p[i][j]>0) {k=i; break;}
 else {rus("Нет положительных символов");}
 }
 cout<<k;
}
void outputt(int **p, int nstr, int nstb)
{ int i,j;
  for (i=0;i<nstr;i++){
     cout<<endl<<endl;
        for(j=0;j<nstb;j++)
          cout<<setw(4)<<p[i][j]<<" ";
   }
 
}
Миниатюры
Подкорректируйте код  
student-novi4ok
4 / 4 / 1
Регистрация: 05.09.2011
Сообщений: 113
15.12.2011, 20:30  [ТС]     Подкорректируйте код #3
Причем, если делать без процедур, то все работает нормально, но к сожалению надо с процедурами

Добавлено через 19 часов 48 минут
Не ужели никто не знает как исправить эту ошибку????
Yandex
Объявления
15.12.2011, 20:30     Подкорректируйте код
Ответ Создать тему
Опции темы

Текущее время: 18:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru