72 lines
No EOL
1.9 KiB
C++
72 lines
No EOL
1.9 KiB
C++
#pragma once
|
|
#include <iostream>
|
|
#include <string>
|
|
#include <cstring>
|
|
#include <typeinfo>
|
|
|
|
namespace tls {
|
|
|
|
using Weight = float;
|
|
using Value = int;
|
|
using Index = int;
|
|
using Size = int;
|
|
|
|
struct DiEgo {
|
|
|
|
public:
|
|
Index *kusochki;
|
|
Size size_kusochki;
|
|
|
|
void strock(tls::Index origin);
|
|
|
|
DiEgo() {
|
|
kusochki = nullptr;
|
|
size_kusochki = 0;
|
|
}
|
|
// ~DiEgo() {
|
|
// delete[] kusochki;
|
|
// // delete this;
|
|
// }
|
|
|
|
};
|
|
|
|
}
|
|
|
|
void tls::DiEgo::strock(tls::Index origin) {
|
|
|
|
std::string input;
|
|
|
|
// Очищаем буфер от возможных остатков
|
|
std::cin.clear();
|
|
|
|
// Читаем всю строку
|
|
std::cout << "Enter links for Node " << origin << ": ";
|
|
std::getchar(); // Проглотим символ новой строки
|
|
std::cin >> std::noskipws; // Отключаем пропуск пробелов
|
|
|
|
// Читаем символы до символа новой строки
|
|
char ch;
|
|
while (std::cin.get(ch) && ch != '\n') {
|
|
input += ch;
|
|
}
|
|
|
|
//Подсчет количества чисел в строке
|
|
size_kusochki = 0;
|
|
for (char c : input) {
|
|
if (c == ' ') size_kusochki++;
|
|
}
|
|
size_kusochki++; // Добавляем 1, так как после последнего числа нет пробела
|
|
if (size_kusochki == 0) return; //выход из рекурсии
|
|
|
|
|
|
kusochki = new int[size_kusochki];
|
|
|
|
// Разбиваем строку и записываем числа в массив
|
|
int i = 0;
|
|
char* token = strtok(const_cast<char*>(input.c_str()), " ");
|
|
while (token) {
|
|
kusochki[i++] = std::stoi(std::string(token));
|
|
token = strtok(NULL, " ");
|
|
}
|
|
|
|
} |