Ниже представлен фрагмент из программы о сотрудниках фирмы. Как сделать так , чтобы данные о сотрудниках выводились в виде ровной таблицы, чётко друг под другом? 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(); }
Luna Вас тегом "Code" пользоваться не учили? Например: Код (Text): int main(int argc, char* argv[]) { cout << "Tag usage." << endl; return 0; }
TermoSINteZ Если и не учили, то мы в этом не виноваты..Понятия никакого не имею про этот тег \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ А как сделать, чтобы шапка таблицы соответствовала столбцам?толлько методом подбора?
http://cplusplus.com/reference/iostream/manipulators/setw/ (и вообще http://cplusplus.com/reference/iostream/manipulators/ ) Код (Text): cout << endl << " | " << setw(20) << ob[i].name << " | " << setw(20) << ob[i].family << " | " << setw(5) << ob[i].price << " | "; (дополнительно требует #include <iomanip>) будет выводить name и family с 20 символами, дополняя пробелами при необходимости, price с 5 символами, тоже дополняя пробелами по необходимости.
Luna, "Напишите ваше сообщение и нажмите отправить" : видите это сообщение? Вот ниже есть кнопочки: "Img", "Code"... Так вот, вставляете ваш код, выделяете и нажимаете кнопку "Code" - получается так, как TermoSINteZ сделал. А по теме - http://www.cplusplus.com/reference/clibrary/cstdio/printf/ , гораздо поудобнее cout будет.
GoldFinch вообще, это идея подсадить луну на шаблоны. ото учителя ее и остальные все кого она спросит взвоют! 2Luna зато с шаблонами все сразу увидят какая вы умная. сразу сразите их всех. зауважаают..
diamond setw(20)- это я уже видела; но это visual, а мы dos используем Mankubus Что ж вы раньше-то молчали?) Код (Text): if(ob[i].price>ob[i+1].price ) {strcpy(c,ob[i].name); strcpy(ob[i].name,ob[i+1].name); strcpy(ob[i+1].name,c); Mankubus qqwe я не страдаю жаждой честолюбия GoldFinch спасиб)
setw - это из стандарта и появилось одновременно (или незначительно позже) с cout. Только что проверил старый dos-овский Borland C++ 3.1 - там тоже есть файл iomanip.h, определяющий setw.
Luna а чем страдаете? вариантов много. критерий для фильтровки нужон. (девушка не интересующаяся вниманием к себе, презирающая уважение к себе, своим желаниям и своему мнению. даже предпочитающая небрежное и даже хамское отношение к себе это интересно. заслуживает внимания и уважения. надо пойти хамить подъучиться. можно на вас в этом деле потренироваться, раз вам оно нравится?)
qqwe Боюсь, мой ответ придётся не в тему; ..Нет, не можно diamond функция setw должна обеспечить выравнивание между столбцами таблицы , и в качестве её параметра выступает количество символов?
Да, количество символов, отведённых под столбец с полем, которое выводится следующим. По умолчанию выравнивание будет по правому краю столбца, при желании можно где-нибудь в начале один раз сказать cout << left (не уверен насчёт возможности в bc++, но в крайнем случае есть cout.setf(left,adjustfield)), тогда, соответственно, выравнивание везде будет по левому краю.
Luna, тогда как diamond сказал, если cout так нравится; для меня этот "ужас" гораздо проще и удобнее. Кстати, вы сейчас рисковали стать объектом исследований qqwe ) Зря отказались.