勉強ログ

C++実践プログラミング

C++実践プログラミング

これの演習問題解いたコードを晒しておく。ぶっちゃけRubyでなら空気のように書けるレベルだし

第6章 6-1、6-2

#include <iostream>

int main(){
	int score;
	int one_of_score;
	while(true){
		std::cout << "Enter a score(0-100): ";
		std::cin >> score;
		one_of_score = score % 10;
		if(score < 0 || score > 100){
			std::cout << "[E]Bad input\n";
		} else {
			std::cout << "Grade is: ";
			if(score <= 60){
				std::cout << "F";
			} else {
				if (score <= 70){
					std::cout << "D";
				} else if (score <= 80){
					std::cout << "C";
				} else if (score <= 90){
					std::cout << "B";
				} else {
					std::cout << "A";
				}
				if(one_of_score >= 8 || one_of_score == 0){
					std::cout << "+";
				} else if(one_of_score > 0 && one_of_score <= 3) {
					std::cout << "-";
				}
			}
			std::cout << "\n";
			break;
		}
	}
	return(0);
}

第6章 6-3

#include <iostream>

int main(){
	int cents;
	int quarters, dimes, nickels, pennies;
	while(true){
		// reset
		quarters = 0;
		dimes = 0;
		nickels = 0;
		pennies = 0;
		
		// input
		std::cout << "Enter a number between 1 to 100 (0 to finish): ";
		std::cin >> cents;
		
		// check 0, check bad input
		if(cents == 0){
			break;
		} else if (cents < 0 || cents > 100){
			std::cout << "[E]Bad input\n";
			continue;
		}
		
		std::cout << cents << " cents = ";
		
		// calculate each coin
		while(cents / 25 > 0){
			quarters++;
			cents -= 25;
		}
		while(cents / 10 > 0){
			dimes++;
			cents -= 10;
		}
		while(cents / 5 > 0){
			nickels++;
			cents -= 5;
		}
		while(cents / 1 > 0){
			pennies++;
			cents -= 1;
		}
		
		// print result
		// does not support pluralizing (mendoi!)
		std::cout << quarters << " quarters, " << dimes << " dimes, " << nickels << " nickels, " << pennies << " pennies\n";
	}
}

第8章 8-1

#include <iostream>

// calculate parallel resistance of up to 100 resistance nodes
int main(){
	int counter; // to count how many resisters used
	float resisters[100]; // resistance of each resister
	float inverse_resistance; // inverse of the result
	int input; // to hold input
	int i; // loop counter
	
	counter = 0;
	while(true){
		// get input
		std::cout << "Enter resistance of resister " << counter + 1 << " (0 or less to finish): ";
		std::cin >> input;
		if(input <= 0){
			break;
		} else {
			resisters[counter] = input;
			counter++;
			if(counter >= 100){
				break;
			}
		}
	}
	for(i = 0; i < counter; i++){
		inverse_resistance += 1 / resisters[i];
	}
	std::cout << "Parallel resistance is: " << 1 / inverse_resistance << " Ohm.\n";
}