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

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

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

Изменение длины строк в динамическом массиве. - C++

11.12.2009, 02:03. Просмотров 747. Ответов 5
Метки нет (Все метки)

Доброго времени суток!
Имеется код :
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
#include "stdafx.h"
#include <iostream.h>
#include <stdlib.h>
int main()
 {
int t,a=0,b=0,z,x,y,s;
int **mas;
cout<<"vvedite kol-vo strok : ";
cin>>y;
cout<<"vvedite kol-vo stolbcov : ";
cin>>x;
 
mas = new int*[y];
   for ( z = 0; z < x ; z++)
   {
     mas[z] = new int[x];
   }
 
for (int i=0; i<x; i++)
for (int j=0; j<y; j++)
 {  
mas[i][j]=rand()%4;
 
}
 
for (int m=0; m<x; m++)
for(int k=0; k<y; k++)
for(int l=k; l<y; l++)
if (mas[m][k]>mas[m][l]) 
{
t=mas[m][k];
mas[m][k]=mas[m][l];
mas[m][l]=t;
}
 
for(int p=0; p<x; p++)
{
for(int q=0; q<y; q++)
cout<<mas[p][q]<<" ";
cout<<endl;
}
 
 for (s=0; s<x; s++) 
 {
   cout<<endl;
   a=1;
   for(int r=0; r<y; r++)
   {
     if (mas[s][r-1]==mas[s][r])
     {
       a++;
       if (a>b)
       {
        b=a;
        t=s;
       }
 
     }
  if (mas[s][r-1]!=mas[s][r])
  a=1;
   }
 }
if(x==0||y==0)
cout<<"net stroki"<< endl;
else if(x==1&&y==1)
cout<<"eto stroka 1"<< endl;
else
cout<<"eto stroka "<<t+1<< endl;
}
который находит строку с самой длинной серией одинаковых элементов.
Вопрос, собственно, такой - как сделать, чтобы при формировании массива можно было задать не только кол-во строк и столбцов, но и длину строк, чтобы в итоге массив выглядил, например, вот так:
1 1 1
1 2 3 4
1 1
и так далее.
Надеюсь на вашу помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2009, 02:03     Изменение длины строк в динамическом массиве.
Посмотрите здесь:

Увеличение количества строк в двумерном динамическом массиве - C++
Здравствуйте. Есть двумерный динамический массив строк ownerbase. После выполнения определенных условий нужно занести в него еще одну...

Как вывести длину столбца в динамическом массиве с разной длинной строк? - C++
как вывести длину столбца в динамическом массиве с разной длинной строк?

Как посчитать количество строк, меняющих свою длинну в динамическом массиве? - C++
Сам массив есть и работает, пробовал через счетчик, но нигде не работает, хотя может что неправильно делаю.

Найти в двумерном динамическом массиве сумму строк и сумму столбцов и сравнить их - C++
Доброго времени суток! Не могу понять это задание: дана матрица (N+15)x(N+15), если сумма всех чисел в строках больше суммы всех чисел в...

Ошибка в динамическом массиве - C++
Проблема при добавлении сотрудника. Первый сотрудник добавляется просто прекрасно, а вот при записи второго сотрудника выдает ошибку и...

Сдвиг в динамическом массиве - C++
Добрый день) Сразу оговорюсь что честно пользовался поиском. Если у меня проблемы со зрением - прошу указать соответствующую тему. Спасибо....

Деление в двухмерном динамическом массиве - C++
Пользователь задает кол-во столбиков и строк. Пытаюсь сделать так, чтобы каждое число первой строке, заданное ранее - делилось на первое...

Преобразование типов в динамическом массиве - C++
Имеется динамический массив unsigned char * buffer = new unsigned char ; size - это размер массива вычисляется отдельно ...

Музыкальная картотека в динамическом массиве - C++
Написать программу, которая позволяет хранить музыкальную картотеку в динамическом массиве. Каждая запись должна содержать: Тип...

Ошибка в одноиерном динамическом массиве - C++
Здравствуйте, программа не правильно выводит на экран обработанный массив. Пункт 1 выполняется, пункт 2 выполняется, пункт 3 выполняется,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
11.12.2009, 10:18     Изменение длины строк в динамическом массиве. #2
Цитата Сообщение от l1qu1dsky Посмотреть сообщение
Вопрос, собственно, такой - как сделать, чтобы при формировании массива можно было задать не только кол-во строк и столбцов, но и длину строк, чтобы в итоге массив выглядил, например, вот так:
1 1 1
1 2 3 4
1 1
и так далее.
Так сделать нельзя в одном массиве. Предлагаю такой вариант, если он Вам подойдет. Например неиспользуемые элементы массива заполнить значением "-1". Тогда Ваш массив из примера будет выглядеть так:
1 1 1 -1
1 2 3 4
1 1 -1 -1
При обработке такого массива что бы отсеять неиспользуемые элементы можно просто использовать if(mas[m][k]!=-1)
l1qu1dsky
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 13
11.12.2009, 16:13  [ТС]     Изменение длины строк в динамическом массиве. #3
Дело в том, что своими глазами видел работу аналогичной программы, в которой сначала задается (в ручную)количество строк и столбцов, а также количество элементов в каждой строке. Вот только тот код я не видел, поэтому прошу помощи.
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
11.12.2009, 16:47     Изменение длины строк в динамическом массиве. #4
l1qu1dsky, на каком языке ты это видел? На C/C++ такого нету, на C# и Java - это стандартная вещь
l1qu1dsky
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 13
11.12.2009, 16:58  [ТС]     Изменение длины строк в динамическом массиве. #5
C++ конечно.
l1qu1dsky
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 13
13.12.2009, 23:07  [ТС]     Изменение длины строк в динамическом массиве. #6
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.h>
#include <stdlib.h>
int main()
 {
int g,t,a=0,b=0,z,x,y,s;
int **mas;
cout<<"vvedite kol-vo strok : ";
cin>>y;
x=y;
mas = new int*[y];
for ( z = 0; z < x ; z++)
mas[z] = new int[x];
g=y;
for (int i=0; i<x; i++)
 for (int j=0; j<g; j++) 
 mas[i][j]=rand()%5;
 
for (int m=0; m<x; m++)
 for(int k=0; k<y; k++)
 for(int l=k; l<y; l++)
 if (mas[m][k]>mas[m][l]) 
 {
     t=mas[m][k];
mas[m][k]=mas[m][l];
  mas[m][l]=t;
 }
for(int p=0; p<x; p++)
{
 for(int q=0; q<g; q++)
 {
  cout<<mas[p][q]<<" ";
 
 }
if(g>2)  g--; else g=2;
cout<<endl;
}
 
 for (s=0; s<x; s++) 
 {
  
   a=1;
   for(int r=0; r<g; r++)
   {
     if (mas[s][r-1]==mas[s][r])
     {
       a++;
       if (a>b)
       {
        b=a;
        t=s;
       }
 
     }
  if (mas[s][r-1]!=mas[s][r])
  a=1;
   }
   }
  cout<<endl;
if(y==0)
cout<<"net stroki"<< endl;
if(y==1||y==2||y==3||y==5||y==10)
cout<<"eto stroka 1"<< endl;
if(y==4)
cout<<"eto stroka "<<t+1<< endl;
if(y==6||y==8)
cout<<"eto stroka "<<t<< endl;
if(y==7||y==9||y==11)
cout<<"eto stroka "<<t+2<< endl;
if(y==12)
cout<<"eto stroka 2"<< endl;
}
Вот что получилось, правда, как можно заметить, все работает только до кол-ва строк 12. Есть какие-нибудь идеи, что изменить, чтобы можно было в ручную задавать элементы строки в этом коде?
Yandex
Объявления
13.12.2009, 23:07     Изменение длины строк в динамическом массиве.
Ответ Создать тему
Опции темы

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