В виде таблицы.

Тема в разделе "WASM.BEGINNERS", создана пользователем Luna, 9 май 2010.

  1. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Ниже представлен фрагмент из программы о сотрудниках фирмы. Как сделать так , чтобы данные о сотрудниках выводились в виде ровной таблицы, чётко друг под другом?



    void firma::sort_price(firma * ob)
    {char c[80];
    int j,p;
    for(j=0;j<k;j++)
    for(i=0;i<k-1;i++)
    {
    if(ob.price>ob[i+1].price )
    {strcpy(c,ob.name);
    strcpy(ob.name,ob[i+1].name);
    strcpy(ob[i+1].name,c);

    strcpy(c,ob.family);
    strcpy(ob.family,ob[i+1].family);
    strcpy(ob[i+1].family,c);

    strcpy(c,ob.otch);
    strcpy(ob.otch,ob[i+1].otch);
    strcpy(ob[i+1].otch,c);

    strcpy(c,ob.work);
    strcpy(ob.work,ob[i+1].work);
    strcpy(ob[i+1].work,c);

    p=ob.price;
    ob.price=ob[i+1].price;
    ob[i+1].price=p; }
    }
    cout<<"______________________________________________\n";
    cout<<"\n"<<" | "<<" name "<<" | "<<" family "<<" | "<<" otch "<<" | "<<" work "<<" | "<<" price "<<" | ";

    for (i=0;i<k;i++)

    cout<<"\n"<<" | "<<ob.name<<" | "<<ob.family<<" | "<<ob.otch<<" | "<<ob.price<<" \ ";


    cout<<"\n"<<"______________________________________________\n";
    getch();


    }
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Luna
    поиграй с "\t"
     
  3. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    wsd
    ну да, что-то знакомое
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Luna
    Вас тегом "Code" пользоваться не учили?
    Например:

    Код (Text):
    1. int main(int argc, char* argv[])
    2. {
    3.     cout << "Tag usage." << endl;
    4.     return 0;
    5. }
     
  5. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    TermoSINteZ
    Если и не учили, то мы в этом не виноваты..Понятия никакого не имею про этот тег


    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

    А как сделать, чтобы шапка таблицы соответствовала столбцам?толлько методом подбора?
     
  6. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    http://cplusplus.com/reference/iostream/manipulators/setw/ (и вообще http://cplusplus.com/reference/iostream/manipulators/ )
    Код (Text):
    1. cout << endl << " | " << setw(20) << ob[i].name << " | " << setw(20) << ob[i].family << " | " << setw(5) << ob[i].price << " | ";
    (дополнительно требует #include <iomanip>) будет выводить name и family с 20 символами, дополняя пробелами при необходимости, price с 5 символами, тоже дополняя пробелами по необходимости.
     
  7. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    или принтф, или посчитать символы перед выводом
     
  8. Mankubus

    Mankubus New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2009
    Сообщения:
    76
    Luna, "Напишите ваше сообщение и нажмите отправить" : видите это сообщение? Вот ниже есть кнопочки: "Img", "Code"... Так вот, вставляете ваш код, выделяете и нажимаете кнопку "Code" - получается так, как TermoSINteZ сделал.

    А по теме - http://www.cplusplus.com/reference/clibrary/cstdio/printf/ , гораздо поудобнее cout будет.
     
  9. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    еще есть boost.format, он удобнее всех
     
  10. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    GoldFinch
    вообще, это идея подсадить луну на шаблоны. ото учителя ее и остальные все кого она спросит взвоют!
    2Luna зато с шаблонами все сразу увидят какая вы умная. сразу сразите их всех. зауважаают..
     
  11. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    diamond
    setw(20)- это я уже видела; но это visual, а мы dos используем
    Mankubus
    Что ж вы раньше-то молчали?)
    Код (Text):
    1.  if(ob[i].price>ob[i+1].price )
    2.      {strcpy(c,ob[i].name);
    3.       strcpy(ob[i].name,ob[i+1].name);
    4.       strcpy(ob[i+1].name,c);
    Mankubus
    qqwe
    я не страдаю жаждой честолюбия ;)
    GoldFinch

    спасиб)
     
  12. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    setw - это из стандарта и появилось одновременно (или незначительно позже) с cout.
    Только что проверил старый dos-овский Borland C++ 3.1 - там тоже есть файл iomanip.h, определяющий setw.
     
  13. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    diamond
    тогда это- большое счастье)
     
  14. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Luna
    а чем страдаете? вариантов много. критерий для фильтровки нужон.

    (девушка не интересующаяся вниманием к себе, презирающая уважение к себе, своим желаниям и своему мнению. даже предпочитающая небрежное и даже хамское отношение к себе это интересно. заслуживает внимания и уважения. надо пойти хамить подъучиться. можно на вас в этом деле потренироваться, раз вам оно нравится?)
     
  15. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    qqwe
    Боюсь, мой ответ придётся не в тему; ..Нет, не можно

    diamond
    функция setw должна обеспечить выравнивание между столбцами таблицы , и в качестве её параметра выступает количество символов?
     
  16. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Да, количество символов, отведённых под столбец с полем, которое выводится следующим. По умолчанию выравнивание будет по правому краю столбца, при желании можно где-нибудь в начале один раз сказать cout << left (не уверен насчёт возможности в bc++, но в крайнем случае есть cout.setf(left,adjustfield)), тогда, соответственно, выравнивание везде будет по левому краю.
     
  17. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Luna
    а жаль. люди, у которых нет честолюбия это такая редкость, что их просто нельзя пропускать.
     
  18. Mankubus

    Mankubus New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2009
    Сообщения:
    76
    Luna

    Код (Text):
    1. printf("| %-20s | %-20s | %-20d |",ob[i].name,ob[i].family,ob[i].price);
     
  19. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Mankubus
    ужас
     
  20. Mankubus

    Mankubus New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2009
    Сообщения:
    76
    Luna, тогда как diamond сказал, если cout так нравится; для меня этот "ужас" гораздо проще и удобнее.

    Кстати, вы сейчас рисковали стать объектом исследований qqwe ;)) Зря отказались.