Loading...
More C++ Posts
#include <iostream>#include <fstream>#include <string>#include <cstring>using namespace std;//This program makes a new text file that contains all combinations of two letters.// aa, ab, ..., zy, zzint main(){string filename = "two_letters.txt";ofstream outFile;outFile.open(filename.c_str());if(!outFile.is_open()){cout << "Something's wrong. Closing..." << endl;return 0;}for(char first = 'a'; first <= 'z'; first++){for(char second = 'a'; second <= 'z'; second++){outFile << first << second << " ";}outFile << endl;}return 0;}
#include <iostream>#include <cstring>#include <unistd.h>#include <sys/utsname.h>int main() {char newHostname[] = "newhostname"; // Replace with the desired hostnameif (sethostname(newHostname, strlen(newHostname)) == 0) {std::cout << "Hostname set to: " << newHostname << std::endl;// Optionally, update the /etc/hostname file to make the change permanentFILE *hostnameFile = fopen("/etc/hostname", "w");if (hostnameFile != NULL) {fprintf(hostnameFile, "%s\n", newHostname);fclose(hostnameFile);} else {perror("Failed to update /etc/hostname");}} else {perror("Failed to set hostname");}return 0;}
/*Good morning! Here's your coding interview problem for today.This problem was asked by LinkedIn.A wall consists of several rows of bricks of various integer lengths and uniform height. Your goal is to find a vertical line going from the top to the bottom of the wall that cuts through the fewest number of bricks. If the line goes through the edge between two bricks, this does not count as a cut.For example, suppose the input is as follows, where values in each row represent the lengths of bricks in that row:[[3, 5, 1, 1],[2, 3, 3, 2],[5, 5],[4, 4, 2],[1, 3, 3, 3],[1, 1, 6, 1, 1]]The best we can we do here is to draw a line after the eighth brick, which will only require cutting through the bricks in the third and fifth row.Given an input consisting of brick lengths for each row such as the one above, return the fewest number of bricks that must be cut to create a vertical line.AUTHORS NOTE:Makes following assumptions:- Each row is same length- Data is in file called "data.dat" and formatted in space-separated rows- The cuts at the beginning and end of the wall are not solutionsThis requires the following file named data.dat that is a space separated file, or similar formatted file:----START FILE----3 5 1 12 3 3 25 54 4 21 3 3 31 1 6 1 1----END FILE----*/#include <algorithm>#include <iostream>#include <fstream>#include <map>#include <sstream>#include <string>#include <vector>using namespace std;int main(){vector<vector<int>> wall;ifstream in;in.open("data.dat");if(!in.good()){cout << "ERROR: File failed to open properly.\n";}/* Get input from space separated file */string line;while(!in.eof()){getline(in, line);int i;vector<int> currv;stringstream strs(line);while(strs >> i)currv.push_back(i);wall.push_back(currv);}/* Convert each value from "length of brick" to "position at end of brick" */for(int y = 0; y < wall.size(); y++){wall.at(y).pop_back(); //Delet last valfor(int x = 1; x < wall.at(y).size(); x++) //Skip the first bc data doesn't need changewall.at(y).at(x) += wall.at(y).at(x-1);}/* Check output. COMMENT OUT */// for(auto row : wall)// {// for(int pos : row)// cout << pos << " ";// cout << endl;// }/* Determine which ending position is most common, and cut there *///Exclude final position, which will be the size of the wallint mode = -1;int amt = -1;vector<int> tried;for(auto row : wall){for(int pos : row) //For each pos in the wall{//Guard. If pos is contained in the list, skip posif(find(tried.begin(), tried.end(), pos) != tried.end())continue;tried.push_back(pos);/* Cycle through each row to see if it contains the pos */int curramt = 0;for(auto currrow : wall){if( find( currrow.begin(), currrow.end(), pos ) != currrow.end() )curramt++;}//cout << pos << " " << curramt << endl;if(curramt > amt){amt = curramt;mode = pos;}}}cout << "Please cut at position " << mode << endl;cout << "This will cut through " << (wall.size() - amt) << " bricks." << endl;return 0;}
#include <iostream>using namespace std;int main() {int arr[5];for(int i = 0; i < 5; i++) {arr[i] = i;}for(int i = 0; i < 5; i++) {cout << "Outputting array info at position " << i + 1 << ": " << arr[i] << endl;}for(int i=0;i<5;i++){for(int j=i+1;j<5;j++){if(arr[i]>arr[j]){int temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}cout << endl;for(int i = 0; i < 5; i++) {cout << "Outputting sorted array info at position " << i + 1 << ": " << arr[i] << endl;}return 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;}
#include <iostream>using namespace std;/* Function: get_coeffParameters: double& coeff, int pos passed from bb_4acReturn: type is void so no return, but does ask for user to input data that establishes what a b and c are.*/void get_coeff(double& coeff, int pos) {char position;if(pos == 1) {position = 'a';} else if(pos == 2) { //a simple system to determine what coefficient the program is asking for.position = 'b';} else {position = 'c';}cout << "Enter the co-efficient " << position << ":"; //prompt to input coeffcoeff = 5; //input coeff}/* Function: bb_4acParameters: no parameters passed from main, but 3 params established in function, double a, b, c.Return: b * b - 4 * a * c*/double bb_4ac() {double a, b, c; //coefficients of a quadratic equationget_coeff(a, 1); // call function 1st timeget_coeff(b, 2); // call function 2nd timeget_coeff(c, 3); // call function 3rd timereturn b * b - 4 * a * c; //return b * b - 4 * a * c}int main() {cout << "Function to calculate the discriminant of the equation. . . " << endl;double determinate = bb_4ac(); //assign double determinate to bb_4ac functioncout << "The discriminant for given values is: " << determinate << endl; //output the determinate!}