Задача 1 от Второто домашно
Може ли някой да ми разясни какво точно прати подчертания ред? Ето го и целият код:
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include "MinBy.h"
std::vector<std::string> readWhitespaceSeparatedValuesLine() {
std::vector<std::string> values;
std::string line;
std::getline(std::cin, line);
std::istringstream lineIn(line);
std::string value;
while (lineIn >> value) {
values.push_back(value);
}
return values;
}
bool lessThanBySize(const std::string& a, const std::string& b) {
return a.size() < b.size();
}
bool lessThanByLex(const std::string& a, const std::string& b) {
return a < b;
}
bool moreThanBySize(const std::string& a, const std::string& b) {
return a.size() > b.size();
}
int main() {
std::vector<std::string> values = readWhitespaceSeparatedValuesLine();
int minCharacteristic = readWhitespaceSeparatedValuesLine()[0][0] - '0';
switch (minCharacteristic)
{
case 1:
std::cout << minBy(values, lessThanByLex) << std::endl;
break;
case 2:
std::cout << minBy(values, lessThanBySize) << std::endl;
break;
case 3:
std::cout << minBy(values, moreThanBySize) << std::endl;
break;
default:
break;
}
return 0;
}
Демек е на принципа на мартриците? Взима ред, който в случая е стринга и стълб, който се явява първият char от този стринг...
Добре, но не разбрах как трябва да използвам тези булеви функции, които се намират над main-a - Те приемат като входни данни два стринга и ги сравняват по 3 условия, това е ясно, но по-долу в мейн-а като аргумент към хедъра който ние трябва да направим, се подават Вектор заедно с една от тези булеви функции. Не разбирам как точно трябва да ги използвам и как се попълват те, също и кои два стринга сравняват?
Функцията която ти трябва да напишеш трябва да приема като аргументи, вектора от стрингове и указател към функция. В мейна като се извика твоята функция като параметри ще и се подадът вектора и една от булевите функции: lessThanByLex, lessThanBySize, moreThanBySize, в зависимост от подадената цифра 1,2,3 от конзолата. Подавайки различна булева функция като параметър на твоята функция се открива съответно най-дългия, най-късия или лекскографски най-малкия стринг от вектора. За целта обаче трябва да си имплементираш алгоритъм който обхожда вектора и на всяка стъпка вика подадената булева функция.
След, толкова обяснения, пак имам въпрос. Този функция трябва я напишем в три варианта с различни параметри, така ли?
Извинявам се, трудно ми е.