Помните, мы с вами создавали класс «Массив», в котором было несколько методов:
конструкторы (по умолчанию, копирования и конструктор, создающий массив определенной длины) и деструктор;
операции ввода, вывода и присваивания;
метод переворота массив задом наперёд.
Найдите своё решение этой задачи и сделайте класс шаблонным.
В этой задаче вам даются 3 массива: массив целых чисел, массив символов и массив дробей. Считайте все три массива, переверните их и выведите на экран.
Формат входных данных
Во входных данных даны три массива: сначала массив чисел, потом массив символов, и, наконец массив дробей. Длины каждого из массивов не превышают 1000 элементов.
Элементы в массивах выводятся через пробел. Все числа не превышают по модулю 109, знаменатели дробей не равны 0, а символы имеют ASCII-коды в диапазоне от 32 до 126.
Формат выходных данных
Требуется вывести массивы после переворота. Дроби в последнем массиве сокращать не нужно.
входные данные
5
3 9 1 5 11
4
w o r d
5
1/2 5/4 10/10 7/4 11/13
выходные данные
5
11 5 1 9 3
4
d r o w
5
11/13 7/4 10/10 5/4 1/2
C/C++
Помогите пожалуйста с задачей на c++, если кто-нибудь захочет помочь.
#include <algorithm>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
struct Fraction {
pair<int, int> frac;
Fraction() : frac({ 0, 1 }) {}
Fraction operator()(int x) {
Fraction f;
f.frac.first = frac.first * x;
f.frac.second = frac.second * x;
return f;
}
pair<int, int> split(const string& str, char delim = '/') {
stringstream ss(str);
string token;
pair<int, int> box;
getline(ss, token, delim);
box.first = stoi(token);
getline(ss, token);
box.second = stoi(token);
return box;
}
friend istream& operator>>(istream& inp, Fraction& f) {
string line;
inp >> line;
f.frac = f.split(line);
return inp;
}
friend ostream& operator<<(ostream& out, const Fraction& f) {
return out << f.frac.first << '/' << f.frac.second;
}
friend bool operator<(const Fraction& a, const Fraction& b) {
return double(a.frac.first) / a.frac.second < double(b.frac.first) / b.frac.second;
}
};
unsigned length() {
unsigned value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int main() {
auto la = length();
auto a = new int[la];
for (auto i = 0U; i < la; ++i) cin >> a[i];
auto lb = length();
auto b = new char[lb];
for (auto i = 0U; i < lb; ++i) cin >> b[i];
auto lc = length();
auto c = new Fraction[lc];
for (auto i = 0U; i < lc; ++i) cin >> c[i];
auto ma = *max_element(a, a + la);
delete[] a;
auto mb = *max_element(b, b + lb);
delete[] b;
auto mc = *max_element(c, c + lc);
delete[] c;
cout << '\n' << ma << '\n' << mb << '\n' << mc << '\n';
system("pause > nul");
}
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
struct Fraction {
pair<int, int> frac;
Fraction() : frac({ 0, 1 }) {}
Fraction operator()(int x) {
Fraction f;
f.frac.first = frac.first * x;
f.frac.second = frac.second * x;
return f;
}
pair<int, int> split(const string& str, char delim = '/') {
stringstream ss(str);
string token;
pair<int, int> box;
getline(ss, token, delim);
box.first = stoi(token);
getline(ss, token);
box.second = stoi(token);
return box;
}
friend istream& operator>>(istream& inp, Fraction& f) {
string line;
inp >> line;
f.frac = f.split(line);
return inp;
}
friend ostream& operator<<(ostream& out, const Fraction& f) {
return out << f.frac.first << '/' << f.frac.second;
}
friend bool operator<(const Fraction& a, const Fraction& b) {
return double(a.frac.first) / a.frac.second < double(b.frac.first) / b.frac.second;
}
};
unsigned length() {
unsigned value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int main() {
auto la = length();
auto a = new int[la];
for (auto i = 0U; i < la; ++i) cin >> a[i];
auto lb = length();
auto b = new char[lb];
for (auto i = 0U; i < lb; ++i) cin >> b[i];
auto lc = length();
auto c = new Fraction[lc];
for (auto i = 0U; i < lc; ++i) cin >> c[i];
auto ma = *max_element(a, a + la);
delete[] a;
auto mb = *max_element(b, b + lb);
delete[] b;
auto mc = *max_element(c, c + lc);
delete[] c;
cout << '\n' << ma << '\n' << mb << '\n' << mc << '\n';
system("pause > nul");
}
Azizbek Temirov
https://pastebin.com/ZBWCTwtY
Azizbek Temirov
вроде неплохо вышло:)
это через цикл можно сделать, в котором начинается с самого последнего и отнимаю по 1 заканчивает последним, ща напишу
Виктор Савельев
как то так
#include
using namespace std;
void main
{
const int SIZE = 3;
arr[SIZE]{ "слово",7,"жиз" };
for (int i = SIZE; i < 0;i--)
{
cout << arr[i] << endl;
}
}
#include
using namespace std;
void main
{
const int SIZE = 3;
arr[SIZE]{ "слово",7,"жиз" };
for (int i = SIZE; i < 0;i--)
{
cout << arr[i] << endl;
}
}
Похожие вопросы
- Помогите пожалуйста решить задачу на C ИЛИ C#
- Всем привет. Помогите пожалуйста с задачей на C++
- Помогите пожалуйста с задачей на C++
- Помогите пожалуйста с задачей на C++
- Помогите пожалуйста решить задачу на C++
- Объясните, пожалуйста, смысл задачи на C++
- ПОМОГИТЕ С ЗАДАЧЕЙ НА C++
- Помогите решить задачу по C++!
- Помогите с задачей по C++
- Помогите решить задачу на C++