Почему printf не выводит переменные?
printf("%s", "Znachenie", &p);
printf("%s %f", "Znachenie", p);
printf("Znachenie %f", p);
#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>
using namespace std;
auto fx = [](int x){
int r = 0;
switch(x % 3)
{
case 0:
r = x * x;
break;
case 1:
r = x;
break;
default:
r = x / 3;
break;
}
return r;
};
auto calculate = [](const vector<int>& vx, auto fx){
vector<int> calcValues(vx.size());
transform(vx.begin(), vx.end(), calcValues.begin(), fx);
return calcValues;
};
int main()
{
cout << "Введи кол-во чисел: ";
int n = 0;
cin >> n;
cout << "Введи через пробел " << n << " натуральных чисел:\n" << "$: ";
vector<int> values(n);
copy_n(istream_iterator<int>(cin), n, values.begin());
cout << "Результат твоих расчетов:\n";
copy_n(calculate(values, fx).begin(), n, ostream_iterator<int>(cout, "\n"));
}
Даны натуральные числа
#include <iostream>
#include <set>
#include <utility>
#include <string>
using namespace std;
int main()
{
multiset<pair<string, string>> pss{
{"one", "one"}, {"two", "two"}, {"two", "two"},
{"three", "three"}, {"three", "three"}, {"three", "three"}
};
auto cnt = pss.count({"three", "three"});
cout << R"(pss.count({"three", "three"}))" << " == " << cnt << endl;
}
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
using namespace std;
int main()
{
size_t n = 4;
string s = "42 54 35 76";
istringstream is(s);
vector<int> v;
copy_n(istream_iterator<int>(is), n, back_inserter(v));
/*******
** vector<int> v2(n);
** copy_n(istream_iterator<int>(is), n, v.begin());
*******/
copy_n(v.begin(), n, ostream_iterator<int>(cout, " "));
}
#include<iostream>
#include<filesystem>
#include<string>
using namespace std;
namespace fs = filesystem;
auto getDirectorySize(const fs::path& p)
{
uintmax_t size = 0;
if(fs::is_directory(p))
{
for(const auto& f : fs::directory_iterator(p))
{
size += f.file_size();
}
}
return size;
}
int main()
{
string directory{ "C:\\TEMP" };
fs::path dp{ directory };
auto size{ getDirectorySize(dp) };
cout << "size of " << directory
<< " " << size
<< " bytes" << endl;
}
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
size_t getFileSize(const string& filename)
{
ifstream ifs(filename);
size_t size = 0;
if(ifs)
{
ifs.seekg(0, ios_base::end);
size = ifs.tellg();
}
return size;
}
int main()
{
vector<string> filenames{
"C:\\TEMP\\aaa.txt", "C:\\TEMP\\bbb.txt", "C:\\TEMP\\ccc.txt"
};
size_t size = 0;
for(const string& fn : filenames)
{
size += getFileSize(fn);
}
cout << "Size: " << size << endl;
}
развернуть
// LEFT --> [127 ... 0] --> [32 ... 4095]
//
// RIGHT --> [129 ... 255] --> [32 ... 4095]
int calc_speed(int value)
{
int speed = 0; // для наглядности без ? :
if(value > 128)
{
speed = 4095 / 127 * (value - 128);
}
else
{
speed = 4095 / 127 * (128 - value);
}
return speed;
}
void drive_forward(int speed)
{
MSS.analogWrite(15, 0);
MSS.analogWrite(14, speed);
}
void drive_backward(int speed)
{
MSS.analogWrite(14, 0);
MSS.analogWrite(15, speed);
}
void stop()
{
MSS.analogWrite(14, 0);
MSS.analogWrite(15, 0);
}
void move()
{
int ds = ps2x.Analog(PSS_LX);
if(ds > 128)
{
drive_forward(calc_speed(ds));
}
else if(ds < 128)
{
drive_backward(calc_speed(ds));
}
else
{
stop();
}
}
гуглил, что-то не выходит понять
но почему она не возвращает значения сразу , а только в конце? каким образом происходит сравнение?
template<class ForwardIt, class Compare>
ForwardIt min_element(ForwardIt first, ForwardIt last, Compare comp)
{
if (first == last) return last;
ForwardIt smallest = first;
++first;
for (; first != last; ++first) { // не возвращает значения сразу
if (comp(*first, *smallest)) { // каким образом происходит сравнение
smallest = first;
}
}
return smallest; // а только в конце
}
написал код чтобы легче было ориентироваться
#include<cmath>
// ...
int result = *min_element(array.begin(), array.end(), [](int a, int b) { return abs(a) < abs(b); });
// ...
while (!(cin >> x) or cin.get() != '\n')
пока( не (прочитать из буфера ввода целое) или прочитанный из буфера символ не равен '\n')
не понимаю как работает второй while.
while (cin.get() != '\n');
пока(прочитанный из буфера символ не равен '\n') nop
string s;
getline(cin, s);
istringstream is(s);
while(is >> s)
{
int i = 0;
try
{
i = stoi(s);
}
catch(exception& e)
{
cout << "Ошибка: " << e.what() << " " << s << "\n";
continue;
}
cout << "i == " << i << "\n";
}
string msg = "Съешь ещё этих мягких французских булок";
ostringstream os;
os << "Съешь ещё этих мягких французских булок\n"
<< "Съешь ещё этих мягких французских булок\n"
<< "Съешь ещё этих м"
<< "ягких французских булок\n"
<< "Съешь ещё этих мягких французских булок\n";
istringstream is(os.str());
string line;
while(is)
{
getline(is, line);
if(is.fail())
{
os.str("");
os << line;
break;
}
cout << "line: " << line << "\n";
}
float i, a, x = 0;
float i;
float a;
float x = 0;
Подскажите пожалуйста, где я ошибаюсь..
float y = ((i + x) / (2.5 * i + pow(x, i)) ) + a * pow(sin(x), i + 1);
float y = x / 1;
Oct 2 23:39:48 dvrh systemd-resolved[562]: Server returned er....
#include <iostream>
#include <string>
#include <fstream>
#include <sys/utsname.h>
std::string getTimestamp(const std::string& line)
{
auto pos = line.rfind(' ');
return line.substr(pos + 1, line.size() - pos);
}
int main(int argc, char* argv[])
{
if(argc < 3)
{
std::cerr << "usage: file timestamp timestamp\n/var/log/syslog 11:00:00 12:00:00\n";
exit(EXIT_FAILURE);
}
struct utsname uts;
if(uname(&uts) == -1)
{
exit(EXIT_FAILURE);
}
if(std::ifstream flog(argv[1]); flog)
{
std::string start{argv[2]};
std::string stop {argv[3]};
std::string line;
while(getline(flog, line))
{
std::string header = getTimestamp(line.substr(0, line.find(uts.nodename) - 1));
if(header >= start && header <= stop)
{
std::cout << line << "\n";
}
}
}
else
{
std::cerr << "Cannot open file: " << argv[1];
}
}
Я так понимаю такая функция есть в MySQL.h
#ifdef WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#endif
accept(int, int, int)
#include<WinSock2.h>
#include<WS2tcpip.h>
#undef WIN32_LEAN_AND_MEAN
#include "MySQL.h"
Как сделать чтобы string считывался?
Не могу понять почему не получается с помощью getline это сделать.
#include <string> // не "string.h" (Си) и не <cstring>
// ...
getline(cin, mvd->specialisty);
// ...
#include <iostream>
#include <vector>
#include <tuple>
using namespace std;
int main()
{
vector<vector<tuple<int, int, int>>> values(3);
values[0].emplace_back(1, 2, 3);
values[1].emplace_back(4, 5, 6);
values[2].emplace_back(7, 8, 9);
for(const auto& xv : values)
{
for(const auto [one, two, three] : xv)
{
cout << one << " " << two << " " << three;
}
cout << "\n";
}
cin.get();
}
Где я могу такое найти?
Можно помочь с ответом, а не включать своё остроумие, подсказка небольшая.
#include<iostream>
#include<string>
#include<vector>
#include<iterator>
#include<memory>
#include<sstream>
#include<Windows.h>
using namespace std;
enum class spType {ALL, SP, TH};
class Policlinic
{
public:
Policlinic();
~Policlinic();
// ...
void addSpecialists(const string& s);
void addTherapists(const string& s);
void printPersonnel(spType = spType::ALL);
// ...
// Геттеры Сеттеры сам по шаблону
// ...
private:
struct Personnel;
unique_ptr<Personnel> m_personnel;
string desk;
string type;
unsigned pharmacy = 0;
friend istream& operator>>(istream& is, vector<string>& values);
friend ostream& operator<<(ostream& os, const vector<string>& values);
};
struct Policlinic::Personnel
{
vector<string> specialists;
vector<string> therapists;
};
Policlinic::Policlinic() : m_personnel(make_unique<Personnel>())
{
}
Policlinic::~Policlinic()
{
}
istream& operator>>(istream& is, vector<string>& values)
{
copy(istream_iterator<string>{is}, {}, back_inserter(values));
return is;
}
ostream& operator<<(ostream& os, const vector<string>& values)
{
copy(values.begin(), values.end(), ostream_iterator<string>{os, "\n"});
return os;
}
void Policlinic::addSpecialists(const string& s)
{
istringstream is(s);
is >> m_personnel->specialists;
}
void Policlinic::addTherapists(const string& s)
{
istringstream is(s);
is >> m_personnel->therapists;
}
void Policlinic::printPersonnel(spType stype)
{
switch(stype)
{
case spType::SP:
cout << "Специалисты:\n"
<< m_personnel->specialists;
break;
case spType::TH:
cout << "Терапевты:\n"
<< m_personnel->therapists;
break;
default:
cout << "[Весь персонал]\n";
printPersonnel(spType::SP);
printPersonnel(spType::TH);
break;
}
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(LC_ALL, "ru");
Policlinic ply;
// Для простоты
string value;
cout << "Введите врачей специалистов через пробел \n$: ";
getline(cin, value);
ply.addSpecialists(value);
cout << "\nВведите врачей терапевтов через пробел\n$: ";
getline(cin, value);
ply.addTherapists(value);
ply.printPersonnel(spType::ALL);
system("pause");
}
#include<iostream>
#include<vector>
#include<iterator>
#include<algorithm>
#include<fstream>
#include<numeric>
using namespace std;
int get_min_even(const vector<int>& numbers)
{
vector<int> result;
copy_if(numbers.cbegin(), numbers.cend(),
back_inserter(result), [](const int i){ return !(i % 2); });
return *min_element(result.cbegin(), result.cend());
}
int main()
{
vector<int> numbers;
ios_base::sync_with_stdio(false);
if(ifstream in("D:\\numbers_in.txt"); in)
{
copy(istream_iterator<int>{in}, {}, back_inserter(numbers));
}
if(ofstream out("D:\\numbers_out.txt"); out)
{
out << get_min_even(numbers);
}
int count = numbers.size() - 2; // предположим 10
for(int i = 0; i < count; ++i)
{
// вставка в начало вектора это BAD.
numbers.push_back(accumulate(numbers.cbegin(), numbers.cend(), 0));
numbers.erase(remove(numbers.begin(), numbers.end(), *min_element(numbers.begin(), numbers.end())));
}
// Это потому что вставляли в конец, теперь нужно перевернуть.
reverse(numbers.begin(), numbers.end());
// маленький костыль
swap(numbers[count], numbers[count + 1]);
if(ofstream out("D:\\numbers_result_out.txt"); out)
{
copy(numbers.cbegin(), numbers.cend(), ostream_iterator<int>{out, "\n"});
}
cout << "Ok" << endl;
cin.get();
}
У меня при вводе ограничивается ввод до 5-ти символов, а я хочу ввести любое число, любого количества
#include<iterator>
#include<iostream>
#include<algorithm>
#include<memory>
using namespace std;
class Decmal
{
public:
explicit Decmal(size_t size = 5);
Decmal(const Decmal&);
size_t get_size() const
{
return size;
}
// ...
private:
size_t size;
unique_ptr<char> data;
// ...
private:
void resize(size_t sz);
friend istream& operator>>(istream& is, Decmal& dec);
friend ostream& operator<<(ostream& os, const Decmal& dec);
};
Decmal::Decmal(size_t size) : size{ size }, data(new char[size])
{
fill_n(data.get(), size, '0');
}
Decmal::Decmal(const Decmal& rh)
{
size = rh.size;
data.reset(new char[size]);
copy_n(rh.data.get(), size, data.get());
}
void Decmal::resize(size_t new_size)
{
if(size < new_size)
{
data.reset(new char[new_size]);
size = new_size;
}
}
istream& operator>>(istream& is, Decmal& dec)
{
is.putback(is.get());
size_t new_size = static_cast<size_t>(is.rdbuf()->in_avail() - 1);
dec.resize(new_size);
copy_n(istream_iterator<char>{is}, dec.size, dec.data.get());
return is;
}
ostream& operator<<(ostream& os, const Decmal& dec)
{
copy_n(dec.data.get(), dec.size, ostream_iterator<char>{os});
return os;
}
int main()
{
Decmal x;
cin >> x;
cout << x.get_size() << " " << x << endl;
system("pause");
}
Не совсем понял принцип работы этого кода.
#include<iterator>
#include<iostream>
#include<algorithm>
using namespace std;
class Decmal
{
public:
explicit Decmal(size_t size = 5);
Decmal(const Decmal&);
~Decmal(){ delete[] data; }
size_t get_size() const
{
return size;
}
// ...
private:
size_t size;
unsigned char* data = nullptr;
// ...
private:
void resize(size_t sz);
friend istream& operator>>(istream& is, Decmal& dec);
friend ostream& operator<<(ostream& os, const Decmal& dec);
};
Decmal::Decmal(size_t size) : size{ size }, data(new unsigned char[size])
{
fill_n(data, size, '0');
}
Decmal::Decmal(const Decmal& rh)
{
size = rh.size;
delete[] data;
data = new unsigned char[size];
copy_n(rh.data, size, data);
}
void Decmal::resize(size_t new_size)
{
if(size < new_size)
{
delete[] data;
data = new unsigned char[new_size];
size = new_size;
}
}
istream& operator>>(istream& is, Decmal& dec)
{
char c = 0;
size_t sz = 0;
while(is.read(&c, 1) && c != '\n') // \n == 10 \r == 13
{
if(sz == dec.size)
{
unsigned char* tmp = new unsigned char[sz + 1];
copy_n(dec.data, dec.size, tmp);
dec.resize(sz + 1);
copy_n(tmp, dec.size, dec.data);
delete[] tmp;
}
dec.data[sz] = c;
++sz;
}
return is;
}
ostream & operator<<(ostream& os, const Decmal& dec)
{
copy_n(dec.data, dec.size, ostream_iterator<char>{os});
return os;
}
int main()
{
Decmal x;
cin >> x;
cout << x.get_size() << " " << x << "\n";
Decmal y = x;
cout << y << endl;
system("pause");
}