検索結果 48 件

by たかし
8年前
フォーラム: C言語何でも質問掲示板
トピック: あるゲームの評価関数を作りたいです
返信数: 7
閲覧数: 4181

Re: あるゲームの評価関数を作りたいです

usao様、回答ありがとうございます。

>>2048
>これでしょうか?

はい、そのゲームです。

>もしある程度プレイされているのであれば,「どういう形に持っていけばうまくいくか」という戦略(?)的なものが経験的に存在しませんか?

このゲームの戦略(コツ)は、大きな数字を角においてそれをできるだけ動かさないようにすることだと思います。
評価要素の一つとして最大値の位置なども使えますか?
例えば盤面上の最大値が角にある場合は評価値0で、角以外にある場合は不の評価値を与えるなど
by たかし
8年前
フォーラム: C言語何でも質問掲示板
トピック: あるゲームの評価関数を作りたいです
返信数: 7
閲覧数: 4181

Re: あるゲームの評価関数を作りたいです

皆さま回答ありがとうございます。
今回作ろうとしているのは2048というゲームのAIです。
1年ほど前iphoneのアプリで流行ったものです。

評価の指標は、盤面の最大値、空きマスの数、しか今のところ思いついていません。

最初の質問と合わせて、他に良い指標となるものがありましたご教授願います。

よろしくお願い致します。
by たかし
8年前
フォーラム: C言語何でも質問掲示板
トピック: あるゲームの評価関数を作りたいです
返信数: 7
閲覧数: 4181

あるゲームの評価関数を作りたいです

あるゲームの評価関数を作りたいです。 一般的に評価関数は eval = Σ (要素の値)×(重み) で与えられるそうです。 ここでわからないのが、要素ごとの評価値の決め方や、重みの決め方です。 要素の評価値はまず適当な値で試してみて、値を変えながら良い結果が得られるように何度も試す方法で良いのでしょうか? また重みについてですが、将棋やチェス、オセロなどメジャーなゲームにおいては棋譜を使って回帰分析を行い、 重みを決定するのが一般的なようですが、今回自分が作ろうとしているゲームはマイナーなものなので、棋譜がありません。 このような場合重みはどのようにして決めたらよいのでしょうか?やはり良い結果...
by たかし
9年前
フォーラム: C言語何でも質問掲示板
トピック: 構文チェッカーを作ろうと考えています。
返信数: 5
閲覧数: 16832

Re: 構文チェッカーを作ろうと考えています。

h2so5 様、回答ありがとうございます。

>「C言語 構文解析」で検索すればいくらかヒットするのでそれで概要を掴んでみたほうがよいと思います。
さっそく調べてみます。

>ちなみに、そのようなバッファオーバーフローを静的に検出するのは困難です。
>関数の引数に定数を渡しているようなケースならなんとかなりますが。
それでは検出できるようなエラーについてまずは取り組んでみます。

ありがとうございました!
by たかし
9年前
フォーラム: C言語何でも質問掲示板
トピック: 構文チェッカーを作ろうと考えています。
返信数: 5
閲覧数: 16832

構文チェッカーを作ろうと考えています。

C言語で構文チェッカーを作ろうと考えています。 コンパイラが見逃してしまうようなエラーを、プログラムのコードを静的に検査し、問題のある記述法をしている個所を検出し、アドバイスを出すようなプログラムを開発したいです。 例えば、関数を呼び出したときに、入力データがバッファ領域を超える長さの時、バッファオーバーフローが引き起こされ、リターンアドレスを書きかえることで、悪意のあるコードが実行されてしまうことがあります。 これを防ぐために入力データの長さをチェックするように促すようなアドバイスを出せるようにしたいです。 プログラムを静的検査するとなると、形態素解析によって、プログラムのコードという長い文...
by たかし
10年前
フォーラム: C言語何でも質問掲示板
トピック: グラフの頂点でマークが付いている頂点数を数える
返信数: 1
閲覧数: 1357

グラフの頂点でマークが付いている頂点数を数える

大学の講義の過去問で分からないものがあります。 問題 //グラフの頂点を次のVertexクラスで表現する。 public class Vertex { public boolean mark; //マーク public int degree; //隣接頂点の個数 public Vertex neighbor[]; //最初のdegree個の要素が隣接頂点を参照 } //Vertexクラスの次のメソッドを完成させよ。 int numberOfMarkedNeighbors() //隣接頂点のうち、markの値がtrueであるものの個数を数えて値とする。 次のようなものを考えました。 int nu...
by たかし
10年前
フォーラム: C言語何でも質問掲示板
トピック: 動的計画法による三角化アルゴリズム
返信数: 1
閲覧数: 2530

Re: 動的計画法による三角化アルゴリズム

すみません、先ほど理解できたのでもう大丈夫です。
by たかし
10年前
フォーラム: C言語何でも質問掲示板
トピック: 動的計画法による三角化アルゴリズム
返信数: 1
閲覧数: 2530

動的計画法による三角化アルゴリズム

大学で動的計画法による三角化(凸多角形を対角線で複数の三角形に分割する)を習いました。 授業で完成させたのが次のプログラムです。 /* * TriangulatoinGreedyDP.java * * 凸多角形の最小重み三角化のための貪欲法と動的計画法の実装です。 * */ package task13; import java.awt.Button; import java.awt.Choice; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Graphics...
by たかし
10年前
フォーラム: C言語何でも質問掲示板
トピック: 凸多角形の最小重み三角化(貪欲法)
返信数: 4
閲覧数: 4704

Re: 凸多角形の最小重み三角化(貪欲法)

みけCATさん、ありがとうございます!
先ほどまで外出中で返信が遅れてしまいすみませんでした。
やりたかったことはこれであっています。
本当にありがとうございました。
by たかし
10年前
フォーラム: C言語何でも質問掲示板
トピック: 凸多角形の最小重み三角化(貪欲法)
返信数: 4
閲覧数: 4704

凸多角形の最小重み三角化(貪欲法)

貪欲法を用いて凸多角形に対角線を引いて凸多角形の内部を三角形に分割するプログラムです。 大学の課題で出されたものでプログラムの穴埋めをする問題で、解いてみたのですが、エラーが出て実行できませんでした。 以下がプログラムです。 /* * TriangulatoinGreedy.java * * 凸多角形の最小重み三角化のための貪欲法の実装です。 * */ package task12; import java.awt.Button; import java.awt.Choice; import java.awt.Color; import java.awt.FlowLayout; import ...
by たかし
10年前
フォーラム: C言語何でも質問掲示板
トピック: Factoryパターン 機能の追加
返信数: 1
閲覧数: 1355

Factoryパターン 機能の追加

Factory パターンで機能の追加(耐久度をあらわすdurabilityというメソッドでuseをするたびに増えて3回useが呼び出されるとカードが壊れていると表示)をしたのですが、 D:・・・・・・ 結城浩のカードを作ります。 とむらのカードを作ります。 佐藤花子のカードを作ります。 結城浩のカードを使います。 Exception in thread "main" java.lang.AbstractMethodError: framework.Product.durability()V at Main.main(Main.java:16) -- Press any key to exit ...
by たかし
10年前
フォーラム: C言語何でも質問掲示板
トピック: VerilogHDLでVGAディスプレイのコードで分からない個所がいくつかあるので教えてください。
返信数: 1
閲覧数: 1260

VerilogHDLでVGAディスプレイのコードで分からない個所がいくつかあるので教えてください。

`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 14:49:22 04/02/2009 // Design Name: // Module Name: vga_timing // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies...
by たかし
10年前
フォーラム: C言語何でも質問掲示板
トピック: PSoCでSWを押すとLEDが消える回路のプログラムがわかりません。
返信数: 1
閲覧数: 1900

PSoCでSWを押すとLEDが消える回路のプログラムがわかりません。

現在大学でPSoCについて学び始めたものです。 SW(P14)を押すとLED1(P10)が消えるような回路を作るという課題が出されました。 ソースコードは与えられていたのですが、いくつか修正が必要になっているものでした。 それを私が修正して以下のコードに書き換えました。 このコードは正しいですか? #include <m8c.h> #include "PSoCAPI.h" Modules #define SW 0b00010000 #define LED 0b11111110 void main() { PRT1DR &= (~SW); while(1){ if(PRT1DR & SW){ P...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: javaのイベント処理(アダプタクラス)がうまくいきません。
返信数: 6
閲覧数: 3071

javaのイベント処理(アダプタクラス)がうまくいきません。

javaでアダプタクラスを使って描画したものをドラッグして動かせるようにしたいです。 しかしコンパイルすると MouseAdapterDemo2.java:22: エラー: シンボルを見つけられません MouseAdapterDemo mad; ^ シンボル: クラス MouseAdapterDemo 場所: クラス MyMouseAdapter MouseAdapterDemo2.java:24: エラー: シンボルを見つけられません public MyMouseAdapter(MouseAdapterDemo mad) { ^ シンボル: クラス MouseAdapterDemo 場所: ...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: ハッシュ関数の動作がわかりません。
返信数: 3
閲覧数: 1928

Re: ハッシュ関数の動作がわかりません。

みなさん、ありがとうございます。
質問があいまいだったため皆さんが答えにくくなってしまい、すみませんでした。
今回の課題ではハッシュ関数の中身は説明しなくてもいいみたいなので、とりあえず保留にしておきます。
皆さんありがとうございました。
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: ハッシュ関数の動作がわかりません。
返信数: 3
閲覧数: 1928

ハッシュ関数の動作がわかりません。

大学でハッシュ法を習いました。
動作の仕組みは何となく理解できたのですが、ハッシュ関数内でのハッシュ値をどのようにして決めているのかわかりません。
学校で習ったハッシュ関数は以下のものとなっています。

コード:

#define M 257

int hash(char *v)
{
  int x;
  x = 0;
  while(*v){
    x = 256 * x + (*v++);
  }
  if(x < 0){
    x = (-x);
  }
  return(x % M);
}
この関数はどういう方法でハッシュ値を決めているのですか?
よろしくお願いします。
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: データベースの作成
返信数: 8
閲覧数: 10563

Re: データベースの作成

みなさんご指摘ありがとうございました。 また、ここのところ忙しく返信が遅くなってしまいすみませんでした。 ご指摘していただいたことを直してプログラムを完成させました。 一応完成したプログラムを載せておきます。 #include <stdio.h> #include <string.h> #include <stdlib.h> #define BUFSIZE 1000 typedef struct lst { struct lst *next; char name[BUFSIZE]; char score[BUFSIZE]; }LIST; LIST *newList(LIST *start, c...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: データベースの作成
返信数: 8
閲覧数: 10563

Re: データベースの作成

みなさんありがとうございます。 とりあえず、ご指摘いただいた箇所と、自分でおかしいと思ったところを書き替えて作りなおしてみました。 #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct lst { struct lst *next; char name[20]; char score[20]; }LIST; LIST *newList(LIST *start, char *string1, char *string2){ LIST *p=start; LIST *new; while(p->next!...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: データベースの作成
返信数: 8
閲覧数: 10563

データベースの作成

大学の課題でデータベースを作るというものが出されました。 以下が課題の要約です。 実装する機能は、登録、訂正、削除、検索。 テキストファイルへの保存、読み込みの機能を実装する。 テキストファイルの形式は <検索キー>,<検索対象データ> のように半角カンマで区切り、読み込みファイルに形式エラーはないとしてよい。 以下が私の作ったプログラムです。 #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct lst { struct lst *next; char name[20]; char score[20...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: プログラムの処理速度の比較
返信数: 7
閲覧数: 4504

Re: プログラムの処理速度の比較

みなさん、返信ありがとうございます。 説明していただいた理由で納得できました。 それならこの結果でも問題ないように思えます。 ちなみに学校ではgccでコンパイルしてtimeコマンドを使って計測しました。 入力は以下のようにしてやりました。 gcc -O1 select-sort.o.c /usr/bin/time -p a.out < rand100000 でも、計測結果が正しいのか心配になったので自宅のパソコンでCygwinを使って計測しなおしてみました。 以下がその結果です。 (select-sort.o.cが配列、selectsort.cがポインタ、select-sort2.cがレジスタ...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: プログラムの処理速度の比較
返信数: 7
閲覧数: 4504

プログラムの処理速度の比較

学校で同じ実行内容のプログラムを3種類作りました。 1つめは配列を使ったもの、2つめはポインタを使ったもの、3つめはポインタをレジスタに置いたものです。 プログラムの内容は乱数を発生させるプログラムで乱数ファイルを作り、その乱数データを入力として、乱数を単純選択ソートで値の小さいもの順に並べ替えるものです。 以下がそれらのプログラムです。 配列 #include <stdio.h> #define nmax 100000 void select_sort(int a[], int n) { int i,j,min,t; for(i=0;i<n;i++) { min=i; for(j=i+1;j...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: 立方体の表面積と体積を計算するクラスの作成(Java)
返信数: 6
閲覧数: 5513

Re: 立方体の表面積と体積を計算するクラスの作成(Java)

皆さん、アドバイスありがとうございます。 皆さんのアドバイスではコンストラクタで辺の長さmを渡して初期化することよいとのことでしたので、以下のようなプログラムを作りました。 class Cube { private int m; private int x,y,z; Cube(int m, int x, int y, int z) { this.m=m; this.x=x; this.y=y; this.z=z; System.out.println("立方体の中心の座標を("+this.x+","+this.y+","+this.z+")にしました。"); System.out.printl...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: 立方体の表面積と体積を計算するクラスの作成(Java)
返信数: 6
閲覧数: 5513

立方体の表面積と体積を計算するクラスの作成(Java)

大学の課題で以下のような問題が出されました。 立方体をあらわすクラスCubeを定義し、インスタンス変数を初期化するコンストラクタと、立方体の表面積および体積を計算するインスタンスメソッドを作りなさい。 インスタンス変数としては、立方体の中心の3次元座標x,y,zおよび1辺の長さmとしなさい。このクラスをインスタンス化し、メソッドを呼び出す例を作りなさい。 私が疑問に思ったのは「立方体の中心の3次元座標x,y,z」というところです。 立方体の体積と表面積を求める場合、1辺の長さがあれば立方体の中心の座標は使わないと思うのですが、x,y,zはどこで使うのでしょうか? インスタンス変数の初期化をする...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: メソッドを作る課題
返信数: 4
閲覧数: 1733

Re: メソッドを作る課題

softya(ソフト屋)様、ありがとうございます。 あと返信が遅れてしまいすみませんでした。 今日の朝無事に提出しました。 作成したプログラムを載せます。 class period { void exchange(String dst){ int i=0; int l=0; String top; String last; l=dst.length(); //受け取った文字列の長さをlength()メソッドで求める top=dst.substring(0,5); //第一引数(0)から第二引数(5)までの文字列を返すsub()stringメソッドを使用する last=dst.substring...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: メソッドを作る課題
返信数: 4
閲覧数: 1733

Re: メソッドを作る課題

softya(ソフト屋) 様、ご指摘ありがとうございます。 charではなくStringに直してmain文の配列宣言も直して以下のようなプログラムになりました。 class period { void exchange(String dst[]){ int i=0; int k=0; while(dst[i]!="\0"){ k++; i++; } for(i=0;i<5;i++){ System.out.print(dst[i]); } System.out.println(); for(i=0;i<5;i++){ System.out.print('.'); } System.out.pr...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: メソッドを作る課題
返信数: 4
閲覧数: 1733

メソッドを作る課題

大学の課題で以下のような問題が出されましたが、コンパイルがうまく通りません。 《問題文》 長い文字列の先頭の5文字と最後の5文字をプリントし、その間に.....(5つのドット)をプリントするメソッドを作成しなさい。これらは3行に分けてプリントする 例 "Hellomynameistakeshi"という文字列なら Hello ..... keshi とプリントする そして、以下が私の作ったプログラムです。 class period { void exchange(char dst[]){ int i=0; int k=0; while(dst[i]!=0){ k++; } for(i=0;i<5...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: デバッグ(gdb)を使ってプログラムのエラーを見つける
返信数: 23
閲覧数: 15717

Re: デバッグ(gdb)を使ってプログラムのエラーを見つける

ISLe様、便利ですねその機能。
次回から使わせてもらいます、ありがとうございました。
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: デバッグ(gdb)を使ってプログラムのエラーを見つける
返信数: 23
閲覧数: 15717

Re: デバッグ(gdb)を使ってプログラムのエラーを見つける

Cpadには文字コードの指定にUTF-8がなかったのでプログラムをメモ帳にコピーしてUTF-8で保存したらちゃんと日本語が表示されました。 softya(ソフト屋)様、ありがとうございます。 みけCAT様、先ほどのコマンドが載っていたのは以下のサイトです。 http://www.cis.twcu.ac.jp/~osada/comp2a/cygwin.html かえで様に教えていただいたステップ実行を検索したら、 デバッグを使ってミスを見つける手順を紹介しているサイトが出てきました。 使い方がまだわかっていなかったので助かりました。ありがとうございます。 またわからないことがあったら質問すると思...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: デバッグ(gdb)を使ってプログラムのエラーを見つける
返信数: 23
閲覧数: 15717

Re: デバッグ(gdb)を使ってプログラムのエラーを見つける

ということはgdb単独で起動してたということですね。 h2so5様、ありがとうございます。 それでまた、問題が出てしまいました。 さきほど指摘された間違いを修正してからデバッグしたら今度は文字化けのような現象が起きてしまいました。 $ gcc -g bad.c $ gdb a.exe GNU gdb (GDB) 7.6.50.20130508-cvs (cygwin-special) Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.o...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: デバッグ(gdb)を使ってプログラムのエラーを見つける
返信数: 23
閲覧数: 15717

Re: デバッグ(gdb)を使ってプログラムのエラーを見つける

softya(ソフト屋)様、私はあまり詳しくないのでemacsからgdbを起動しているかはよくは分からないのですが、
学校のパソコンにはUNIXが入っていて、端末エミュレータというのを起動してそこでgdbやgcc等のコマンドを入力しています。
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: デバッグ(gdb)を使ってプログラムのエラーを見つける
返信数: 23
閲覧数: 15717

Re: デバッグ(gdb)を使ってプログラムのエラーを見つける

みなさん、アドバイスありがとうございます。 softya(ソフト屋)様がおっしゃられたように、cygwinで試したらちゃんとできました。 ちなみにみけCAT様のおっしゃっていた -g3 でもcygwinだったらできました。 最初cigwinで試してもできなかったのですが、別のパソコンで試してみたらできました。 何故MinGWで出来なかったのかはよくわかりませんが、これで課題に取り掛かれます。 taketoshi様、box様、間違いの指摘ありがとうございます。とりあえず自分でも確認して修正しておきます。 あと学校のパソコンにvisualstdioが入っているかはわかりませんが、学校でcを書くとき...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: デバッグ(gdb)を使ってプログラムのエラーを見つける
返信数: 23
閲覧数: 15717

Re: デバッグ(gdb)を使ってプログラムのエラーを見つける

すみません、書き忘れていました。
gdb起動コマンドは次の通りに入力しました。

$ gdb a.exe
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: デバッグ(gdb)を使ってプログラムのエラーを見つける
返信数: 23
閲覧数: 15717

デバッグ(gdb)を使ってプログラムのエラーを見つける

大学の課題でデバッグ(gdb)を使ってプログラムの間違いを見つけて修正する課題を出されたのですが、 家でやってもうまくデバッグすることができません。 まずMinGWというソフトをインストールしてデバッグしてみました。 $ gcc -g bad.c GNU gdb (GDB) 7.4 Copyright (C) 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

Re: catコマンドの自作

みけCAT様、返事が遅れてしまい申し訳ありませんでした。 また、テストが不十分でした、すみません。これからは気をつけます。 一応完成したのでプログラムを載せます。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFSIZE 1000 int check(char *a) { if(*a!='-'){ return 1; } return 0; } int main(int argc, char *argv[]) { char buf[BUFSIZE]; char *prog = argv[0]; int ...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

Re: catコマンドの自作

すみません、またプログラムを書き直しました。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFSIZE 1000 int check(char *a) { while(*a!='\0'){ if(strncmp(a,".txt",5)==0){ return(1); } a++; } return 0; } int main(int argc, char *argv[]) { char buf[BUFSIZE]; char *prog = argv[0]; int line=0; int start=0...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

Re: catコマンドの自作

みけCAT様、ご指摘ありがとうございます。 指摘していただいた部分を直して作り直しました。 ファイルかどうか判定をするcheck関数を作りました。 しかし標準入力されません。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFSIZE 1000 int check(char *a) { while(*a!='\0'){ if(strncmp(a,".txt",5)==0){ return(1); } a++; } return 0; } int main(int argc, char *argv[]) {...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

Re: catコマンドの自作

修正箇所がこんなにあるなんてびっくりしました。 みけCAT様、ありがとうございます。 ご指摘いただいた場所をいくつか直して以下のようなものを作りました。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFSIZE 1000 int main(int argc, char *argv[]) { char buf[BUFSIZE]; char *prog = argv[0]; int line=0; int start=0; int end=0; int count=1; int notfinish=1; F...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: strcatの自作に関する質問
返信数: 4
閲覧数: 4184

Re: strcatの自作に関する質問

皆さん回答ありがとうございます。 みけCAT様、すみません。 コンパイラとOSを書き忘れていました。 OS:windows7 コンパイルと実行に使っているソフト:Cygwin という環境になっております。 領域が足りないとのご指摘がありましたのでいかのようなものに書き直したらちゃんと出力されました。 #include <stdio.h> char *mystrcat1(char *str1, const char *str2){ while(*str1!='\0'){ str1++; } while(*str2!='\0'){ *str1=*str2; str1++; str2++; } *s...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: strcatの自作に関する質問
返信数: 4
閲覧数: 4184

strcatの自作に関する質問

2つの文字列を連結させるstrcat関数を自分で作ってみたのですが、str1とstr2を出力すると a=ello b=ByebyeHello と出力されてしまい、str1の最初の文字が消えていました。 以下が私の作ったプログラムです。 #include <stdio.h> char *mystrcat1(char *str1, const char *str2){ while(*str1!='\0'){ str1++; } while(*str2!='\0'){ *str1=*str2; str1++; str2++; } *str1=0; return str1; } int main (v...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

Re: catコマンドの自作

beatle 様、ご指摘ありがとうございます。 プログラムを確認してみたらbreakが先に行われてしまっているのでline=1が実行されないわけですね。 あとatoi関数は自作ではなく普通に使うことにしました。 そしてみけCAT様に教わったstrncmp関数の使い方でプログラムを作りました。 #include <stdio.h> #define BUFSIZE 1000 int strncmp( const char *s1, const char *s2, size_t n) { int i; for(i=0; i<n; i++){ if(*s1<*s2){ return(-1); } el...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

Re: catコマンドの自作

みけCAT様、ご指摘ありがとうございます。 atoi関数は前回作ったものをコピペだけだったので、マジックナンバーを直し忘れていました、すみません。 それでついに機能2の実装が完了しました。 #include <stdio.h> #define BUFSIZE 1000 int atoi(const char *nptr){ int num = 0; int type = 0; if(*nptr == '-'){ type = 1; nptr++; } while(*nptr != '\0'){ if(*nptr>='a' && *nptr<='f'){ num = num + *nptr-87...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

Re: catコマンドの自作

先ほどは混乱を招いてしまいすみませんでした。 完全に一言一句同じ文章に戻すことはできなかったのですが、ほぼ同じ内容のものを書かせていただきましたので、確認いただけたらと思います。 そして現在プログラムは以下のようになっております。 #include <stdio.h> #define BUFSIZE 1000 int atoi(const char *nptr){ int num = 0; int type = 0; if(*nptr == '-'){ type = 1; nptr++; } while(*nptr != '\0'){ if(*nptr>=97 && *nptr<=102){ ...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

Re: catコマンドの自作

勝手にコメントを編集してしまって皆様を混乱させてしまったようです。 softya(ソフト屋)様の指示通り以前の質問を再び書かせていただきます。 申し訳ありませんでした。 「みけCAT様にご指摘いただいた部分を何箇所か直して新しいプログラムを書いてみました。 #include <stdio.h> #define BUFSIZE 1000 int atoi(const char *nptr){ int num = 0; int type = 0; if(*nptr == '-'){ type = 1; nptr++; } while(*nptr != '\0'){ if(*nptr>=97 && ...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

Re: catコマンドの自作

みけCAT様、ご指南ありがとうございます。 また、usao様が言われたように、オプションとファイルの並びのルールを明確化させるべきでした。 混乱させてしまい申し訳ございません。 入力は以下のとおりです。 ./a.out 《オプションの列》 《ファイル名の列》 です。 例を挙げると ./a.out -h3 -t5 -n Sample1.txt Sample2.txt という感じです。 オプションの入力はファイルごとでなく最初に1回やるだけです。 あとちゃんと出力できなかったのですが、新たにプログラムを作ってみました。 #include <stdio.h> #define BUFSIZE 1000...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

初歩的な質問なのですが・・・

皆さんたくさん回答を下さってありがとうございます。 まだできていないのですが、ちょっと質問させてください。 ./a.out -n sample.txt とcmdで入力したとします。 その場合 argv[0] = "./a.out" argv[1] = "-n" argv[2] = "sample.txt" ということになると思うのですが、fopenでテキストファイルでないargv[1] = "-n"を読み込んだ場合 ファイルポインタfpには何が入るのですか? また、argv[2] = "saple.txt"を読み込んだ場合ファイルポインタfpが指しているのはsample.txtに 書いてある文...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: catコマンドの自作
返信数: 28
閲覧数: 13482

catコマンドの自作

大学の課題でcatコマンドの自作を出されました。 実装させる機能は 1.指定されたファイル内容を順番につなげて標準出力に出力する。   ファイル名が1つも指定されない場合は、標準入力から入力する。 2.オプションは -n, -h, -t の3種類とし、オプションの指定の順序に関係なく自由に組み合わせることが可能とする。   -nオプション: 各行の先頭に行番号を表示。   -hオプション: 出力開始行の指定。たとえば -h3 で3行目から出力する。   -tオプション: 出力終了行の指定。たとえば -t5 で5行目まで表示する。 ※文字列の比較には以下に示すstrncmp関数を使うこと。   ...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使った文字列の比較
返信数: 3
閲覧数: 1487

Re: 関数を使った文字列の比較

softya(ソフト屋) さん、ご指摘ありがとうございます。 さっそく、iに初期値0を与え、while文の条件もa !=0 かつ b !=0にしてプログラムを作りました。 (比較する文字列も変更しました。) しかし、2つの文字列は違うものにしたのに帰ってくる値が1になってしまいました。 以下が改めて作ったプログラムです。 #include <stdio.h> int equal(char a[],char b[]) { int i; i=0; while(a[i]!=0 && b[i]!=0) { if(a[i]!=b[i]) { return(0); } i=i+1; } return(1)...
by たかし
11年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使った文字列の比較
返信数: 3
閲覧数: 1487

関数を使った文字列の比較

文字列を表す char型の配列a と b を受け取り、その2つの文字列が同じ文字列であれば1を返し、違う文字列であれば0を返す関数 を作りたいのですが、コンパイルするとエラーが出てしまいます。 以下が僕の作ってみたプログラムです。 #include <stdio.h> int equal(char a[],char b[]) { int i; while(a[i]!=0) { if(a[i]!=b[i]) { return(0); } i=i+1; } return(1); } int main (void) { int answer; answer=equal("hello","ohayou...

詳細検索ページへ移動する