|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.11.2009, 19:37 | #1 |
Пользователь
Регистрация: 14.11.2009
Сообщений: 29
|
присвоение номера С++
помогите, пожалуйста, присвоить номер каждому элементу последовательности так, чтобы при последующими изменениями чисел последовательности и их сортировке этот номер не менялся(
|
14.11.2009, 20:01 | #2 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
Если я правильно понял задание,то можно сделать так(даю примерный код,чтобы показать механику).Допустим есть последовательность чисел 1 2 3 4 5 6 7 8.Логично их забить в массив,но если отсортируем этот массив по убыванию,то первый элемент массива будет 8,дальше 7 и т.д.Но нам надо знать начальное положение в массиве элемента 8 до сортировки.Предлагаю такое решение:
Код:
Не давай организму поблажки, каждый день тренируй его в шашки..
|
14.11.2009, 20:25 | #3 |
Пользователь
Регистрация: 14.11.2009
Сообщений: 29
|
Спасибо огромное) только у меня не получается эту последовательность номеров потом на экран вывести после сортировки=\
|
14.11.2009, 20:31 | #4 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
Почему?что пишет?..выводим просто перебирая индексы массива от 0 до i,обращаясь к полю Number.Выглядит так(для примера выше):
Код:
Не давай организму поблажки, каждый день тренируй его в шашки..
|
14.11.2009, 20:34 | #5 |
Пользователь
Регистрация: 14.11.2009
Сообщений: 29
|
аааа, а я пыталась тупо сам массив=\ прошу прощения, с азов учусь( спасибо огромное за помощь
|
14.11.2009, 20:40 | #6 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
Обращение к значению этого массив(это не обычный массив,а массив структур) идет по принципу имя_массива[номер_элемента_в_массиве].имя_поля_в_структуре.
Если все поняли,то щелкайте по весам под моей авой и одобряйте))),мне будет приятно))) Да,забыл сказать,что присвоение одинаковых структур можно делать не перебирая каждое поле,а так,как делал я: Код:
Не давай организму поблажки, каждый день тренируй его в шашки..
Последний раз редактировалось Скарам; 14.11.2009 в 20:44. |
15.11.2009, 15:23 | #7 |
Пользователь
Регистрация: 14.11.2009
Сообщений: 29
|
=\
к сожалению, злоключения мои не закончились=\ я уже совсем запуталась с этой программой=\ начну сначала. смысл в том, чтобы проверить является ли последовательность "графической", то есть возможно ли создание графа из данной последовательности. для этого:
1. сортируем по убыванию 2. проверяем равны ли все элементы нулю, если это так, то последовательность является графической, если нет, переходим к пункту 3 3. если с1>n-1, где n-количество элементов неравных 0, то последовательность не является графической. если условие не выполняется, переходим к пункту 4 4. если в последовательности, начиная со второго элемента, существует как мин с1(значение первого элемента) положительных элементов, то отнимаем 1 от с1 элементов начиная от с2, убираем первый элемент и возвращаемся к пункту 1. в программу я также вставила проверку является ли полученный граф деревом. а теперь проблема=\ графической реализации у меня не будет, но мне нужно выписать какая вершина с которой соединяется при помощи предыдущего алгоритма. делается это на примере так: (3,3,3,3,3,3,0,0) 1 2 3 4 5 6 7 8 т.е. вершин 9 после первого "отнимания" 3 2 2 2 3 3 0 0 1 2 3 4 5 6 7 8 соединяем 1 вершину с с1 следующих т.е.: 1 соединяем с 2,3 и 4 убираем первый элемент и сортируем: 3 3 2 2 2 0 0 5 6 2 3 4 7 8 после "отнимания": 3 2 1 1 2 0 0 5 6 2 3 4 7 8 5 соединяем с 6, 2 и 3 2 2 1 1 0 0 6 4 2 3 7 8 после: 2 1 0 1 0 0 6 4 2 3 7 8 6 соединяем с 4 и 2 1 1 0 0 0 4 3 2 7 8 после: 1 0 0 0 0 4 3 2 7 8 4 с 3 |
15.11.2009, 15:30 | #8 |
Пользователь
Регистрация: 14.11.2009
Сообщений: 29
|
код=\
#include<iostream> using namespace std; void wypisz (int * tablica, int size) { for(int i = 0; i < size; i++) { cout << tablica[i] << " "; } cout << endl; } void sortiruj(int * tablica, int size) { int pom ; bool rob = true ; while (rob) { rob = false; for(int a=0 ; a < (size-1); a++) { if(tablica[a] < tablica[a+1]) { pom = tablica[a]; tablica[a] = tablica[a+1]; tablica[a+1] = pom; rob = true; } } } } int main () { int n,pom, suma; cout << "kolwo elementow:"<<endl; cin >> n; cout<<"elementy posl"<<endl; int posl[n]; suma=0; for(int i=0;i<n;i++) { cin>>posl[i]; } int spr = -1; while (spr == -1) { int k = 0; sortiruj(posl,n); wypisz(posl,n); int zer = 0; for (int i = 0; i < n; i++){ // k suma=suma+posl[i]; if(posl[i] != 0) { k++; } } for (int i = 0; i < n; i++){ //proweriajem na nuli if(posl[i] != 0){ zer++; } } if(zer == 0){ spr = 1; } else { cout << "n=" << n << " k=" << k << endl; if (posl[0]>(k-1)){ //prow. punkt 3 cout << "n=" << n << " k=" << k << endl; spr = 0; } else { pom = posl[0]+1; //otnimaem i umenszajem for (int i = 0; i < pom; i++) { if (posl[i] > 0){ posl[i] = posl[i]-1; } } for (int i = 0; i < n-1; i++){ posl[i] = posl[i+1]; } n = n-1; for (int i = 0; i < n; i++){ //prow na nuli if(posl[i] != 0){ zer++; } } if(zer == 0){ cout << "jest2" << endl; spr = 1; } } } } if (spr == 1){ cout << "*** posledowatelnost' "graficzna" ***" << endl; if (suma == 2*n-2) { cout << "*** Javlaetsia derewom ***" << endl; } else { cout << "*** nie Javlaetsia derewom ***" << endl; } }else{ cout<<"*** nie "graficzna" ***"<<endl; } system("PAUSE"); return 0; } |
15.11.2009, 15:32 | #9 |
Пользователь
Регистрация: 14.11.2009
Сообщений: 29
|
насколько я понимаю нужно пронумеровать последовательность и далее проверять на кол-во элементов, но у меня оно нумерует с каждым повторением петли, наверное, я совсем тупа=\
|
15.11.2009, 15:45 | #10 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
Мда...будем разбираться...
Не давай организму поблажки, каждый день тренируй его в шашки..
Последний раз редактировалось Скарам; 15.11.2009 в 15:49. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Присвоение имен формам. | NSvirus | PHP | 2 | 14.10.2009 09:48 |
Присвоение текста в цикле | AvaMight | Общие вопросы Delphi | 2 | 16.06.2009 01:23 |
Присвоение ID | artemavd | БД в Delphi | 2 | 20.04.2009 14:45 |
Присвоение значений в ComboBox | maxi_mum | Помощь студентам | 6 | 09.04.2009 12:48 |
Присвоение процедур компонентам | N!ckeL | Компоненты Delphi | 4 | 26.04.2008 18:22 |