Тема: Допоможіть будь ласка з перенесенням коду мовою Сі на С++.
Всім привіт. Зіткнувся з великими трудностями з перенесенням лаби мовою Сі на С++. Просидів доволі багато часу, навіть дописав її до кінця. Як на мою думку це б мало працювати, но звісно ж все не так).
Кому не важко, можете підказати, що мені варто переробити, що вся працювало. Отож, постановка задачі:
Сформувати файл “К”, що містить інформацію про кубики: розмір кожного кубика (довжина ребра в см), колір (червоний, жовтий, зелений або синій), матеріал (дерево, метал, картон).
Переписати у файл “КІ” дані:
- кількість кубиків кожного з кольорів і їх сумарний об’єм;
- кількість дерев’яних кубиків з ребром 3 см.
===================================================================================
Код написаний мовою Сі:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
char size[][15] = { "3", "5", "7", "7", "5", "3", "5", "7", "3" };
char color[][15] = { "red", "yellow", "blue", "blue", "yellow", "red",
"yellow", "blue", "red" };
char material[9][15] = { "wood", "metal", "carton", "carton", "metal",
"wood", "metal", "wood", "carton" };
int extent[9], counter=0;
FILE* K;
K = fopen("K.txt", "w");
for (int i = 0; i < 9; i++) {
fprintf(K, "\n%s \n%s \n%s", size[i], color[i], material[i]);
}
fclose(K);
FILE* Info;
Info = fopen("K.txt", "r");
for (int i = 0; i < 9; i++){
fscanf(Info,"%s %s %s", size[i], color[i], material[i]);
if((strcmp(size[i], "3" ) == 0 && strcmp(material[i], "wood") == 0)) {
counter++;
}
}
fclose(Info);
FILE *KI;
KI = fopen("KI.txt", "w");
for (int i = 0; i < 9; i++) {
extent[i] = pow(atoi(size[i]),3);
fprintf(KI, "\nExtent for Cube[%i]= %i;",i+1, extent[i]);
}
fprintf(KI, "\n\nAmount of cubes with size three and wood material = %i;",
counter);
fclose(KI);
}
===================================================================================
Розумію, можливо він не ідеальний, но і такий пройшов при перевірці.
І ось мої спроби переписати цей код мовою С++
===================================================================================
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstring>
#include <string>
using namespace std;
int main() {
char size[][15] = { "3", "5", "7", "7", "5", "3", "5", "7", "3" };
char color[][15] = { "red", "yellow", "blue", "blue", "yellow", "red","yellow", "blue", "red" };
char material[9][15] = { "wood", "metal", "carton", "carton", "metal","wood", "metal", "wood", "carton" };
int extent[9], counter = 0;
ofstream fout;
fout.open("K.txt");
if (!fout.is_open()) {
cout << "Error! File isn't founded!" << endl;
}
else {
for (int i = 0; i < 9; i++) {
fout << size[i] << "\n" << color[i] << "\n" << material[i] << "\n" << endl;
}
fout.close();
}
ifstream fin;
fin.open("K.txt");
if (!fin.is_open()) {
cout << "Error! File isn't founded!" << endl;
}
else {
char info[i] = "";
while (!fin.eof()) {
fin >> info;
cout << info << endl;
}
for (int i = 0; i < 256; i++) {
if ((strcmp(info[i], "3") == 0 && strcmp(info[i], "wood") == 0)) {
counter++;
}
}
}
fin.close();
ofstream foutS;
foutS.open("KI.txt");
if (!foutS.is_open()) {
cout << "Error! File isn't founded!" << endl;
}
else {
for (int i = 0; i < 256; i++) {
extent[i] = pow(atoi(info[i]), 3);
foutS << "\nExtent for Cube[" << i + 1 << "] = " << extent[i] << ";" << endl;
}
foutS << "\nEAmount of cubes with size three and wood material" = << counter << endl;
}
===================================================================================
Старався виконати, но безрезультатно. Кому неважко, прошу допомогти з виконанням. Пояснити якось, чи переписати частинку чи весь код, щоб я міг зрозуміти, що не так. Дякую!