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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регистр 
:(
    Опции темы
Guest
Дата 13.11.2005, 01:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

struct scan_info
         {
       char mode[25];
       int price;
       double x_size;
       double y_size;
       int optr;
       int grey;
       };


//----------------------------------------------------
void input_file(scan_info* scaner, long less, int count)
    {
   FILE *f;
   if ((f = fopen ("scan_info.txt", "w+b")) == NULL)
    {
      cout << "ERROR\n" ;exit(0);
      }
   fwrite(&less,sizeof(long),1,f);
    for( int i = 0; i < count; i++)
    {
        if(scaner[i].price>=200)
      fwrite(&scaner[i],sizeof(scan_info),1,f);
       }
    fclose(f);
   }

//----------------------------------------------------
void input_information()
    {
   int count = 0;
   int less = 0;
   cout << "Input number of records: ";
   cin  >> count;
   scan_info* scaner = new scan_info[count];
   for (int i=0; i < count; i++)
      {
    cout << "\nInput information about scaner\n";
      cout << "Input model ";  cin >> scaner[i].mode;   cout << "\n";
      cout << "Input price ";  cin >> scaner[i].price;  cout << "\n";
      cout << "Input x_size "; cin >> scaner[i].x_size; cout << "\n";
      cout << "Input y_size "; cin >> scaner[i].y_size; cout << "\n";
      cout << "Input optr ";   cin >> scaner[i].optr;   cout << "\n";
      cout << "Input grey ";   cin >> scaner[i].grey;   cout << "\n";
      if (scaner[i].price >= 200) less++;
    }
   input_file(scaner,less,count);
   }
//----------------------------------------------------


Необходимо сделать так, чтобы в файл писались сперва поля scaner[i].mode, которые начинаются с заглавной буквы, а потом со строчной. Как? smile
  Вверх
Chaos A.D.
Дата 13.11.2005, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 6
Всего: 7



А есть ограничения на применение потокового ввода-вывода или алгоритмов STL? Просто, как то непривычно смотрится использование cout-а вместе с FILE* и fwrite. А вообще, кажется, можно заюзать partial_sort или stable_sort, в зависимости от того, должны ли сохранять свой порядок сканеры с одинаковым регистром первых букв. Хотя под рукой нет ничего такого, куда бы можно было бы заглянуть в поисках точной инфы об этих алгоритмах, так что может они чем-то и не подойдут.
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
Exekutor
Дата 14.11.2005, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мне кажется, что можно сделать так: пусть у тебя будут два цикла пусть первый пробегает по полям структуры, и проверяет - принадлежит ли скан код первого символа множеству с - по (ведь скан коды заглавных букв упорядочены) и записывает если принадлежит. Второй цикл записывает все остальные. Алгоритм не самый совершенный но ничего умнее придумать сходу не могу smile


--------------------
[color=blue][size=2]En taro addun, ma sol larinas[/size][/color]
PM MAIL   Вверх
Chaos A.D.
Дата 14.11.2005, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 6
Всего: 7



Похоже, автор темы на неё забил.
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
Guest
Дата 15.11.2005, 03:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Chaos A.D. совсем не забил, зря так говоришь, если ты создаешь тему, а потом ее не посещешь, то это бессмысленно. Chaos A.D. а то что ты писал, я чего-то не воткнул smile , а вот мысля Exekutor'a мне более понятна, постараемся реализовать smile
  Вверх
Chaos A.D.
Дата 15.11.2005, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 6
Всего: 7



Я хотел сказать - можно просто отсортировать вектор твоих сканнеров так, чтобы их название приводилось к какому-то одному регистру при сортировке. Не тронутой мы оставляли бы только первую букву. То есть не меняли бы ей регистра. Потом, сортируем вектор с таким критерием сравнения, который я только что описал. И выводим. Сделать это удобнее всего написав функтор, и заюзав его со стандартным алгоритмом sort из STL.

У Exekutor-а подход попроще. Но он, по-моему, более удобный, чем мой. Если тебе нужно вывести все сканнеры, и выйти, то это то, что нужно.

Это сообщение отредактировал(а) Chaos A.D. - 15.11.2005, 10:44
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
Doc_d0s
Дата 15.11.2005, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



создай список, с указателями на эти все mode отсортируй его и согласно указателям пиши
насколько я знаю заглавные буквы раньше чем строчные => список сортировать по убыванию(не возрастанию)
--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
Guest
Дата 16.11.2005, 03:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Doc_d0s с указателями у меня большие проблемы smile
  Вверх
Chaos A.D.
Дата 16.11.2005, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 6
Всего: 7



Цитата(Guest @ 16.11.2005, 03:32)
Doc_d0s с указателями у меня большие проблемы

А, начинающий...

Просто сделай своему массиву std::sort с предикатом, который сравнивает scan_info по именам.

Код


// Этот класс добавь в начало файла. Не забудь подключить <algorithm>
class LessByName
    : public std::binary_function<scan_info, scan_info, bool>
{
    public :
        bool operator()( const scan_info &lhs, const scan_info &rhs )
        { return strcmp( lhs.mode, rhs.mode ) < 0; }
};

// Вставь эту строку после цикла в input_information, и перед выводом в файл (в строку 47 в твоем коде выше)
std::sort( &scaner[0], &scaner[count], LessByName() );



--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
Guest
Дата 17.11.2005, 01:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Все большое спасибо за ответы!!! smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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