Loading...
More C++ Posts
#include <iostream>using namespace std;int main(){cout << "Hello, World!" << endl;return 0;}
#include <iostream>#include <cmath>#include <string.h>using namespace std;int main() {string tickerName;int numOfContracts;float currentOptionValue;cout << "Enter a stock ticker: ";getline(cin, tickerName);cout << "Enter the current number of " << tickerName << " contracts you are holding: ";cin >> numOfContracts;cout << "Enter the current price of the option: ";cin >> currentOptionValue;cout << "The value of your " << tickerName << " options are: $" << (currentOptionValue * 100.00) * (numOfContracts);cout << endl;return 0;}
//Leif Messinger//Compile with C++ 20#include <iostream>#include <ranges>#include <vector>#include <functional>#include <cctype> //toupper#include <cxxabi.h>template <typename T>void printType(){std::cout << abi::__cxa_demangle(typeid(T).name(), NULL, NULL, NULL) << std::endl;}template <typename T>class Slicer{public:T begin_;T end_;T trueEnd;Slicer(T begin, T end): begin_(begin), end_(begin), trueEnd(end){}template<typename U>Slicer(U&& vec) : begin_(vec.begin()), end_(vec.begin()), trueEnd(vec.end()){}Slicer& finish(){begin_ = end_;end_ = trueEnd;return (*this);}Slicer& to(long int index){begin_ = end_;if(index > 0){end_ = (begin_ + index);}else{index *= -1;end_ = (trueEnd - index);}return (*this);}Slicer& operator[](long int index){return to(index);}T begin(){return this->begin_;}T end(){return this->end_;}Slicer& operator()(std::function<void(decltype(*begin_))> func) {for(decltype(*begin_) thing : (*this)){func(thing);}return (*this);}};static_assert(std::ranges::range< Slicer<std::vector<int>::const_iterator> >);int main(){std::string vec = "abcdefghijklmnopqrstuvwxyz";Slicer<std::string::const_iterator> bruh(vec);//printType<decltype(bruh)>();bruh.to(3)([](char yeet){std::cout << yeet;}).to(-1)([](char yeet){std::cout << char(std::toupper(yeet));}).finish()([](char yeet){std::cout << yeet << yeet << yeet << yeet << yeet;});std::cout << std::endl << std::endl;int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};Slicer<int*> arrSlicer(arr, arr + (sizeof(arr)/sizeof(int)));std::cout << "[";arrSlicer.to(-1)([](int yeet){std::cout << yeet << ", ";}).finish()([](int yeet){std::cout << yeet << "]" << std::endl;});return 0;}
#include <iostream>using namespace std;int main() {cout << "Hello World!\n";// Prints out "Hello World"return 0;}
/*Algorithm:Step 1: Get radius of the cylinder from the user and store in variable rStep 2: Get height of the cylinder from the user and store in variable hStep 3: Multiply radius * radius * height * pi and store in vStep 4: Display the volume*/#include <iostream>using namespace std;int main(){float r; //define variable for radiusfloat h; //define variable for heightfloat v;float pi;pi=3.1416;cout<<"Enter radius:";cin>>r;cout<<"Enter height:";cin>>h;v=r*r*h*pi; //compute volumecout<<"Radius:"<<r<<"\tHeight:"<<h<<endl; //display radius and heightcout<<"\n************************\n";cout<<"Volume:"<<v<<endl;//display volumereturn 0;}
#include <iostream>#include <vector>#include <limits>#define DEBUG_TRIAL falseclass Trial{public:const size_t HEIGHT;std::string record;//Breaking height is the index of the floor, so 0 is the bottom floor, height-1 is the top floor.//Eggs is the eggs remaining.//Start is the bottom floor.//End is one above the top floor.const size_t BREAKING_HEIGHT;size_t eggs;size_t start;size_t end;size_t floorsLeft(){return (end-start);}size_t middle(){return start + (floorsLeft()/2UL);}size_t drops = 0;Trial(const size_t BREAKING_HEIGHT, size_t eggs, size_t start, size_t end): BREAKING_HEIGHT(BREAKING_HEIGHT), eggs(eggs), start(start), end(end), HEIGHT(end), record(end, '_'){record[BREAKING_HEIGHT] = 'B'; //Marking the breaking point}bool foundAnswer(){return ((record[0] == 'X') || (record.find("OX")!=std::string::npos));}//returns true if the egg broke.//height is the index of the floor, so 0 is the bottom floor, height-1 is the top floor.bool drop(size_t height){#if DEBUG_TRIALstd::cout << "Start: " << start << ". End: " << end << ". Floors Left: " << floorsLeft() << ". Middle Index: " << middle() << std::endl;#endifdrops++;bool cracked = height >= BREAKING_HEIGHT;if(cracked) --eggs;//Update the recordrecord[height] = (height >= BREAKING_HEIGHT)? 'X' : 'O';#if DEBUG_TRIAL//Print the recordstd::cout << record << std::endl;#endifreturn cracked;}size_t nowWhat(){if(foundAnswer()){return drops;}else if(eggs <= 0){ //Ran out of eggsthrow "Algorithm failed! No more eggs!";return 1UL;}else if(eggs > 1){return wrecklessSearch();}else{return safeSearch();}}size_t safeSearch(){if(drop(start)){--end;}else{++start;}return nowWhat();}size_t wrecklessSearch(){//If the egg breaksif(drop(middle())){end -= (floorsLeft()/2UL);}else{ //egg doesn't crackstart += (floorsLeft()/2UL);}return nowWhat();}//returns the amount of drops needed to find the answersize_t search(){return nowWhat();}};//Height is the height of the building in floors.//Breaking height is the index of the floor, so 0 is the bottom floor, height-1 is the top floor.//Eggs is the eggs given.//returns the amount of drops needed to find the answersize_t search(const size_t height, const size_t BREAKING_HEIGHT, size_t eggs){Trial trial(BREAKING_HEIGHT, eggs, 0, height);return trial.search();}class TrialStats {public:size_t min = std::numeric_limits<size_t>::max();size_t max = 0;double mean = -1.0;void printStats(){// Print the resultsstd::cout << "Minimum drops: " << min << std::endl;std::cout << "Maximum drops: " << max << std::endl;std::cout << "Mean drops: " << mean << std::endl;}};//Benchmarks all the possible breaking points of a single building height with a number of eggs.TrialStats trial(const size_t HEIGHT, const size_t eggs){TrialStats stats;int totaldrops = 0;//Test every possible breaking point//Breaking height is the index of the floor, so 0 is the bottom floor, height-1 is the top floor.for (int breakingHeight = 0; breakingHeight < HEIGHT; ++breakingHeight) {size_t drops = search(HEIGHT, breakingHeight, eggs);stats.min = std::min(stats.min, drops);stats.max = std::max(stats.max, drops);totaldrops += drops;}// Calculate the mean number of dropsstats.mean = static_cast<double>(totaldrops) / HEIGHT;return stats;}//Benchmarks a single building height from 1 egg to MAX_EGGSvoid testTower(const size_t height, const size_t MAX_EGGS){//Drop every amount of eggs that you'd need.for (int eggs = 1; eggs <= MAX_EGGS; ++eggs) {std::cout << "Building height: " << height << ". Num eggs: " << eggs << std::endl;TrialStats stats = trial(height, eggs);stats.printStats();std::cout << std::endl << std::endl;}}//Benchmarks all buildings from 0 to MAX_HEIGHTvoid benchmark(const size_t MAX_HEIGHT){const size_t MAX_EGGS = 2;//Test every buildingfor (size_t height = 1; height <= MAX_HEIGHT; ++height) {testTower(height, std::min(height, MAX_EGGS));}}int main() {constexpr size_t MAX_HEIGHT = 36;benchmark(MAX_HEIGHT);return 0;}