Итак, здесь я получил код, который подсчитывает количество строк символов и слов в файле. Теперь мне нужно реализовать одно и то же для нескольких файлов. В основном мой код должен читать количество слов и строк символов в каждом файле и должен давать общее количество слов и строк символов (сложение количества слов и строк символов из каждого файла. Мне также нужна помощь, выполняющая код для слабо сформированных аргументов , файл не найден и непризнанные аргументы. Вот мой код, я попытался его скомпилировать, но он может читать только количество символов и символов в каждом файле, а не суммировать общее количество. Спасибо, ребята. Любая помощь высоко оценили или предложения.Как подсчитать общее количество слов и строк символов в двух файлах и добавить их в соответствие с итогами?
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
int main(int argc, char*argv[])
{
if (argc<2){
cout<<"You did not enter enough arguments, Please try again, close this cd window and enter the correct filename"<<endl;
}
else{
string filename;
ifstream thefile;
int i;
for(i=1,i<=argc;(i++);){
filename=argv[i];
int charactercounter=0, linecounter=1, wordcounter=1, totalLines, totalWords,totalCharacters;
thefile.open(filename);
if(!thefile.is_open()){
cout<<"file does not exist"<<endl;
}
else if(thefile.fail()){
cout<<"arguments can't be recognized"<<endl;
}
if(thefile.is_open() && thefile.good()){
while(!thefile.eof()){
char ch;
while(ch!=EOF){
charactercounter++;
totalCharacters=totalCharacters+charactercounter;
if (ch=='\n')
linecounter++;
totalLines=totalLines+linecounter;
if (ch==' ')
wordcounter++;
totalWords=totalWords+wordcounter;
ch=thefile.get();
}
}
cout<<setw(12)<<"Lines"<<' '<< linecounter;
cout<<' ';
cout<<setw(12)<<"words"<<' '<< wordcounter;
cout<<' ';
cout<<setw(12)<<"characters"<<' '<< charactercounter;
cout<<' ';
cout<<setw(12)<<"filename"<<' '<<argv[i];
cout<<' ';
cout<<setw(12)<<"totallines"<<' '<<totalLines;
cout<<' ';
cout<<setw(12)<<"totalwords"<<' '<<totalWords;
cout<<' ';
cout<<setw(12)<<"totalchars"<<' '<<totalCharacters;
cout<<' ';
thefile.close();
}
}
}
}
Добро пожаловать в Переполнение стека. Пожалуйста, найдите время, чтобы прочитать [The Tour] (http://stackoverflow.com/tour) и обратитесь к материалу из [Справочного центра] (http://stackoverflow.com/help/asking) о том, что и как вы можете спросите здесь. –
Правильный инструмент для решения таких проблем - ваш отладчик. Перед тем, как просить о переполнении стека, вы должны пропустить свой код по очереди *. Для получения дополнительной информации, пожалуйста, прочтите [Как отлаживать небольшие программы (Эрик Липперт)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Как минимум, вы должны \ [изменить] ваш вопрос, чтобы включить пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), который воспроизводит вашу проблему, а также замечания, сделанные вами в отладчик. –
Этот код непросто для человека читать, и это затрудняет поиск ошибок. Должен использовать функцию/класс для разных частей программы. Таким образом, вы можете написать модульные тесты, чтобы проверить, какая функция/класс не ведет себя так, как ожидалось, вместо того, чтобы много раз искать всю программу для поиска каждой ошибки. Разработка хорошей архитектуры программного обеспечения до написания программы и написания модульных тестов может помочь. –