スポンサーサイト



この広告は30日以上更新がないブログに表示されます。

油断

タイトルに意味はない。


課題終了記念パピコ。


まずは解答から。

#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
cout<< n <<" ";
while(n!=1){
if(n!=1){
if(n%2==0){
n=n/2;
}
else if(n%2==1){
n=3*n+1;
}
}
cout<< n <<" ";
}
return 0;
}

[問題]正の整数値 n を読み込み,偶数の時はその値を 2 で割り,また,奇数の時はその値を 3 倍したものに 1 を加えるという処理を n の値が 1 になるまで繰り返すプログラムを書け.その際,入力された値,及び,各演算を行った結果得られた n の値を,得られた順番に1つ以上のスペースを空けて出力すること.  

コンパイルを正常に終了しました
正解です!! 以下はプログラム例です

---------- C++ ----------

#include <iostream>

int main()
{
	int n;

	std::cin >> n;
	std::cout << n << " ";

	while (n != 1) {
		if (n%2 == 0)
			n /= 2;
		else
			n = 3 * n + 1;
		std::cout << n << " ";
	}

	return 0;
}

---------- C ----------

#include <stdio.h>

int main()
{
	int n;

	scanf("%d", &n);
	printf("%d ", n);

	while (n != 1) {
		if (n%2 == 0)
			n /= 2;
		else
			n = 3 * n + 1;
		printf("%d ", n);
	}

	return 0;
}
	

 
はあ…疲れた。



それじゃ

見て分かるものではない

タイトルに意味はない。


暇潰しみたいなものですが、ちょっとした問題を解答と合わせてあげてみます。
ただ見て分かるものではありません。


[問題]通話時間(秒単位)を入力し,通話料を計算し出力するプログラムを書け.なお,通話料は,以下のようにして計算するものとする.
通話時間≦基本通話時間( 1324 秒)  基本料金:728円
基本通話時間を 178 秒超える毎に 11 円ずつ加算

解答

#include <iostream>
int main()
{
int x,y,z;
std::cin>>x;
if(x<=1324){
std::cout<<728<<std::endl;
}
else{
y=x-1324;
z=y/178;
z=z+1;
std::cout<<728+11*z<<std::endl;
}
return 0;
}

正答

以下はプログラム例です.ただし,基本通話時間が 2000 秒,基本料金が 1000 円,基本通話時間を 100 秒超える毎に 10 円ずつ加算するような場合の例です.

---------- C++ ----------

#include <iostream>

int main()
{
	int n;

	std::cin >> n;

	if (n <= 2000)
		std::cout << 1000 << std::endl;
	else
		std::cout << 1000 + 10 * ((n - 2000) / 100 + 1) << std::endl;

	return 0;
}

ちなみにCだとこうなる。

---------- C ----------
#include <stdio.h>

int main()
{
	int n;

	scanf("%d", &n);

	if (n <= 2000)
		printf("1000\n");
	else
		printf("%d\n", 1000 + 10 * ((n - 2000) / 100 + 1));

	return 0;
}


解答と正答を見比べて分かる無駄がすごいなあ。
これは地道に修正作業に走る必要がありそうです。



それじゃ

飛翔

タイトルに意味はない。


以下、本日頭を悩ませたブツを載せておきます。

「文」という通貨単位を持った国が存在したとする.この国には,1 文硬貨,9 文硬貨,45 文硬貨,及び,270 文硬貨が存在したとする.また,270 文硬貨だけを使用でき,かつ,270 文以下の品物を売る自動販売機があったとする.270 文以下の品物を買った(品物の料金を入力データとして読み込む)とき,その釣り銭を出力するプログラムを書け.出力は,釣り銭の総額,45 文硬貨の枚数,9 文硬貨の枚数,及び,1 文硬貨の枚数を 1 つ以上のスペースで区切って出力すること.たとえば,品物の値段が 168 文の時,以下のような出力になる.

102 2 1 3

#include <iostream>
int main()
{
int a,b,c,d,e,f=270,g=45,h=9,i=1,j,k;
std::cin>>a;
b=f-a;
c=b/g;
j=b-(g*c);
d=j/h;
k=j-(h*d);
e=k/i;
std::cout<<b<<" "<<c<<" "<<d<<" "<<e<<std::endl;
return 0;
}

以下はプログラム例です.ただし,1文硬貨,100文硬貨,500文硬貨,及び,1000文硬貨を使用した例です

#include <iostream>
int main()
{
int x, a500, a100, a1;
std::cin >> x;
x = 1000 - x;
a500 = x / 500;
a100 = (x % 500) / 100;
a1 = x % 100;
std::cout << x << " " << a500 << " " << a100 << " " << a1 << std::endl;
return 0;
}


ほぼ自分用ですね。
何が言いたいかは考えてください。
と言うかほぼ書いてあるし。


正直、これほとんど力技だったりするんですよね…。
分からなかったので無理やり計算させて終了。答えは間違ってないのでまあいいか。



それじゃ
前の記事へ 次の記事へ