Создание диаграммы в C ++ - PullRequest
       3

Создание диаграммы в C ++

4 голосов
/ 18 сентября 2011

Задача

Я делаю градусы Цельсия в Фаренгейт и наоборот.

Весь мой код работает отлично, но я не уверен, как создать диаграмму, которую хочет учитель.

Выходное значение составляет от 0 до 100 градусов по Цельсию и от 32 до 212 градусов по Фаренгейту.

Вот мой код:

#include <iostream>
#include <cstdlib>
#include <iomanip>

using namespace std;
using std::setw;

int i;

int ftemp;
int ctemp;

int farToC(int a, int b);
int celToF(int a, int b);

int main (int argc, const char * argv[])
{
cout << "Farenheit equivalents of Celsius temperatures: " << endl;

for(i = 0; i < 5; i++)
{
    cout << "Celsius Farenheit ";
}
cout << endl;

for(i = 0; i < 101; i++)
{
    cout << setw(7) << i << setw(8) << " " << celToF(i, ftemp)<< endl;
}
cout << endl;

cout << "Celsius equivalents of Farenheit temperatures: " << endl;
for(i = 0; i < 5; i++)
{
    cout << "Fahrenheit Celsius ";
}
cout << endl;

for(i = 32; i < 213; i++)
{
    cout << setw(10) << i << setw(7) << " " << farToC(i, ctemp)<< endl;
}
cout << endl;
}

int farToC(int a, int b)
{
b = (a - 32) * 5 / 9;
return b;
}

int celToF(int a, int b)
{
b = (a * 9/5) + 32;
return b;
}

Вот мой вывод:

Farenheit equivalents of Celsius temperatures: 
Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit 
      0        32
      1        33
      2        35
      3        37
      4        39
      5        41
      6        42
      7        44
      8        46
      9        48
     10        50 
         ...


Celsius equivalents of Farenheit temperatures: 
Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius 
        32       0
        33       0
        34       1
        35       1
        36       2
        37       2
        38       3
        39       3
        40       4
        41       5
        42       5
            ...

Вот что хочет мой учитель: по Цельсию от 0 до 100 градусов.

Farenheit equivalents of Celsius temperatures: 
Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit 
      0        32      25        77      50       122
      1        33      26        78      51       123
      2        35      27        80      52       125
      3        37      28        82      53       127
      4        39      29        84      54       129
      5        41      30        86      55       131
      6        42      31        87      56       132
      7        44      32        89      57       134
      8        46      33        91      58       136
      9        48      34        93      59       138
     10        50      35        95      60       140
    ...

И то же самое по Фаренгейту, но от 32 до 212 градусов ...

Я знаю, как выровнять числа со словами, используя setw (), но я не уверен, как сделать столбцы.

Любые идеи или предложения будут оценены!


Решение

Спасибо всем за вашу помощь. Я понял это, подумав несколько минут!

#include <iostream>
#include <cstdlib>
#include <iomanip>

using namespace std;
using std::setw;

int i;
int k;

int ftemp;
int ctemp;

int farToC(int a, int b);
int celToF(int a, int b);

int main (int argc, const char * argv[])
{
cout << "Farenheit equivalents of Celsius temperatures: " << endl;

for(i = 0; i < 5; i++)
{
    cout << "Celsius Farenheit ";
}

cout << endl;

for(k = 0; k < 25; k++)
{
    for(i = 0; i < 101; i+= 25)
    {
        cout << setw(7) << i+k << setw(10) << celToF(i+k, ftemp) << " " << setw(10);
    }
    cout<< endl;
}

cout << endl;

cout << "Celsius equivalents of Farenheit temperatures: " << endl;

for(i = 0; i < 5; i++)
{
    cout << "Fahrenheit Celsius ";
}

cout << endl;

for(k = 0; k < 45; k++)
{
    for(i = 32; i < 213; i += 45)
    {
        cout << setw(10) << i+k << setw(8) << farToC(i+k, ctemp) << " "  << setw(12);
    }
    cout << endl;
}

cout << endl;
}

int farToC(int a, int b)
{
b = (a - 32) * 5 / 9;
return b;
}

int celToF(int a, int b)
{
b = (a * 9/5) + 32;
return b;
}

Мой вывод:

Farenheit equivalents of Celsius temperatures: 
Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit 
      0        32      25        77      50       122      75       167     100       212 
      1        33      26        78      51       123      76       168     101       213 
      2        35      27        80      52       125      77       170     102       215 
      3        37      28        82      53       127      78       172     103       217 
      4        39      29        84      54       129      79       174     104       219 
      5        41      30        86      55       131      80       176     105       221 
      6        42      31        87      56       132      81       177     106       222 
      7        44      32        89      57       134      82       179     107       224 
      8        46      33        91      58       136      83       181     108       226 
      9        48      34        93      59       138      84       183     109       228 
     10        50      35        95      60       140      85       185     110       230 
 ...

Celsius equivalents of Farenheit temperatures: 
Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius 
        32       0         77      25        122      50        167      75        212     100 
        33       0         78      25        123      50        168      75        213     100 
        34       1         79      26        124      51        169      76        214     101 
        35       1         80      26        125      51        170      76        215     101 
        36       2         81      27        126      52        171      77        216     102 
        37       2         82      27        127      52        172      77        217     102 
        38       3         83      28        128      53        173      78        218     103 
        39       3         84      28        129      53        174      78        219     103 
        40       4         85      29        130      54        175      79        220     104         
...

Ответы [ 2 ]

2 голосов
/ 18 сентября 2011

Вы уже печатаете выровненные столбцы, но их недостаточно.

Начните с распечатки

Farenheit equivalents of Celsius temperatures:  
Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit  
      0        32       0        32       0        32       0        32  
      1        33       1        33       1        33       1        33
    ...  

и подумайте, что вам нужно изменить в своей программе нараспечатайте нужный график.

0 голосов
/ 18 сентября 2011

Вы уже распечатываете построчно и печатаете 25 строк. Теперь подумайте об отношениях каждого столбца с предыдущими столбцами для каждой строки:

baseC   toF(baseC)   baseC+numRows   toF(baseC+numRows)     baseC+(2*numRows) ...
baseC+1 toF(baseC+1) baseC+1+numRows toF(baseC+1+numRows) baseC+1+(2*numRows) ...

Количество строк - это то же значение, которое вы используете, чтобы выяснить, сколько раз выполнить цикл.

Переменная цикла позаботится о части baseC+X.

Примечание. Это псевдокод, поэтому не ожидайте, что он будет работать напрямую:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...