Graphs/tools.hpp

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, " ");
}
}