URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5705
[ Назад ]

Исходное сообщение
"Манипуляторы в программе срабатывают по разному на разных платформах."

Отправлено andrystepa , 11-Сен-06 12:47 
У меня почему-то при компиляции одного и того же кода на платформах 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 файлов вручную :-(( ). Запускаю - все сторочки таблицы съехали относительно друг друга. Почему? Может под линухом надо как то по-другому применять манипуляторы?


Содержание

Сообщения в этом обсуждении
"Манипуляторы в программе срабатывают по разному на разных пл..."
Отправлено Bob , 11-Сен-06 21:08 
Может, шрифты разные?
Под виндой моноширный, а под Линухом - нет.