У меня почему-то при компиляции одного и того же кода на платформах Windows и Linux манипуляторы работают по разному. Например такая программа:int main() {
char sel;
do{
cout<<"Введите данные о среднемесячном траффике:\n";
putdata(aver4month, 12);
cout<<"Введите текущие даные об траффике за каждый месяц: \n";
putdata(curr4month, 12);
cout<<"Сравнительная таблица траффика за последний год: \n";
showtable(aver4month, curr4month, 12);
cout<<"Чтобы продолжить нажмите Y, для выхода нажмите любую букву >";
cin>>sel;
cout<<endl;
}while(sel=='Y' || sel=='y');
return 0;
}
char* getmonth(int i) {
char* temp;
switch(i) {
case 0:
temp="Январь";
break;
case 1:
temp="Февраль";
break;
case 2:
temp="Март";
break;
case 3:
temp="Апрель";
break;
case 4:
temp="Май";
break;
case 5:
temp="Июнь";
break;
case 6:
temp="Июль";
break;
case 7:
temp="Август";
break;
case 8:
temp="Сентябрь";
break;
case 9:
temp="Октябрь";
break;
case 10:
temp="Ноябрь";
break;
case 11:
temp="Декабрь";
break;
default:
temp="Неверный номер месяца!";
}
return temp;
}
void putdata(int mas[], int sizemas) {
for(int i=0; i<sizemas; i++) {
cout<<"Введите данные за "<<getmonth(i)<<" месяц > ";
cin>>mas[i];}
}
void showtable(int masaver[], int mascurr[], int size) {
cout<<setw(15)<<"Месяц"<<" | ";
cout<<setw(20)<<"Средний траффик"<<" | ";
cout<<setw(15)<<"В текущем году"<<" | ";
cout<<setw(10)<<"Разница"<<endl;
for(int i=0; i<size; i++) {
cout<<setw(15)<<getmonth(i)<<" | ";
cout<<setw(20)<<masaver[i]<<" | ";
cout<<setw(15)<<mascurr[i]<<" | ";
cout<<setw(10)<<(mascurr[i]-masaver[i])<<endl;
}
Компилирую в Visual Studio 2005, запускаю - выдает аккуратную табличку, как и задумывалось. Компилю в Linux (правда, в Linux для создания make файла я пользуюсь утилитой qmake -не силен я в создании make файлов вручную :-(( ). Запускаю - все сторочки таблицы съехали относительно друг друга. Почему? Может под линухом надо как то по-другому применять манипуляторы?