Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Changing this Java programme into C++ import java.io.BufferedReader; import java

ID: 3787563 • Letter: C

Question

Changing this Java programme into C++

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class AverageWriter {

   public static void main(String[] args) {
       AverageWriter t = new AverageWriter();
       // Used to find average line by line and write in different line of output file
//       t.findAverageByLineWriteTo("src/INPUT.TXT","src/OUTPUT.TXT");
       // Used to find whole avarage and write in output file
       t.findAverageWriteTo("src/INPUT.TXT","src/OUTPUT.TXT");
   }
  
   public void findAverageWriteTo(String inputFile, String outputFile) {
       BufferedReader br = null;
       try {
           br = new BufferedReader(new FileReader(inputFile));
       StringBuilder sb = new StringBuilder();
       String line = br.readLine();
       int sum = 0;
       int totalNum = 0;
       while (line != null) {
       sb.append(line);
       sb.append(System.lineSeparator());
       if(line != null) {
           String[] strArray = line.split(" ");
           int[] nums = new int[strArray.length];
           for (int i=0; i<strArray.length; i++) {
                       nums[i] = Integer.parseInt(strArray[i]);
                       sum += nums[i];
                   }
           totalNum += nums.length;
             
       }
       line = null;
       line = br.readLine();
       }
       float average = sum/totalNum;
       AverageWriter t = new AverageWriter();
   t.writeToFile(outputFile, String.valueOf(average));
       System.out.println(average);
       String everything = sb.toString();
       System.out.println(everything);
       } catch (IOException e) {
           e.printStackTrace();
       } finally {
       try {
               br.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
   }

   public void findAverageByLineWriteTo(String inputFile, String outputFile) {
       BufferedReader br = null;
       try {
           br = new BufferedReader(new FileReader(inputFile));
       StringBuilder sb = new StringBuilder();
       String line = br.readLine();

       while (line != null) {
       sb.append(line);
       sb.append(System.lineSeparator());
       if(line != null) {
           String[] strArray = line.split(" ");
           int[] nums = new int[strArray.length];
           int sum = 0;
           for (int i=0; i<strArray.length; i++) {
                       nums[i] = Integer.parseInt(strArray[i]);
                       sum += nums[i];
                   }
           float average = sum/nums.length;
           AverageWriter t = new AverageWriter();
           t.appendToFile(outputFile, String.valueOf(average));
               System.out.println(average);
       }
       line = null;
       line = br.readLine();
       }
       String everything = sb.toString();
       System.out.println(everything);
       } catch (IOException e) {
           e.printStackTrace();
       } finally {
       try {
               br.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
   }
  
   public void writeToFile(String fileName, String content) {
       BufferedWriter bw = null;
       FileWriter fw = null;
       try {
           fw = new FileWriter(fileName);
           bw = new BufferedWriter(fw);
           bw.write(content);
           System.out.println("Done");
       } catch (IOException e) {
           e.printStackTrace();
       } finally {
           try {
               if (bw != null)
                   bw.close();
               if (fw != null)
                   fw.close();
           } catch (IOException ex) {
               ex.printStackTrace();
           }
       }
   }
  
   public void appendToFile(String fileName, String content) {
       BufferedWriter bw = null;
       FileWriter fw = null;
       try {
           fw = new FileWriter(fileName, true);
           bw = new BufferedWriter(fw);
           bw.write(content);
           bw.newLine();
           System.out.println("Done");

       } catch (IOException e) {
           e.printStackTrace();
       } finally {
           try {
               if (bw != null)
                   bw.close();
               if (fw != null)
                   fw.close();
           } catch (IOException ex) {
               ex.printStackTrace();
           }
       }
   }

}

Explanation / Answer

//.h file code:

#include <string>
#include <vector>
#include <iostream>
#include "stringbuilder.h"

class AverageWriter
{

   static void main(std::vector<std::wstring> &args);

   public:
   virtual void findAverageWriteTo(const std::wstring &inputFile, const std::wstring &outputFile);

   virtual void findAverageByLineWriteTo(const std::wstring &inputFile, const std::wstring &outputFile);
    public:
   virtual void writeToFile(const std::wstring &fileName, const std::wstring &content);

   virtual void appendToFile(const std::wstring &fileName, const std::wstring &content);

};

//stringbuilder.h:

//----------------------------------------------------------------------------------------
//   Copyright © 2007 - 2017 Tangible Software Solutions Inc.
//   This class can be used by anyone provided that the copyright notice remains intact.
//
//   This class is used to replace the Java StringBuilder in native C++.
//----------------------------------------------------------------------------------------
#include <string>
#include <sstream>

class StringBuilder
{
private:
   std::wstring privateString;

public:
   StringBuilder()
   {
   }

   StringBuilder(const std::wstring &initialString)
   {
       privateString = initialString;
   }

   StringBuilder(std::size_t capacity)
   {
       ensureCapacity(capacity);
   }

   wchar_t charAt(std::size_t index)
   {
       return privateString[index];
   }

   StringBuilder *append(const std::wstring &toAppend)
   {
       privateString += toAppend;
       return this;
   }

   template<typename T>
   StringBuilder *append(const T &toAppend)
   {
       privateString += toString(toAppend);
       return this;
   }

   StringBuilder *insert(std::size_t position, const std::wstring &toInsert)
   {
       privateString.insert(position, toInsert);
       return this;
   }

   template<typename T>
   StringBuilder *insert(std::size_t position, const T &toInsert)
   {
       privateString.insert(position, toString(toInsert));
       return this;
   }

   std::wstring toString()
   {
       return privateString;
   }

   std::size_t length()
   {
       return privateString.length();
   }

   void setLength(std::size_t newLength)
   {
       privateString.resize(newLength);
   }

   std::size_t capacity()
   {
       return privateString.capacity();
   }

   void ensureCapacity(std::size_t minimumCapacity)
   {
       privateString.reserve(minimumCapacity);
   }

   StringBuilder *remove(std::size_t start, std::size_t end)
   {
       privateString.erase(start, end - start);
       return this;
   }

   StringBuilder *replace(std::size_t start, std::size_t end, const std::wstring &newString)
   {
       privateString.replace(start, end - start, newString);
       return this;
   }

private:
   template<typename T>
   static std::wstring toString(const T &subject)
   {
       std::wostringstream ss;
       ss << subject;
       return ss.str();
   }
};

//.cpp file code:

void AverageWriter::main(std::vector<std::wstring> &args)
{
   AverageWriter *t = new AverageWriter();
   // Used to find average line by line and write in different line of output file
//       t.findAverageByLineWriteTo("src/INPUT.TXT","src/OUTPUT.TXT");
   // Used to find whole avarage and write in output file
   t->findAverageWriteTo(L"src/INPUT.TXT",L"src/OUTPUT.TXT");
}

void AverageWriter::findAverageWriteTo(const std::wstring &inputFile, const std::wstring &outputFile)
{
   BufferedReader *br = nullptr;
   try
   {
       FileReader tempVar(inputFile);
       br = new BufferedReader(&tempVar);
   StringBuilder *sb = new StringBuilder();
   std::wstring line = br->readLine();
   int sum = 0;
   int totalNum = 0;
   while (line != L"")
   {
   sb->append(line);
   sb->append(System::lineSeparator());
   if (line != L"")
   {
//JAVA TO C++ CONVERTER TODO TASK: There is no direct native C++ equivalent to the Java String 'split' method:
       std::vector<std::wstring> strArray = line.split(L" ");
       std::vector<int> nums(strArray.size());
       for (int i = 0; i < strArray.size(); i++)
       {
                   nums[i] = std::stoi(strArray[i]);
                   sum += nums[i];
       }
       totalNum += nums.size();

   }
   line = L"";
   line = br->readLine();
   }
   float average = sum / totalNum;
   AverageWriter *t = new AverageWriter();
t->writeToFile(outputFile, std::to_wstring(average));
   std::wcout << average << std::endl;
   std::wstring everything = sb->toString();
   std::wcout << everything << std::endl;
   }
   catch (const IOException &e)
   {
       e->printStackTrace();
   }
//JAVA TO C++ CONVERTER TODO TASK: There is no native C++ equivalent to the exception 'finally' clause:
   finally
   {
   try
   {
           delete br;
   }
       catch (const IOException &e)
       {
           e->printStackTrace();
       }
   }
}

void AverageWriter::findAverageByLineWriteTo(const std::wstring &inputFile, const std::wstring &outputFile)
{
   BufferedReader *br = nullptr;
   try
   {
       FileReader tempVar(inputFile);
       br = new BufferedReader(&tempVar);
   StringBuilder *sb = new StringBuilder();
   std::wstring line = br->readLine();

   while (line != L"")
   {
   sb->append(line);
   sb->append(System::lineSeparator());
   if (line != L"")
   {
//JAVA TO C++ CONVERTER TODO TASK: There is no direct native C++ equivalent to the Java String 'split' method:
       std::vector<std::wstring> strArray = line.split(L" ");
       std::vector<int> nums(strArray.size());
       int sum = 0;
       for (int i = 0; i < strArray.size(); i++)
       {
                   nums[i] = std::stoi(strArray[i]);
                   sum += nums[i];
       }
       float average = sum / nums.size();
       AverageWriter *t = new AverageWriter();
       t->appendToFile(outputFile, std::to_wstring(average));
           std::wcout << average << std::endl;
   }
   line = L"";
   line = br->readLine();
   }
   std::wstring everything = sb->toString();
   std::wcout << everything << std::endl;
   }
   catch (const IOException &e)
   {
       e->printStackTrace();
   }
//JAVA TO C++ CONVERTER TODO TASK: There is no native C++ equivalent to the exception 'finally' clause:
   finally
   {
   try
   {
           delete br;
   }
       catch (const IOException &e)
       {
           e->printStackTrace();
       }
   }
  
  
}


void AverageWriter::writeToFile(const std::wstring &fileName, const std::wstring &content)
{
   BufferedWriter *bw = nullptr;
   FileWriter *fw = nullptr;
   try
   {
       fw = new FileWriter(fileName);
       bw = new BufferedWriter(fw);
       bw->write(content);
       std::wcout << std::wstring(L"Done") << std::endl;
   }
   catch (const IOException &e)
   {
       e->printStackTrace();
   }
//JAVA TO C++ CONVERTER TODO TASK: There is no native C++ equivalent to the exception 'finally' clause:
   finally
   {
       try
       {
           if (bw != nullptr)
           {
               delete bw;
           }
           if (fw != nullptr)
           {
               delete fw;
           }
       }
       catch (const IOException &ex)
       {
           ex->printStackTrace();
       }
   }
}

void AverageWriter::appendToFile(const std::wstring &fileName, const std::wstring &content)
{
   BufferedWriter *bw = nullptr;
   FileWriter *fw = nullptr;
   try
   {
       fw = new FileWriter(fileName, true);
       bw = new BufferedWriter(fw);
       bw->write(content);
       bw->newLine();
       std::wcout << std::wstring(L"Done") << std::endl;

   }
   catch (const IOException &e)
   {
       e->printStackTrace();
   }
//JAVA TO C++ CONVERTER TODO TASK: There is no native C++ equivalent to the exception 'finally' clause:
   finally
   {
       try
       {
           if (bw != nullptr)
           {
               delete bw;
           }
           if (fw != nullptr)
           {
               delete fw;
           }
       }
       catch (const IOException &ex)
       {
           ex->printStackTrace();
       }
   }
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote