код:
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
//help
if (argc==1)
std::cout << "use help to see info\n";
else if (!strcmp(argv[1],"help"))
std::cout << "./command input_file.txt output_file.txt\n";
else
{
std::string filename = argv[1];
// открываем файловый поток
std::fstream myfile(filename);
if (myfile)
{
// сообщение о успешном открытии потока
std::cout << "OK!\n";
while (!myfile.eof()) {
// обнуляю данные
int startSpace=0, endSpace=0, sizeFW=0, sizeLW=0;
std::string inner;
// беру строку
getline(myfile, inner);
// ищу пробелы в начале и конце строки, а также размер первого и второго числа
for (int i=0; inner[i]==' '; i++)
startSpace++;
for (int i=inner.size()-1; inner[i]==' '; i--)
endSpace++;
for (int i=startSpace; inner[i]=='0'||inner[i]=='1'||inner[i]=='2'||inner[i]=='3'||inner[i]=='4'||inner[i]=='5'||inner[i]=='6'||inner[i]=='7'||inner[i]=='8'||inner[i]=='9'; i++)
sizeFW++;
if (inner.size()>startSpace+endSpace+sizeFW){
for (int i=inner.size()-(endSpace+1); inner[i]=='0'||inner[i]=='1'||inner[i]=='2'||inner[i]=='3'||inner[i]=='4'||inner[i]=='5'||inner[i]=='6'||inner[i]=='7'||inner[i]=='8'||inner[i]=='9'; i--)
sizeLW++;
}else{sizeLW=(-1);}
std::cout << "исходная строка: |" << inner << "|\n\tвсего в строке " << inner.size() << " символов, перед строкой " << startSpace << " пробелов, после строки " << endSpace << " пробелов, первое слово из " << sizeFW << " букв, последнее слово из " << sizeLW << " букв\n";
// если в строке больше 1 слова
if (sizeLW != (-1)){
char* startPlace = new char[startSpace];
for (int i=0; i<startSpace; i++)
startPlace[i] = ' ';
char* endPlace = new char[endSpace];
for (int i=0; i<endSpace; i++)
endPlace[i] = ' ';
char* newFirstWord = new char[sizeFW];
for(int i=inner.size()-sizeLW-endSpace; i<inner.size()-endSpace; i++)
newFirstWord[i-(inner.size()-sizeLW-endSpace)] = inner[i];
char* newLastWord = new char[sizeLW];
for(int i=startSpace; i<startSpace+sizeFW; i++)
newLastWord[i-startSpace] = inner[i];
char* newMidleLine = new char[inner.size()-sizeFW-sizeLW-startSpace-endSpace];
for(int i=startSpace+sizeFW; i<inner.size()-sizeLW-endSpace; i++)
newMidleLine[i-(startSpace+sizeFW)] = inner[i];
std::cout << "startPlace: |" << startPlace << "|\n";
std::cout << "newFirstWord: |" << newFirstWord << "|\n";
std::cout << "newMidleLine: |" << newMidleLine << "|\n";
std::cout << "newLastWord: |" << newLastWord << "|\n";
std::cout << "endPlace: |" << endPlace << "|\n";
printf("\n меняю на |%s%s%s%s%s|\n", startPlace, newFirstWord, newMidleLine, newLastWord, endPlace);
delete[] startPlace; delete[] newFirstWord; delete[] newMidleLine; delete[] newLastWord; delete[] endPlace;
}
}
}else{
//сообщение об ошибке открытия потока
std::cout <<"ERROR!\n";}}
return 0;
}
файл:
123 4566
112233 4567 7890
2143567
1 2 3 4 5 6 7 8 9 0
вывод:
OK!
исходная строка: |123 4566 |
всего в строке 11 символов, перед строкой 0 пробелов, после строки 3 пробелов, первое слово из 3 букв, последнее слово из 4 букв
startPlace: ||
newFirstWord: |4566|
newMidleLine: | |
newLastWord: |123|
endPlace: | |
меняю на |4566 123 |
исходная строка: | 112233 4567 7890|
всего в строке 19 символов, перед строкой 3 пробелов, после строки 0 пробелов, первое слово из 6 букв, последнее слово из 4 букв
startPlace: | 1�U|
newFirstWord: |7890�U|
newMidleLine: | 4567 |
newLastWord: |112233|
endPlace: |@��1�U|
меняю на | 1�U7890�U 4567 112233@��1�U|
исходная строка: |2143567|
всего в строке 7 символов, перед строкой 0 пробелов, после строки 0 пробелов, первое слово из 7 букв, последнее слово из -1 букв
исходная строка: |1 2 3 4 5 6 7 8 9 0|
всего в строке 19 символов, перед строкой 0 пробелов, после строки 0 пробелов, первое слово из 1 букв, последнее слово из 1 букв
startPlace: ||
newFirstWord: |0��1�U|
newMidleLine: | 2 3 4 5 6 7 8 9 |
newLastWord: |1��1�U|
endPlace: |���1�U|
меняю на |0��1�U 2 3 4 5 6 7 8 9 1��1�U���1�U|
исходная строка: ||
всего в строке 0 символов, перед строкой 0 пробелов, после строки 0 пробелов, первое слово из 0 букв, последнее слово из -1 букв
с каждым запуском программы мусор разный, но повторяется во всех строках.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я совсем поверхностно знаю с++, но эту проблему мне необходимо срочно решить(нет времени на прочтение книги)
Есть некие глобальные библиотеки заданные в IDEA, могу ли я их подключить в buildgradle? Если я подключаю их вручную, то они сбрасываются при первом...
Есть олимпиадная задача, ограничение по памяти 256 мебибайтНужно создать матрицу 100000 х 100000