• 締切済み

C言語について教えていただきたいです

以下3種類のファイルがあり(リンクをご参照いただきたいです)、 A.c ( http://denny-hrj.com/a.c ) B.c( http://denny-hrj.com/b.c ) X.h ( http://denny-hrj.com/x.h ) A.cを書き換えて、追加を可能にし gcc -o D.out B.c D.c でコンパイル可能に、 さらに、D.cを書き換え、追加と削除を可能にし、 gcc -o E.out B.c E.c でコンパイル可能にする。 これらはどのように書き換えればいいでしょうか? 必要に応じてB.cを書き換える場合、どのように書き換えるべきかもご教授いただきたく存じます。 まだC言語の初心者で理解が浅く、私自身のレベルはそこまで達していないのですが、 期限が近づいてきてしまいました。 どうか、お願いいたします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

とりあえず, アルゴリズムを見せてくれれば考えてもいい.

waksenzwai
質問者

補足

書き込みありがとうございます。 わかりづらい投稿となってしまい申し訳なく存じております。 D.cを書き換えてE.cというのも紛らわしかったかと思います。 反省しております。 A.cに追加機能をプラスしてD.c A.cに追加機能と削除機能をプラスしてE.c を作り、動作確認として gcc -o D.out B.c D.c gcc -o E.out B.c E.c これらを行いますよ、との事です。 r1.h = X.hと見なしていただきたいです。 どうかよろしくお願いいたします。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

C言語において、ファイル名は ・コンパイル時の、対象のファイルを選ぶため ・#include の指定 に使う位です。 gcc -o A.out B.c A.c でコンパイルできるなら、A.cをコピーしたD.cを使った gcc -o D.out B.c D.c もコンパイルでき、(動作的には)同じ結果になります。 「必要に応じてB.cを書き換える」と言われても、書き換えてどうしたいのか、その仕様が無ければ書き換えようがありません。 なお、そのA.c,B.cですが。 #include "r1.h" となっています。しかし、 r1.h というファイルがありません。 この場合は、r1.h を適切に書き換えるか、適切なファイルを r1.h という名前に変更する必要があります。

waksenzwai
質問者

補足

書き込みありがとうございます。 A.cに追加機能を加えてD.c、A.cに追加機能・削除機能を加えてE.cを作るという事なので、動作的に同じ結果になったりするのでしょうか。 B.cの書き換えに関しては、書き換えなくてもよく、必要な事があれば書き換えてもよいとの事でした。 r1.hに関して触れておらず失礼いたしました。 r1.hとX.hは同一のモノでr1.hの部分をX.hに書き換えて見なしていただきたいです。 所々わかりづらいところがあり申し訳ありません。 最終的には、 A.cに追加機能をプラスしてD.c A.cに追加機能と削除機能をプラスしてE.c を作り、動作確認として gcc -o D.out B.c D.c gcc -o E.out B.c E.c これらを行いますよ、との事です。 r1.h = X.hです。 ごちゃごちゃとすみません。 よろしくお願いいたします。

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.1

何がどうわからないのか? プログラムの仕様が提示されていないので何を書き換えて良いのかわかりません。 あとD.cとE.cはどこにあるのか?

waksenzwai
質問者

補足

早速ありがとうございます。 A.cを書き換えてD.cとし、D.cを書き換えてE.cとするというものです。 最終的には、D.cとE.cが欲しいというものです。 プログラムは上げてあるのでリンク先を見ていただきたいです。 正直申しまして、全然ついていけておらず、どこをどのように書き足す/書き換えると、動かした際に追加・削除をできる機能を与えられるのかよくわからないのです。 どうかよろしくお願いいたします。

関連するQ&A

  • c言語のコンパイル後のエラ-について

    Unix,window98を使用しています。 #include<stdio.h> main() { doublea,b,x,y; a=1.0 ; b=2.0 ; x=a+1.0/b ; y=(a+1.0)/b ; printf(" a=%f\n b=%f\n x=%f\n y=%f\n",a,b,x,y); } を  gcc ファイル名.c    でコンパイルして、 % ./ファイル名      で実行すると、   ./ファイル名; コマンドがみつかりません。  と表示され、 % ./ファイル名.c     で実行すると、 ./ファイル名.c; アクセス権がありません と表示され、 % ./ファイル名.out    で実行すると、 ./ファイル名.out; コマンドが見つかりません。 となり、困っています。 お答えを頂ければ、嬉しいです。  

  • C言語でO-Notepad-x,文字化け。

    いつも大変お世話になりありがとうございます。 標記の件。 ボクはTeraPadをエディターに使っています。 コードとコンパイル、実行がおかしくなりました。 コードと実行は下記の通りです。 #include <stdio.h> int main(void) { int a = 0; int b = 0; b = a++; printf("代入後にインクリメントしたのでbの値は%dです。\n", b); return 0; } C:\MinGW>gcc test1.c -o test1 C:\MinGW>test1.c 実行するとO-Notepad-xと言うのが起ち上がって #include <stdio.h> int main(void) { int a = 0; int b = 0; b = a++; printf(" ɃC N g ̂ b ̒l %d ł B\n", b); return 0; } という結果になりました。 どうしてでしょうか? ご回答の程、宜しくお願い申し上げます。

  • C言語コンパイラーエラーについて教えてください。

    C言語でコンパイルができなくて困っています。 コンパイルをすると、 ----------------------------------------- test.c.20:undefined reference to `getcury' test.c:20: undefined reference to `getcurx' collect2: ld returned 1 exit status ----------------------------------------- と言うエラーが出てしまい、コンパイルが完了しません。 ソースは、「test.c」と言うファイルネームで、内容は ----------------------------------------- #include <stdio.h> #include <stdlib.h> #include <curses.h> int main (void) { int y = 0, x = 0; initscr(); getyx(curscr, y, x); printw("x = %d, y = %d", x, y); refresh(); getchar(); endwin(); return 0; } ----------------------------------------- です。 OSは、Windows7 Professional SP1 コンパイラーは、MinGW Ver5.1.6. で、コマンドは gcc -o test.exe test.c -lcurses です。 確かに、curses へはパスも通っており、リンクできているようなんですが、 エラーが出てしまいます。 どうすれば良いのかわからず、大変困っています。 だれかご存知の方、教えてください。 どうかよろしくお願い致します。

  • C言語に詳しい方。教えてください。ずっと悩んでるのですがわかりません。

    問 次のプログラムに3重ループ(for)を使ってプログラムを作成したい。 コンパイルの実行結果から考えて、(1)(2)(3)の中に適切な数値や式等をいれて コンパイルの実行結果になるように3重ループを使って作成せよ #include<stdio.h> main() { int a,b,c; for(a=1;a<=3;a++){ (1) for(b=1;b<=2;b++){ (2) for(c=1;c<=3;c++){ (3) } コンパイルした後の実行画面 abbc c c d abbc c c d abbc c c d 解答欄 (1) (2) (3)

  • C言語の課題について。教えてください

    次のプログラムに3重ループ(for)を使ってプログラムを作成したい。 コンパイルの実行結果から考えて、(1)(2)(3)の中に適切な数値や式等をいれよ。 #include<stdio.h> main() { int a,b,c; for(a=1;a<=3;a++){ (1) for(b=1;b<=2;b++){ (2) for(c=1;c<=3;k++){ (3) } コンパイルした後の実行画面 abbc c c d abbc c c d abbc c c d 解答欄 (1) (2) (3)

  • C言語のmakefileについて

    C言語のmakefileについて質問です。 例えば下記makefileでは、“CC”というマクロを“gcc”という文字列で再定義しています。 しかし中には(1)『CC = gcc』という定義なしでいきなり(2)『$(CC) -o hello $(objs)』 でコンパイルしているmakefileを見るのですが、その場合(2)は何でコンパイルされているのでしょうか。($(CC)の中身はCC??GCC?ACC??) ※下記ターゲット名等はサンプルです。 ------------------ # Makefile objs = hello.o edajima.o CC = gcc hello: $(objs) $(CC) -o hello $(objs) .PHONY: clean clean: $(RM) hello $(objs)

  • gccとmakefileの基礎

    makefileの作り方を1から紹介している 書籍はあるでしょうか? 現在、 a.cとb.hとc.a をgccでコンパイルしたいのですが わかりません(汗 gcc -o test a.c b.h c.a じゃだめみたいです。 要するに1つのcファイルと1つのヘッダファイルと1つのライブラリ(静的or動的)を コンパイルする方法が知りたいのです。 ご教授お願い致しますm(____)m

  • C言語からgnuplot呼び出し

    C言語からgnuplotを呼び出したいのですが、一瞬表示されてすぐ消えてしまいます。 プログラムは以下のように書きました。 --------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char **argv) { FILE *gid; int i; double x; gid=popen("gnuplot -persist","w"); for (i=0; i<100 ;i++){ x = 0.03*i; fprintf(gid,"plot sin(x-%f*pi)\n",x); } pclose(gid); } --------------------------------------------------------------- この後、 gcc test.c -lm ./a.out でコンパイル、実行しました。 かなり初心者なので初歩的な質問かもしれませんがよろしくお願いします。

  • Mac OS X Lionで,C言語コンパイル

    今まで普通にターミナルで.cのファイルをgcc -oでコンパイルしていましたが, -bash:gcc: command not found みたいになってコンパイルできません. サイトとかで,lionにしたら,gccでコンパイルできなくなるみたいに 書いてたのですが,どうやったら前のようにコンパイルできますか? だれか助けてください. お願いします.

  • C言語のポインタの考え方について

    ポインタについて理解ができていないのでお聞きしたいのですが 値を交換する関数のプログラミングでこの場合ポインタ で以下にしないといけないと思います。 #include<stdio.h> void swap(int *a int *b){ int c; c=*a; *a=*b; *b=c; } main(){ int x,y; x=123; y=456; swap(&x,&y); printf("x = %d, y = %d\n", x, y); } またポインタを使用せず以下のプログラムではなぜダメのでしょうか。 よろしくお願い致します。 #include<stdio.h> void swap(int a int b){ int c; c=a; a=b; b=c; } main(){ int x,y; x=123; y=456; swap(x,y); printf("x = %d, y = %d\n", x, y); }

専門家に質問してみよう