Skip to main content

Daily: Find missing array value

Aug 5, 2023usama
Loading...

More C++ Posts

Hello World!

Aug 31, 2020joshwrou

1 like • 2 views

#include <iostream>
using namespace std;
int main() {
cout << "Hello World!\n";
// Prints out "Hello World"
return 0;
}

Hello, World!

Nov 18, 2022AustinLeath

0 likes • 3 views

#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
}

C++ Scanner

Jul 16, 2024LeifMessinger

0 likes • 13 views

//===============Header File==================
#include <iostream>
#include <sstream> //stringbuf
#include <utility> //exchange
//Couple rules:
//Characters given through the getter functions have to be removed from the buffer.
//This is so that bufferEmpty() == buffer.in_avail() > 0 basically always.
//skipWhitespace doesn't remove the text from the buffer, but it does return the number of characters.
//nextWord will trim whitespace before the word
//nextInt will trim non-numbers before the number
//hasNextInt and hasNextWord will trim the whitespace. If you think you need it, you should get nextWhitespace before doing any of those.
//Whitespace after a word or an int is left on the buffer.
//nextWhitespace will (get and) remove whitespace until the end of the line, including the newline character, but stops before the next line.
//nextWhitespace won't read the next line when called before the end of the line, and it won't prompt the user for the next line if interactive.
//If nextWhitespace is called after reading the end of the line, then it will read a new line into the buffer, which will prompt the user.
//It acts like nextLine, but if there's something non-whitespace on the current line it stops there.
class Scanner {
public:
std::stringbuf buffer;
std::istream& input;
Scanner(std::istream& in = std::cin) : buffer(), input(in) {}
//Buffer debugging
bool fillBuffer();
bool bufferEmpty();
void printBufferEmpty();
std::string getBuffer();
size_t bufferLength();
void printBufferStats();
//Int
bool hasNextInt();
int nextInt();
//Word
bool hasNextWord();
std::string nextWord();
//Line
bool hasNextLine();
//Whitespace
size_t skipWhitespace(); //Prob should be private, but I don't believe in that private shit.
bool hasNextWhitespace();
std::string nextWhitespace();
std::string nextWhitespaceAll();
std::string nextLine();
};
//===============Source File==================
bool Scanner::fillBuffer() { //Returns if it had to get the next line from the input.
const bool badInput = input.eof() || input.bad();
const bool shouldFillBuffer = bufferEmpty() && !badInput;
if (shouldFillBuffer) {
std::string line;
if (std::getline(input, line)) {
buffer.str(buffer.str() + line + "\n");
}
}
return shouldFillBuffer;
}
bool Scanner::bufferEmpty(){
return buffer.str() == "";
}
void Scanner::printBufferEmpty(){
std::cout << "The buffer is " << (bufferEmpty()? "" : "not") << " empty." << std::endl;
}
std::string Scanner::getBuffer(){
return buffer.str();
}
size_t Scanner::bufferLength(){
return buffer.str().length();
}
void Scanner::printBufferStats(){
if(bufferEmpty()){
std::cout << "The buffer is \"\"" << std::endl;
return;
}
std::cout << "The length of the buffer is " << bufferLength() << std::endl;
if(buffer.sgetc() == '\r'){
std::cout << "The buffer is \\r\\n" << std::endl;
}else if(buffer.sgetc() == '\n'){
std::cout << "The buffer is \\n" << std::endl;
}
}
bool Scanner::hasNextInt() {
return hasNextWord() && (std::isdigit(buffer.sgetc()) || buffer.sgetc() == '-');
}
int Scanner::nextInt() {
if (!hasNextInt()) { //Will fill the buffer if not filled. Will also trim whitespace.
return 0;
}
std::string num;
size_t charactersRead = 0;
while (buffer.in_avail() > 0 && (std::isdigit(buffer.sgetc()) || buffer.sgetc() == '-')) {
num += buffer.sbumpc();
++charactersRead;
}
buffer.str(buffer.str().erase(0, charactersRead));
return std::stoi(num);
}
bool Scanner::hasNextWord() {
nextWhitespaceAll();
return buffer.in_avail() > 0;
}
std::string Scanner::nextWord() {
if (!hasNextWord()) { //Will fill the buffer if not filled. Will also trim whitespace.
return "";
}
std::string word;
size_t charactersRead = 0;
while (buffer.in_avail() > 0 && !std::isspace(buffer.sgetc())) {
word += buffer.sbumpc();
++charactersRead;
}
buffer.str(buffer.str().erase(0, charactersRead));
return word;
}
bool Scanner::hasNextLine() {
return (!bufferEmpty()) || fillBuffer();
}
size_t Scanner::skipWhitespace() { //Returns characters read
size_t charactersRead = 0;
while (buffer.in_avail() > 0 && std::isspace(buffer.sgetc())) {
buffer.sbumpc();
++charactersRead;
}
return charactersRead;
}
bool Scanner::hasNextWhitespace(){
fillBuffer();
return buffer.in_avail() > 0 && std::isspace(buffer.sgetc());
}
std::string Scanner::nextWhitespace() {
if (!hasNextWhitespace()) { //Will fill the buffer if not filled
return "";
}
const size_t charactersRead = skipWhitespace();
std::string whitespace = buffer.str().substr(charactersRead);
buffer.str(buffer.str().erase(0, charactersRead));
return whitespace;
}
std::string Scanner::nextWhitespaceAll(){
std::string whitespace;
while(hasNextWhitespace()){
std::string gottenWhiteSpace = nextWhitespace();
whitespace += gottenWhiteSpace;
}
return whitespace;
}
std::string Scanner::nextLine(){
if (!hasNextLine()) {
return "";
}
fillBuffer();
//Swap out the old buffer with an empty buffer, and get the old buffer as a variable.
std::string line = std::exchange(buffer, std::stringbuf()).str();
//Remove the newline.
if(line[line.length() - 1] == '\n' || line[line.length() - 1] == '\r' ) line.pop_back();
if(line[line.length() - 1] == '\r' || line[line.length() - 1] == '\n' ) line.pop_back();
return line;
}
//=================Word and Int test=================
while(bruh.hasNextInt() || bruh.hasNextWord()){
std::cout << "started loop" << std::endl;
if(bruh.hasNextInt()){
std::cout << "Int: " << bruh.nextInt() << " " << std::endl;
}else{
std::cout << "Word: " << bruh.nextWord() << " " << std::endl;
}
bruh.nextWhitespace();
}
//===================Line test======================
for(int count = 1; bruh.hasNextLine(); ++count){
std::string line = bruh.nextLine();
std::cout << "Line " << count << ": " << line << std::endl;
}

wordScore.cpp

Apr 16, 2023LeifMessinger

0 likes • 0 views

#include <iostream>
#include <string> //Should already be in iostream
#include <cstdlib>
//A word score adds up the character values. a-z gets mapped to 1-26 for the values of the characters.
//wordScore [wordValue]
//Pipe in the input into stdin, or type the words yourself.
//Lowercase words only
int characterValue(const char b){
return ((b >= 'a') && (b <= 'z'))? ((b - 'a') + 1) : 0;
}
int main(int argc, char** argv){
//The first argument specifies if you are trying to look for a certain word score
int wordValue = (argc > 1)? std::atoi(argv[1]) : 0;
std::string line;
while(std::getline(std::cin, line)){
int sum = 0;
for(const char c : line){
sum += characterValue(c);
}
if(wordValue){ //If wordValue is 0 or the sum is the correct value
if(wordValue == sum){
std::cout << line << std::endl;
}
} else {
std::cout << sum << "\t" << line << std::endl;
}
}
return 0;
}

Compute Volume of Cylinder

Nov 18, 2022AustinLeath

0 likes • 0 views

/*
Algorithm:
Step 1: Get radius of the cylinder from the user and store in variable r
Step 2: Get height of the cylinder from the user and store in variable h
Step 3: Multiply radius * radius * height * pi and store in v
Step 4: Display the volume
*/
#include <iostream>
using namespace std;
int main()
{
float r; //define variable for radius
float h; //define variable for height
float v;
float pi;
pi=3.1416;
cout<<"Enter radius:";
cin>>r;
cout<<"Enter height:";
cin>>h;
v=r*r*h*pi; //compute volume
cout<<"Radius:"<<r<<"\tHeight:"<<h<<endl; //display radius and height
cout<<"\n************************\n";
cout<<"Volume:"<<v<<endl;//display volume
return 0;
}

sum function

Sep 3, 2023AustinLeath

0 likes • 10 views

#include "stdio.h"
#include <stdlib.h>
int main (int argCount, char** args) {
int a = atoi(args[1]);
int b = atoi(args[2]);
unsigned int sum = 0;
unsigned int p = 1;
for (unsigned int i = 1; i < b; i++) {
p = p * i;
}
// (b!, (1 + b)!, (2 + b)!, ..., (n + b)!)
for (unsigned int i = 0; i < a; i++) {
p = p * (i + b);
sum = sum + p;
}
printf("y: %u\n", sum);
return 0;
}