宿題手伝いますYO!!
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG・マルチポストは厳禁です。
・キーワードが分かっているなら、http://www.google.co.jp を活用すること。
・質問内容がちゃんと日本語になっていること。
・言語名を入れること。
・自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。
以上です。
前スレ http://pc3.2ch.net/test/read.cgi/tech/1029422194/
新
↑
│ http://pc3.2ch.net/test/read.cgi/tech/1027756023/
│ http://pc3.2ch.net/test/read.cgi/tech/1026138039/
│ http://pc.2ch.net/test/read.cgi/tech/1024592344/
│ http://pc.2ch.net/test/read.cgi/tech/1007902384/
│ http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
│ http://pc.2ch.net/tech/kako/982/982853418.html
│ http://piza.2ch.net/tech/kako/972/972032579.html
↓
古
長いソースを張れるBBS
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
0044D
NGNG”ポン”で相手の選択したものの勝ち・負け・引き分けにあたるものを表示
あとは勝ち・負け・引き分けそれぞれの比率を変えてやれば強くもなるし、弱くもなる
0045お茶
NGNG>>44
レスサンクスです!
難しそうですね〜(汗
とりあえずノーマルなじゃんけんゲームのソースはあるんで、
どういじればよいのでしょうか??
ヒントとかでもいいので教えて下さい!
0046お茶
NGNGimport java.io.*;
public class janken{
public static void main (String[] args){
BufferedReader reader = new BufferedReader (new InputStreamReader (System.in),1);
char y,c;
double x=0;
try{
System.out.println ("じゃーん、けーん、・・・");
System.out.println ("[g はグー、c はチョキ、p はパー]");
String st=reader.readLine();
if( st.equals("g") || st.equals("c") || st.equals("p") ){
y=st.charAt(0);
x=Math.random();
0047お茶
NGNGc='g';
System.out.println("ぽん! コンピュータは グー");
}
else if( x >= 0.4 && x < 0.7 ){
c='c';
System.out.println ("ぽん! コンピュータは チョキ");
}
else if( x >= 0.7 && x < 1 ){
c='p';
System.out.println ("ぽん! コンピュータは パー");
}
else{
System.out.println ("乱数エラー! コンピュータの反則負け");
c='z';
}
0048お茶
NGNGSystem.out.println ("引き分け!");
}
else if( y == 'g' && c == 'c' ){
System.out.println ("あなたの勝ち!");
}
else if( y == 'c' && c == 'p' ){
System.out.println ("あなたの勝ち!");
}
else if( y == 'p' && c == 'g' ){
System.out.println ("あなたの勝ち!");
}
else{
System.out.println ("g,c,pのどれかを入力してください!");
}
}
else{
System.out.println ("g,c,pのどれかを入力してください!");
}
}
catch(IOException e){
System.out.println(e);
}
}
}
0049デフォルトの名無しさん
NGNGif( y == 'c' ){
c='g';
System.out.println("ぽん! コンピュータは グー");
}
else if( y == 'p' ){
c='c';
System.out.println ("ぽん! コンピュータは チョキ");
}
else if( y == 'g' ){
c='p';
System.out.println ("ぽん! コンピュータは パー");
}
0050デフォルトの名無しさん
NGNG0051お茶
NGNGありがとうございます!
まだ何で強くなったのか分からないですけど解読してみます。
Javaがんばるぞー!
0052デフォルトの名無しさん
NGNG0053あほ
NGNG「日数と曜日(0=日、1=月、2=火、3=水、4=木、5=金、6=土)
を入力してカレンダーをつくれ
実行例 日数;30 曜日;0
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 」
という問題なのですが・・・
caseなどにわけてやってみたり、for文でやってみたりしているのですが、
どうも途中でいきづまってしまって・・・全然わからない状態なんです・・・(;;)
たすけてください
0054デフォルトの名無しさん
NGNGと書いてコンパイルすると、
「パーサーエラー ;は間違っています」
と出ます。
パーサーエラーとかでぐぐってもよーわからんのです。
どなたか教えてくださいませんか。
0055D
NGNG別にどうでもいいんでしょうけど元ネタのプログラムを
x=Math.random();を(Xはint型にしておく)
x=Math.random() * 3;
if( x >= 0 && x < 0.4 ){とかを
if( x == 0 ){、if( x == 1 ){、if( x == 2 ){
にしたほうがずっと綺麗だし乱数エラーなんかも発生しない
この方が動作が分かりやすいのでは。
0056D
NGNG言語が分からないのでサンプルは無し。
曜日コード*2個の半角スペースを用意し、その後ろに2文字分に揃えた1日〜30日までの文字列を
変数に格納する。さらに14個の半角スペースを追加する
左から14文字ずつとれば出来上がり。
005753
NGNGすいません言語のほうはC言語、かな?
自分が何をやっているのかわからないほどのあほなんで・・・
今、「C言語によるアルゴリズムとプログラム」の「制御構造」のとこを
勉強していまして、そこでいきずまったといった感じです・・・
できればサンプルをいただければうれしいんですが・・・
もー長時間悩んでます(;;)
ほんと初心者ですんません
0058お茶
NGNGまだそんな余裕無いですよ〜!
今ちょっと思いついてはダメの繰り返ししてます…。
なんか繋がりがこんがらがってきちゃって。
自分が出した手を設定しておいた乱数で出す手を決めるって
感じにしたいんですけど…。
if文がめちゃくちゃに…。
0059D
NGNG>>57
制御構造という意味ではこんな感じでしょうか。
int a,b,c;
a=30;b=3;
for (c = -b;c <= a-1;c++){
if (c>=0){
printf("%2d ",c+1);
}
else{
printf(" ");
}
if ((c+b) % 7 == 6){ //改行位置:(印字した数-1)/6の余り
printf("\n");
}
}
printf("\n");
この場合、a:日数 b:曜日で考え方は”今月は-3日から始まり”です。よく考えてみて。
他にも方法はいっぱいあるから別にこの方法が一番というわけではないよ。
>>58
気にしなくてもそのうち出来るようになる。今のうちに失敗やら汚いコード書きまっくて
それを”もっと簡単に出来る方法は無いか"って考えられるようになればいいと思ってる。
簡略化したコードが書けると全体もつかみやすいしひょんなことから問題の答えが見つかることもある。
とりあえずその方法の1つということで。
がんばるべし!
0060D
NGNGおまけ
強くするということはあくまで”勝ち”と”負け”との比率
勝ち:引き分け:負け=5:2:3とすると
>>52の方法で
xが勝ち:引き分け:負けが0〜4:5〜6:7〜9となれば言い訳ですよね。
それとなくイカサマしてください。宿題出した奴談にとっては"ばれなきゃ犯罪じゃない"そうです。
0061デフォルトの名無しさん
NGNGhttp://image.excite.co.jp/jp/shop/shopping_logo_290x65.gif
0062お茶
NGNG夜遅く(朝)?までありがとうございます!
がんがります!
0063お茶
NGNGっていっても>>52さんのとの元のソースの二つを
乱数にしただけですけど(汗
確実に負けるやつではなくなったので宿題出せそうです!
プログラムって達成感ありますよね!?
ちょっとはまりそうです(w
Dさんの言ってたものもこれから試してみます!
0064デフォルトの名無しさん
NGNGf1(x)=1/(1+x)
f2(x)=1/(1+1/(1+x))
f3(x)=1/(1+1/(1+1/(1+x)))
お願いします
006553
NGNGなるほどー一回やってみますね
ほんとありがとうございましたー(^−^)
それを参考にしてまた考えてみます
0066デフォルトの名無しさん
NGNG多分先生が期待しているのはマルコフ連鎖がどうとかそういうのでわ。。。
0067デフォルトの名無しさん
NGNGせめて漸化式ぐらい書いたら?
0068デフォルトの名無しさん
NGNG教授はif else のみでできて簡単だといってたんですが、よくわかりません。
私がやった雑なプログラムです↓ 簡単にするにはどうしたらいいでしょうか?
#include<stdio.h>
main()
{
int x,y,z;
int min;
printf("x、y、z、の値を入力してください。\n");
printf("x= :");
scanf("%d",&x);
printf("y= :");
scanf("%d",&y);
printf("z= :");
scanf("%d",&z);
min=x;
if(min > y){
min=y;
if(min > z){
printf("最小値はzの%dです。\n",z);
}
else{
printf("最小値はyの%dです。\n",y);
}
}
else{
printf("最小値はxの%dです。\n",x);
}
}
0069D
NGNGそれきちんと動く?
if (x > y){
if (y > z){
printf("最小値はzの%dです。\n",z);
}
else{
printf("最小値はyの%dです。\n",y);
}
else{
if (x > z){
printf("最小値はzの%dです。\n",z);
}
else{
printf("最小値はxの%dです。\n",x);
}
}
こんな感じでどお?
0070デフォルトの名無しさん
NGNGcase ...
}
0071デフォルトの名無しさん
NGNGうーむ、ベーマガあたりに載っていそうなコードだ…。
>>68
こういうのはどう? 「第2問 配列に拡張せよ」とか言われたときに改造しやすいぞ。
min=x;
name="x";
if(min > y){
min=y;
name="y";
}
if(min > z){
min=z;
name="z";
}
printf("最小値は%sの%dです。\n",name,min);
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG問題は、2つの西暦を入力して、AとBの西暦の間のうるう年の年を出力して
さらに回数を求める問題なんですが、どうすればいいでしょうか?
僕が書いたなんちゃってソースは↓
main()
{
int year_a,year_b,kaisu,big,small,i,count;
printf("西暦AとBを入力"); scanf("%d%d",&year_a,&year_b);
if(year_a > year_b) big=year_a,small=year_b;
elase if(year_b > year_a) big=year_b,small=year_a;
kaisu=(big-small)/4
for(i == small;i <= big;i++){ ←こいつです。
count=small;
count++;
if(count%4==0) printf("%d",count);
}
printf("うるう年の回数=%d",kaisu);
}
よろしく願いします
0075デフォルトの名無しさん
NGNG0076名無しさん@XEmacs
NGNG0077デフォルトの名無しさん
NGNGもう1度練り直してみます。
0078デフォルトの名無しさん
NGNGfor(i == small;i >= big;i++)
i==small
'=='は変だろ。
>>64
double func(double x,int n){
return (1/(1.0+func(x,--n)));
}
こんなやつか?
0079まいった(;;)
NGNGいます。N=prime1+prime2 N:正の偶数 prime1&2:素数
例100 = 3 + 97
= 11 + 89
= 17 + 83
= 29 + 71
= 41 + 59
= 47 + 53 といった感じです。素数だけを求める関数(2,3,5,7,9,11...)
はできたのですが、その後どのように求めた素数をprime1,prime2に代入すればいいのか分から
ないので、誰か教えてください。
0080デフォルトの名無しさん
NGNGそれに対して和を取った時に、
Nになるような物が素数に在るか探す?
prime1を小さい方から取りだし、
prime2を大きい方から、(←無理?)
和がNにならないか確認しつづける。
値Nの半分まで繰り返す。
0081まいった(;;)
NGNGif((i==2||i==3)||(i%3!=0&&i%2!=0))
cout<<i<<" ";←あくまで素数に振り分けられているか確認のため
}
結果:2 3 5 7 9 11 13...て表れるんですけど、ここからprime1, prime2に代入できないんです。
できればソースコードを書いて教えていただきたいんですがm(--)m お願いします。
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGまてや・・・9は素数ちゃうやろw ってか、それ動かしても9は出ない
だろうけど。
でも、それ全然正しくないと思うよ。例えば35とか素数と判定しそうな
予感。
0084はあ…
NGNGデータベースのアドレス、ユーザー名などの入力を構造体を使ってユーザーがデータベース名などを打ちこむ形で作りなおしたいのですが、
どうすればよろしいのでしょう
卓越した技術を持つ皆様、初心者のためにご教授ください…
/* PostgreSQL のフロントエンドライブラリである libpq のCプログラム */
#include <stdio.h>
#include <pgsql/libpq-fe.h>
void exit_nicely(PGconn *conn){
PQfinish(conn);
exit(1);
}
0085はあ… つづき
NGNG/* 構造体を使わずに書いた方法 */
charpghost[]="abcd",
pgport[]="0000",
usr[] ="abcd",
passwd[]="abcd",
pgoptions[]= "",
pgtty[]= "",
dbName[]= "abcd";
PGconn *conn;
/* データベースへ接続 */
conn = PQsetdb(pghost, pgport,pgoptions, pgtty, dbName);
/* バックエンドとの接続が成功したことを確認 */
if(PQstatus(conn) == CONNECTION_BAD){
fprintf(stderr, "Connection to database '%s' failed.\n\n", dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
else if(PQstatus(conn) == CONNECTION_OK)
printf("Connection to database '%s' successed.\n\n", dbName);
PQfinish(conn);
}
0086デフォルトの名無しさん
NGNG#include <iostream>
#include <set>
typedef std::set<int> Cont ;
const max=10000 ;
int get_prime_number(int n, Cont &pl){
if(pl.empty()) pl.insert(2) ;
for(int c=*pl.rbegin()+1;c<=n;c++){
Cont::iterator vi ;
for(vi=pl.begin();*vi**vi<=c;vi++) if(!(c%*vi)) break ;
if(c%*vi) pl.insert(c) ;
}
return pl.size() ;
}
int is_sum_of_prime(int n, Cont &pl){
for(Cont::iterator vi=pl.begin();vi!=pl.end()&&(n-*vi)>=*vi;vi++)
if(pl.find(n-*vi)!=pl.end()) return *vi ;
return 0 ;
}
main(){
Cont v ;get_prime_number(max,v) ;
for(int n=4;n<=max;n+=2)
if(int p=is_sum_of_prime(n,v)) std::cout<<n<<"="<<p<<"+"<<n-p<<"\n" ;
else {std::cout<<n<<"=すごい発見!"<<std::endl ;break ;}
}
0087お茶
NGNGやっぱり大学でみんなに言われますた。
ちょっと調べたんですけど、相手の手を学習して、
手を読んで出すようにするってことですか?
0088デフォルトの名無しさん
NGNG1)2〜N/2までの素数を用意する。このときの最大素数をmとする。
mはN/2以下。
2)(2,N-2)、(3,N-3)・・・・・(m-1,N-m+1)、(m,N-m)
の組み合わせで2つの数が素数であるか1)の結果を使って
判定する。
0089デフォルトの名無しさん
NGNGマルコフ連鎖とかNグラムモデルとか。
相手の癖を見抜くんだろうね。
先生がどこまで要求してるかは授業のレベルによると思う。
プログラム初心者向けの授業だったら、後出しでいいと思うよ。
0090デフォルトの名無しさん
NGNGgoogleで検索してみましょ。
0091デフォルトの名無しさん
NGNG「ゴールドバッハ予想 printf」でググッて見たら、ちらほらとサンプルあったぞ。
0092デフォルトの名無しさん
NGNGyn+1=ayn(1−yn) (0<yn<1)
を考える。
a=3.95,y1=0.1に対して、y200をコンピューターを用いて小数点以下6桁まで正しく求めるためには、十進数で何桁程度の数値が扱えるプログラムが必要か?
お願いします
0093デフォルトの名無しさん
NGNG二次式を与え、それを因数分解するプログラムをお願いします。
二次式の与え方は、たとえば、
X^2の係数は?
Xの係数は?
定数項は?
などのように
出力は、
( X - 2 )( X + 3 )
整数の範囲で因数分解できない場合は、
その旨のメッセージを出すように。
x^2の係数は1でも結構です
お願いします
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG漸化式y'=a*y*(1-y)に対して、Y'=y'+P',Y=y+Pと誤差を付与した式を考える。
Y'±P'=a*(Y±P)*(1-(Y±P))
これを展開してP'をPで表す。このとき、
・Pの二乗は小さい値とみなして無視。
・Pの係数にy[n]がある場合はy[n]=1と置き換える。
・±P-(±P)は0ではなく±2Pなので注意。
そうすると、aが定数であることからP'=α*P(α=定数値)という式が得られるはず。
X回の繰返しで累積誤差はα^Xになるので、0.000001/(α^X)を表せる精度が必要、となる。
定数値との演算で誤差が発生するか、とか、計算方法にもよるけど。
0096デフォルトの名無しさん
NGNGint i, j;
int base1 = 64; //
int base2 = 128; //
int base3 = 192;
2値画像に変換するプログラムのbaseの部分を上のように変えて、
画像を4値化するときの色を分ける基準となる値を決めて、条件部分を
if (pixcell[i][j] < base1) modified[i][j] = 0;
else if (pixcell[i][j] < base2) modified[i][j] = 86;
else if (pixcell[i][j] < base3) modified[i][j] = 172;
else modified[i][j] = 255;
にして、原画像を4値化して、画像を4階調で表示するときの基準の値を自分で計算したので、
結果が正しいと判断したのですが、実際のプログラム実行時に,
元の値に対し正しい値が割り当たえられている確証がないので正しいとは言えないそうです。
どうしたら結果が正しいと判断できるのでしょうか。教えてください、お願いします。
0097デフォルトの名無しさん
NGNG二値画像をbase1~3を境界に四段階に区切れる理由がよくわからない
0098デフォルトの名無しさん
NGNGループで生成した0から255の値を、そのルーチンで処理して、
ちゃんと4値になっているかどうか確かめれば?
この程度なら画像で確認しなくても大丈夫でしょ。
>>97
もとの2値化プログラムを4値化に改造したいのだと思ふた。
0099デフォルトの名無しさん
NGNG前にjavaでとサーバーを作る課題がでました。
内容は、クライアント側からnameと入力するとサーバーから決まった名前が帰ってきて、numberと入力すると決まった番号が帰ってきます。byeを入力すると終了になります。
で、そのサーバーのプログラムはサンプルを変えるだけでできました。
そのときはクライアントについてはサンプルを使うだけでできました。
今回は、それをGUIベースのクライアントにするのが課題です。(アプレットではない)
簡単なものでよく、nameボタンとnumberボタンがあって、どちらかを押したら対応した文字が出る、くらいのものでいいと思います。
もちろん、このときにサーバーからデータを受け取り、それを表示する形です。
0100デフォルトの名無しさん
NGNGimport java.util.*;
import java.io.*;
import java.net.*;
class MyServer {
public static void main(String args[]) {
if(args.length != 1) {
throw new IllegalArgumentException("Usage: java MyServer portnumber");
}
int port = Integer.parseInt(args[0]);
try {
ServerSocket ss = new ServerSocket(port);
while(true) {
Socket client = ss.accept();
new ServerThread(client).start();
}
}
catch(Exception e) {
System.err.println(e);
}
}
}
0101デフォルトの名無しさん
NGNGprivate Socket client;
private BufferedReader file_in;
private BufferedReader from_client;
private PrintWriter to_client;
static int live_count=0;
public ServerThread(Socket c) {
super();
client = c;
}
synchronized void count_up() {
live_count++;
}
synchronized void count_down() {
live_count--;
}
public void run() {
count_up();
System.out.println(ServerThread.live_count);
try {
from_client =
new BufferedReader(new InputStreamReader(client.getInputStream()));
to_client =
new PrintWriter(client.getOutputStream());
0102デフォルトの名無しさん
NGNGclient.getInetAddress());
String line;
while(!(line = from_client.readLine()).equals("bye")) {
if(line.equals("name")){
to_client.println("名前");
}
else if(line.equals("number")){
to_client.println("番号");
}
else{
to_client.println("\n");
}
to_client.flush();
}
to_client.println("ok");
to_client.flush();
from_client.close();
to_client.close();
client.close();
count_down();
}
catch(Exception e) {
count_down();
System.err.println(e);
}
}
}
0103デフォルトの名無しさん
NGNGimport java.io.*;
import java.net.*;
public class MyClient {
public static void main(String[] args) {
if(args.length != 2) {
throw new IllegalArgumentException("Usage: java MyClient IPaddress portnumber");
}
String host = args[0];
int port = Integer.parseInt(args[1]);
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
try {
Socket server = new Socket(host, port);
BufferedReader from_server =
new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter to_server =
new PrintWriter(server.getOutputStream());
System.out.println("Client: Connected to " +
server.getInetAddress() +
":" + server.getPort());
0104デフォルトの名無しさん
NGNGSystem.out.print("> ");
String send_str = input.readLine();
to_server.println(send_str);
to_server.flush();
String line = from_server.readLine();
System.out.println(line);
if(send_str.equals("bye")) {
break;
}
}
from_server.close();
to_server.close();
server.close();
}
catch (Exception e) {
System.err.println(e);
}
}
}
これで一通りは終わりです。
010599
NGNGclass lis extends JPanel implements ActionListener{
JButton button1,button2;
lis(){
JButton button1 = new JButton("名前");
JButton button2 = new JButton("番号");
add(button1);
add(button2);
button1.addActionListener(this);
button2.addActionListener(this);
mainrepaint;
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == button1){
}
else if(e.getSource() == button2){
}
}
010699
NGNG010799
NGNG1をよく見ず書いたので、「長いソースを張れるBBS」というとこに目がいきませんでした。
ごめんなさい。
0108デフォルトの名無しさん
NGNG0109ぱぱ
NGNGどういったものかというと
1・二次元の正方格子(碁盤のようなもの)を考える
2・まず最初に1つだけ白いしを格子点に置く
3・その周りの四つの格子点に確率Pで白石を置く。そうでない場合は黒石をおく
4・次に白石に隣接する何も置いていない格子点に、3と同じ思考をする。
5・以上の操作をすべての白石が黒石に囲まれるまで繰り返す
このアルゴリズムを考えています。考え方のきっかえでももらえないでしょうか?
よろしくお願いします
0110デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1024024666/l50
このスレ参考になるかも。
>1・二次元の正方格子(碁盤のようなもの)を考える
2次元配列で。
>2・まず最初に1つだけ白いしを格子点に置く
配列へ値を代入。(例:白=1、黒=2、なし=0)
>3・その周りの四つの格子点に確率Pで白石を置く。そうでない場合は黒石をおく
確率Pはrand()で。
>4・次に白石に隣接する何も置いていない格子点に、3と同じ思考をする。
それを関数化しておくと楽だね。
int think(int color);みたいに。
>5・以上の操作をすべての白石が黒石に囲まれるまで繰り返す
whileループで実現。
0111デフォルトの名無しさん
NGNG反省してるしいいんじゃない。
>>105
ほとんど問題ないように思うけど、気になる点が一点。
class lis extends JPanel implements ActionListener{
JButton button1,button2;
lis(){
/*JButton*/ button1 = new JButton("名前");
/*JButton*/ button2 = new JButton("番号");
...
クラス変数と同名のローカル変数を宣言すると、別の変数として扱われてしまう。
ていうかどう上手くいかないのか書こうYO!!
0112デフォルトの名無しさん
NGNGルーチンで処理するのではなく、数例を具体的数値とともに調べることが必要なよう
なのですが、いまいち意味がわかりません。どうしたらいいのでしょうか?
0113一年生
NGNGあられ数というものがあります。次のルールに従って次の数が決まっていく
数列のことです。
1. はじめに勝手に数を与えます。
2. その数が偶数なら2で割り、奇数なら3倍して1を足すことによって次の
数を決めます。
3. 新たに決まった数に対して、2を繰り返します。
たとえば、はじめに、7を選んだとしましょう。これは奇数ですから次の
数は7×3+1=22。22は偶数だから2で割って11。11は奇数だから3倍して1を足して34。これを順々に続けていくと
7,22,11,34,17,52,26,13,40,
20,10,5,16,8,4,2,1,4,2,1、・・・
と、最後に4,2,1を繰り返すようになります。途中の数は大きく
なったり小さくなったりと、雲の中で成長する霰(あられ)のように
振舞うので、霰数という名前がついています。
課題1:整数を入力すれば、あられ数を順々に計算して表示するプログラム
を作りなさい。このとき、あられ数に1が出てきたら、プログラムは終了するようにしなさい。
課題2:あられ数が1に落ち着くまでに何ステップかかるのかを表示するプロ
グラムを作成しなさい。(7の例だと16ステップで1になっています。)
課題3:3〜30に対するあられ数のステップ数を表示するプログラムを作
成しなさい。
ifとかdo〜whileとか色々使ってみましたが、うまくいきませんでした、誰か教えてください。
0114デフォルトの名無しさん
NGNG> ifとかdo〜whileとか色々使ってみましたが、うまくいきませんでした、誰か教えてください。
どこまでやってみたんだ。できたとこまで貼ってみろ。
0115デフォルトの名無しさん
NGNGprintf("%d %d\n", i, n);
if (n%2) n/=2;
else n = 3*n + 1;
}
01164
NGNG{
unsigned int value;
unsigned char count_1;
unsigned char count_2;
//valueにどうにかして数字を入れておく
count_1 = 0;
count_2 = 0;
while(value != 1){
count_1++;
if((value >= 3) && (value <= 30)){
count_2++;
}
if(!(value % 2)){
value /= 2;
}
else{
value = value * 3 + 1;
}
//ここでvalueを表示
}
//ここでcount_1を表示(ステップ数)
//ここでcount_2を表示(3〜30までのステップ数)
}
01174
NGNG{
unsigned int value;
unsigned char count_1;
unsigned char count_2;
//valueにどうにかして数字を入れておく
count_1 = 0;
count_2 = 0;
while(value != 1){
count_1++;
if((value >= 3) && (value <= 30)){
count_2++;
}
if(!(value % 2)){
value /= 2;
}
else{
value = value * 3 + 1;
}
//ここでvalueを表示
}
//ここでcount_1を表示(ステップ数)
//ここでcount_2を表示(3〜30までのステップ数)
}
01184
NGNG0119デフォルトの名無しさん
NGNGfor (j=0, k=i; k != 1; j++)
k = arare(k);
printf("%d %d", i, j);
}
0120デフォルトの名無しさん
NGNGなんで課題3からやってんだ。
0121文系一年生(113)
NGNG#include <stdio.h>
main()
{
int i,j;
do
{
scanf("%d",&i);
if(i%2)
{
j=i*2;
}else
{
j=i*3+1;
}while(1!)
}
この辺までしか分かりませんでした。
0122文系一年生(113)
NGNG#include <stdio.h>
main()
{
int i,j;
do
{
scanf("%d",&i);
if(i%2)
{
j=i*2;
}else
{
j=i*3+1;
}while(i!=1);
}
この辺までしか分かりませんでした。
0123デフォルトの名無しさん
NGNGループの中で毎回iを書き換えちゃ意味ないじゃん。
あとインデントしてくれ。
0124デフォルトの名無しさん
NGNG0125文系一年生(113)
NGNGはい、*と/を間違えました。
インデントって何ですか?
0126デフォルトの名無しさん
NGNG#include <stdio.h>
main()
{
int i, j;
do {
scanf("%d", &i);
if (i % 2) {
j = i * 2;
}
else {
j = i * 3 + 1;
}
while (i != 1);
}
}
0127文系一年生(113)
NGNG#include <stdio.h>
main()
{
int i,j;
do
{
scanf("%d",&i);
if(i%2)
{
j=i/2;
}else
{
j=i*3+1;
}while(i!=1);
}
0128デフォルトの名無しさん
NGNGそれと>123ちゃんと読んだ? あ、あと計算結果毎回捨ててるし。
0130デフォルトの名無しさん
NGNG#include<stdio.h>
main()
{
int arare;
scanf("%d",&arare);
while(arare != 1){
if(!(arare%2)) arare/=2;
else arare=arare*3+1;
printf("%d\n",arare);
}
return 0;
}
0131デフォルトの名無しさん
NGNGscanf()の戻り値をチェックしてないのはともかく、0を与えると無限ループする。
0132デフォルトの名無しさん
NGNG//課題1
void main() {
int n;
scanf("%d", &n);
for (; n != 1; n = arare(n))
printf("%d\n", n);
}
//課題2
void main() {
int n, i;
scanf("%d", &n);
for (i=0; n != 1; i++, n = arare(n))
printf("%d %d\n", i, n);
}
//課題3
void main() {
int i, j, n;
for (i=3; i<=30; i++) {
for (j=0, n=i; n != 1; j++, n = arare(n))
;
printf("%d %d\n", i, j);
}
}
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNGそういえば、0以下考慮してなかった。
0135デフォルトの名無しさん
NGNGまず、col[]は1なら縦列にはクィーンを置けない。
queen[]は行を示している。
up[]が一なら斜めには置けない。
downが1なら斜めには置けない。
0136デフォルトの名無しさん
NGNG#include <stdio.h>
#define N 8
int col[N+1],queen[N+1],up[2*N+1],down[2*N+1];
int num=1;
void queen_n(int i){
int j,k;
if(i>8){
printf("%d\n",num++);
for(j=1;j<=N;j++){
for(k=1;k<=N;k++){
if(queen[j]==k){
printf("Ω");
}
else{
printf("+");
}
}
printf("\n");
}
getchar();
}
0137デフォルトの名無しさん
NGNGelse{
for(j=1;j<=N;j++){
if(col[j]==0 && up[i+j]==0 && down[i-j+N]==0){
printf("%d",j);
queen[i]=j;
col[j]=1;
up[i+j]=1;
down[i-j+N]=1;
queen_n(i+1);
}
}
}
}
0138135
NGNG3行くらいで大丈夫なようです。
おそらくその行に置けなかったら一個戻る、ようなプログラムだと思うのですが、どうもうまくいきません。
助けてください。
0139135
NGNGあ・・・言い忘れましたが、C言語です。
int main(void){
int i;
for(i=1;i<=N;i++)
col[i]=0;
for(i=1;i<=2*N;i++){
up[i]=0;
}
queen_n(1);
return 0;
}
0140デフォルトの名無しさん
NGNGcol[j]=0;
up[i+j]=0;
down[i-j+N]=0;
0141デフォルトの名無しさん
NGNGクライアント側だけについてです。
2つのクラスを作りました。
1つのクラスにサーバへつなぐために、以下のプログラムを書きました。
public static void main(String args[]) throws IOException{
String host = args[0];
int port = Integer.parseInt(args[1]);
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
Socket server = new Socket(host, port);
BufferedReader from_server =
new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter to_server =
new PrintWriter(server.getOutputStream());
ここで、「他のクラス」からto_serverやfrom_sever、などを呼び出したいのですが、やり方を教えてください。
ようするに、その「他のクラス」からサーバに命令を送ったりしたいのです。
0142デフォルトの名無しさん
NGNG#include <stdio.h>
#define NUMBER 6
void main(void)
{
int i,k,a,kai=0;
int data[NUMBER];
/* NUMBER個の値を受け取る */
for (i=0;i<NUMBER;i++)
{
printf("%d番目の値は? :", i+1);
scanf("%d",&data[i]);
}
0143142です
NGNGfor (i=0;i<NUMBER;i++)
{
for (k=0;k<NUMBER;k++)
{
if (data[k]>data[k+1]) {
/* 値を入れ替える */
a=data[k];
data[k]=data[k+1];
data[k+1]=a;
kai=kai+1; }
}
}
/*結果の表示 */
printf("並べ替えた結果: ");
for (i=0;i<5;i++){
printf("%d ",data[i]);
}
printf("入れ替えた回数は=%d",kai);
printf("\n");
}
これだと全部を昇順に並べた結果しかでてこないんです。
これをどうにかして擬似乱数(rand関数)を使って、
一回ごとに値を交換した結果を表示したいんですが、
どうしたらいいでしょうか。
1 2 5 4 3
1 2 4 5 3
1 2 4 3 5
1 2 3 4 5 と言った感じでうまくできないでしょうか。お願いいたします。
0144594
NGNGそもそもそのprogramがうまく動かないぞ.
■ このスレッドは過去ログ倉庫に格納されています