Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив aName[999], Перемещение ячеек. 
V
    Опции темы
JAnty
  Дата 27.3.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Чото у меня не хватает логики.  smile 

Код

AnsiString aName [999];


В конструкторе, всем элементам этого массива присваивается строка "_NULL_" .

В программе всё начинает меняться, да так, что может быть следущее:

Код

aName[1]="123456";
aName[17]="qwerty";
aName[59]="C++";

...

Немогу написать функцию, чтоб все элементы массива становились по порядку:
Код

aName[1]="123456";
aName[2]="qwerty";
aName[3]="C++";

...

чтоб записывать в файл элементы с [1] до [n] до тех пор пока не 
Код

if(aName[n]=="_NULL_")return;


Чото ничто в голову не приходит, жду вдохновления, а нету.
Не думал что буду об этом просить вас, сам в шоке.

Это сообщение отредактировал(а) JAnty - 27.3.2007, 11:49


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Dov
Дата 27.3.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Код

if(!strcmp(aName[n], "_NULL_") return;



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
JAnty
Дата 27.3.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Интересно девки пляшут.
Это лексикографическое сравнение, строка больше или менише другой.

Так и делать чтоли?

Код

int i=0;
for(int n=1; n<=999; n++)
{
 
  if(!strcmp(aName[n], "_NULL_"){i++;continue;}
   aName[i]=aName[n]

}// next n;


Чото я кокой-то бред написал помоему...


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
KelTron
Дата 27.3.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 38



Код

if(strcmp(aName[n], "_NULL_") > 0){i++;continue;}



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
JAnty
Дата 27.3.2007, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Надо массив упорядочить както...
Вот такая мысль пришла:

Код

AnsiString aTMP[999];

for(int n=1; n<=999; n++)
{
  if(aName[n]!="_NULL_")
    {
      aName[n]=aName[n]; //для наглядности.
    }//end if;
  if(aName[n]=="_NULL_")
    {
      /*
          пока незнаю чо тут делать, но знаю, то aTMP[] пригодится,
          но как. чото в уме не укладывается.
     */
    }//end if;
}// next n;


Места себе не нахожу.  smile 


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
KelTron
Дата 27.3.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 38



Цитата(JAnty @  27.3.2007,  12:32 Найти цитируемый пост)
for(int n=1; n<=999; n++)

ну это ты зря, индексы ведь с нуля

Простейшая пузырьковая сортировка:

Код

AnsiString aTMP[999];
AnsiString temp;
for (int i = 0; i < 999; ++i)
    for (int j = 0; j < 998; ++j)
        if (aTMP[j] >aTMP[j+1])
        {
            temp = aTMP[j];
            aTMP[j] = aTMP[j+1];
            aTMP[j+1] = temp;
        }


Это сообщение отредактировал(а) KelTron - 27.3.2007, 12:40


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
JAnty
Дата 27.3.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



 smile Я запутался напроч!!!  smile   smile   smile 

0 я не трогаю, там важная инфа(типо темп для етого массива), всё от 1 до 999.

Чо мне делать?

 smile 




ЗЫ: рекурсия от бога.   smile  smile  smile  smile  smile  smile  smile 


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
KelTron
Дата 27.3.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 38



ну, очевидно, тогда так:
Код

AnsiString aTMP[999];
for (int i = 0; i < 999; ++i)
    for (int j = 1; j < 998; ++j)
        if (aTMP[j] >aTMP[j+1])
        {
            aTMP[0] = aTMP[j];
            aTMP[j] = aTMP[j+1];
            aTMP[j+1] = aTMP[0];
        }


Это сообщение отредактировал(а) KelTron - 27.3.2007, 12:52


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
vinter
Дата 27.3.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Код

AnsiString aTMP[999];
int j = 1;
for (int i = 1; i < 999; ++i)
        if (aTMP[i] != "_NULL_")
            aTMP[j++] = aTMP[i];
 aTMP[j] = "_NULL_";//добавлено после редактирования
        


Это сообщение отредактировал(а) vinter - 27.3.2007, 12:59


--------------------
Мой блог
PM MAIL WWW   Вверх
Fazil6
Дата 27.3.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Код

void sort(String aTMP[])
{
   for(int i = 0; i < 998 ; ++i)
   {
        if((aTMP[i] == "_NULL_") &&  (aTMP[i + 1] != "_NULL_"))
        {
          std::swap(aTMP[i] ,  aTMP[i + 1]);
          sort(aTMP);
        }
   }

}

PM MAIL   Вверх
JAnty
Дата 27.3.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



чото я не понял этого
aTMP[j] >aTMP[j+1]

разве можно их так сравнивать?

ща попробую с этим:

Код

AnsiString aName[5]={"НеТрогаем","123","_NULL_","_NULL_","qwe","_NULL_"};


надо превратить в это:
Код

aName[0];// "НеТрогаем";
aName[1];// "123";
aName[2];// "qwe";
aName[3];// "_NULL_";
aName[4];// "_NULL_";
aName[5];// "_NULL_";


???


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
vinter
Дата 27.3.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



а вообще лучше сразу в файл писать, не тратя время на другии операции
Код

for (int i = 1; i < 999; ++i)
if(aTMP[i] != "_NULL")
   out << aTMP[i];



Добавлено через 1 минуту и 3 секунды
Цитата(JAnty @  27.3.2007,  12:59 Найти цитируемый пост)
чото я не понял этогоaTMP[j] >aTMP[j+1]разве можно их так сравнивать?

нет, получишь сортировку по длинам


--------------------
Мой блог
PM MAIL WWW   Вверх
KelTron
Дата 27.3.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 38



Цитата(JAnty @  27.3.2007,  12:59 Найти цитируемый пост)
разве можно их так сравнивать?

Ну это же AnsiString, у него определены операторы сравнения как и в типе string.


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
Fazil6
Дата 27.3.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(JAnty @ 27.3.2007,  12:59)
чото я не понял этого
aTMP[j] >aTMP[j+1]

разве можно их так сравнивать?

ща попробую с этим:

Код

AnsiString aName[5]={"НеТрогаем","123","_NULL_","_NULL_","qwe","_NULL_"};


надо превратить в это:
Код

aName[0];// "НеТрогаем";
aName[1];// "123";
aName[2];// "qwe";
aName[3];// "_NULL_";
aName[4];// "_NULL_";
aName[5];// "_NULL_";


???

Код


AnsiString aName[5]={"НеТрогаем","123","_NULL_","_NULL_","qwe","_NULL_"};

void sort(String aTMP[])
{
   for(int i = 1; i < 998 ; ++i)
   {
        if((aTMP[i] == "_NULL_") &&  (aTMP[i + 1] != "_NULL_"))
        {
          std::swap(aTMP[i] ,  aTMP[i + 1]);
          sort(aTMP);
        }
   }

}
....
sort(aName);



Это сообщение отредактировал(а) Fazil6 - 27.3.2007, 13:08
PM MAIL   Вверх
KelTron
Дата 27.3.2007, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 38



JAnty, Так тебе оказывается не просто сортировка нужна была........smile

Это сообщение отредактировал(а) KelTron - 27.3.2007, 13:10


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1091 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.