Member 14185605 Ответов: 1

Как распечатать массив в Столбцах, показанных точно так же, как на картинке, и отсортировать его


Как мне сделать так, чтобы он печатал именно так, как эта картинка Изображение нажмите здесь Я хочу, чтобы он печатался от самого маленького до самого большого и т. д., а также Когда мы печатаем, он должен быть СРО-тирован от малого до большого числа.

<pre>#include <iostream>
#include "MyConsoleInput.h"	// for ReadInteger, ReadDouble

using namespace ConsoleInput;
using namespace std;


//temperature convert function
double temperatureConversion(double temperature)
{
	//convert the temperature
	double converted = temperature*(9/5)+32;
}

//output function
void output(double *farenheitArray, double *dynamicTempArray, int dayAmount)
{
	cout << "DAILY TEMPERATURE REPORT" << endl << "========================" << endl << endl;

	for(int counter = 0; counter <= dayAmount; counter++)
	{
		cout << "Day  " << counter++ << farenheitArray[counter] << "�F        " << dynamicTempArray[counter] << "�C";
	}
}

int main(int argc, char** argv)
{

	//initialize the dynamic array
	double *dynamicTempArray = NULL;



	//prompt the user for an input
	cout << "How many days do you want to enter?";

	//get the user's input for the array amount
	int dayAmount = ReadInteger(1, 365);

	try
	{
		//find heap space
		//set the array to the size of the user's choosing
		dynamicTempArray = new double[dayAmount];

		//for how many days starting at 0 read data into the array
		for (int counter = 0; counter <= dayAmount; counter++)
		{
			//create the variable and enter data into
			double userInput = ReadInteger(-90.0, 60.0);



			//set the current space in the array to the user input
			dynamicTempArray[counter] = userInput;
		}

		//create an array to hold the farenheit converted temperature
		double farenheitArray[dayAmount] = {NULL};


		//for each of the inputs call the temperature conversion function
		for(int counter = 0; counter <= dayAmount; counter++)
		{
			//convert the cuttent position in the array to the farenheit
			double farenheit = temperatureConversion(dynamicTempArray[counter]);

			//set the spot in the array to the fonverted temperature
			farenheitArray[counter] = farenheit;

			//if the counter is the day amount run the output function
			if (counter == dayAmount)
			{
				cout << farenheit << " ";
			}
		}

		//done with the array, set the memory free
		delete[] dynamicTempArray;
	}
	catch(bad_alloc & ex)
	{
		cout << "Error allocating memory" << endl;
	}

	return 0;
}


Что я уже пробовал:

Я не пробовал, потому что я новичок в c++, так что я понятия не имею, как это сделать

1 Ответов

Рейтинг:
8

CPallini

Действительно ли yopu нужно использовать массивы (и new)?
Попробуй

#include <vector>
#include <algorithm>
using namespace std;

struct Temperature
{
  Temperature(int day, double celsius):day(day),celsius(celsius){}
  int day;
  double celsius;
};

double farenh(double celsius){return celsius*9/5+32;}

ostream & operator << (ostream & os, const Temperature & t)
{
  os << "day " << t.day <<  " " << t.celsius << "°C " << farenh(t.celsius) << "°F";
  return os;
}

int main()
{
  vector <Temperature> vt;
  cout << "How many days do you want to enter?\n";
  size_t days;
  cin >> days;
  for ( size_t day = 0; day<days; ++day)
  {
    double celsius;
    cout << "Please inserte temperature (°C) of day " << (day+1) << "\n";
    cin >> celsius;
    vt.emplace_back( (day+1), celsius);
  }
  sort(vt.begin(), vt.end(), [](const Temperature & t1, const Temperature & t2) { return t1.celsius < t2.celsius;});

  for (const auto &  t : vt)
    cout << t << "\n";

}


Maciej Los

5ed!

CPallini

Спасибо тебе, Мацей!

Member 14185605

спасибо