Loading...
pesosz avatar pesosz 4 Точки

Задача 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;
}

 

Тагове:
0
C++ Advanced
MartinBG avatar MartinBG 4803 Точки
  1. readWhitespaceSeparatedValuesLine връща като резултат std::vector<std::string>
  2. първият [0] връща първият елемент във вектора, който е от тип string
  3. вторият [0] връща първият символ (тип char) от string-a който сме селектирали в т.2
  4. char - char дава разликата между ASCII кодовете на двата символа. На практика се изполва като прост и лесен начин за получаване на цифровото изражение на char, ако той е от '0' до '9' вкл.
    Например: '9' - '0' =  39 - 30 = 9

 

int minCharacteristic = readWhitespaceSeparatedValuesLine()[0][0] - '0';

С други думи този код извиква метода, взема първия елемент (string) от резултата, взема му първият символ и го преобразува до число (при правилен вход се очаква да ни върне int от 0 до 9).

 

1
31/01/2019 22:48:15
pesosz avatar pesosz 4 Точки

Демек е на принципа на мартриците? Взима ред, който в случая е стринга и  стълб, който се явява първият char от този стринг...
Добре, но не разбрах как трябва да използвам тези булеви функции, които се намират над main-a - Те приемат като входни данни два стринга и ги сравняват по 3 условия, това е ясно, но по-долу в мейн-а като аргумент към хедъра който ние трябва да направим, се подават Вектор заедно с една от тези булеви функции. Не разбирам как точно трябва да ги използвам и как се попълват те, също и кои два стринга сравняват?

0
NKolev avatar NKolev 6 Точки

Функцията която ти трябва да напишеш трябва да приема като аргументи, вектора от стрингове и указател към функция. В мейна като се извика твоята функция като параметри ще и се подадът вектора и една от булевите функции: lessThanByLex, lessThanBySize, moreThanBySize, в зависимост от подадената цифра 1,2,3 от конзолата. Подавайки различна булева функция като параметър на твоята функция се открива съответно най-дългия, най-късия или лекскографски най-малкия стринг от вектора. За целта обаче трябва да си имплементираш алгоритъм който обхожда вектора и на всяка стъпка вика подадената булева функция. 

2
01/02/2019 10:02:32
BobyTopalova avatar BobyTopalova 26 Точки

След, толкова обяснения, пак имам въпрос. Този функция трябва я напишем в три варианта с различни параметри, така ли?

Извинявам се, трудно ми е.

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.