[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 01/02 08:45 / Filesize : 213 KB / Number-of Response : 531
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 91代目



1 名前:デフォルトの名無しさん [2007/06/23(土) 23:03:25 BE:255611693-2BP(12)]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 90代目
pc11.2ch.net/test/read.cgi/tech/1181802185/

237 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 09:59:09 ]
[1] 授業単元: プログラミング
[2] 問題文:
テキストファイルを読み込んで、"{"の数と"}"の数を数え、テキストファイルに出力するプログラムを作成しなさい.
課題実行においては以下の点に注意すること.
プログラム名は「chkpair」とすること.
ここで指定するデータ(ファイル),は存在するものとして仮定してよい.
読み込むテキストファイル名はプログラムを実行後にキーボードから指定する.
ファイル名の長さは最大で(マクロ定数)FILENAME_MAX文字までとしてよい.
出力するテキストファイルはchkpair.outとする.すでにchkpair.outがあり書き込み権限がある場合は、出力を上書きすること.
入力ファイルによって結果が異なるので、必ずしも実行例と同じ出力になる必要はない.

[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C


238 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:01:19 ]
[1] 授業単元: プログラミング
[2] 問題文:
商品の在庫を管理するプログラムを作成する.在庫を扱う場合,在庫の平均単価(実数),
在庫数(整数)を管理する必要がある.本問題で作成するプログラムは,4回商品を入荷した時の平均在
庫単価と在庫総数を出力するものとする.商品入荷の時は,商品の単価と入荷数を順に入力していくものとする.このとき,平均単価と在庫数をひとつの構造体で管理するものとする.
変数を管理する構造体の名前をstock_t(この名前はtypedefで定義した名前を指す)とし,構造体のメンバを,
平均単価はdouble型とし,名前をpriceとする
在庫数はint型とし,名前をquantityとする
とする.
課題実行においては以下の点に注意すること.
プログラム名は「stock」とすること.
プログラム実行開始直後の在庫数は0とする
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
./stock
100.0 10
200.0 10
300.0 10
555.0 30
377.5 60/*←出力*/

239 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:21:46 ]
>>237
#include <stdio.h>

#define FILENAME_MAX 128 // 環境によってはマズイ

int main(void)
{
    FILE *fpin, *fpout = fopen("chkpair.out", "w");
    int ch, count1 = 0, count2 = 0;
    char filename[FILENAME_MAX], buf[128];
   
    printf("filename for input : ");
    scanf("%s", filename);
   
    if((fpin = fopen(filename, "r")) == NULL)
        perror(filename), exit(1);
   
    while((ch = fgetc(fpin)) != EOF){
        if(ch == '{') count1++;
        else if(ch == '}') count2++;
    }
   
    sprintf(buf, "{ : %d\n} : %d\n", count1, count2);
    fputs(buf, fpout);
   
    fclose(fpin);
    fclose(fpout);
   
    return 0;
}

240 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:30:48 ]
>>238
#include <stdio.h>

typedef struct tag_stock_t{
    double price;
    int quantity;
}stock_t;

int main(void)
{
    stock_t x[4];
    double price_sum = 0, price_ave;
    int i, num = 0;
   
    for(i = 0; i < 4; i++)
        scanf("%lf%d", &x[i].price, &x[i].quantity);
   
    for(i = 0; i < 4; i++){
        price_sum += x[i].price*x[i].quantity;
        num += x[i].quantity;
    }
   
    price_ave = price_sum/num;
   
    printf("%.1f %d\n", price_ave, num);
   
    return 0;
}

241 名前:227 [2007/06/26(火) 10:43:16 ]
data.txtはこんなかんじです。

#正の数
133
535
846
167
335
#負の数
-647
-673
-384
-384
-373


242 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:47:29 ]
>>239
> #define FILENAME_MAX 128 // 環境によってはマズイ
うむ、かなりまずい。stdio.h にマクロ定義されていると思われるんで
敢えてそこで定義しない方が良いかも

243 名前:デフォルトの名無しさん [2007/06/26(火) 10:56:24 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
  3d^2x/dt^2+dx/dt+2x=4
x(t=0)=0
dx/dt(t=0)=0

上記の微分方程式をルンゲークッタ法を用いて解け
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C言語
[4] 期限: ([2007年6月25日まで
[5] その他の制限: なし

お願いします


244 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:16:50 ]
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
年と月を入力すると、カレンダーを表示するプログラムの作成。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.3
 [3.3] 言語: C
[4] 期限: 6月27日
[5] その他の制限:入門者らしいつくりでお願いします。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4399.c
此所まではやってみたのですが、実行したときに" 日 月 火 水 木 金 土"
の部分しか表示されないので困っています。


245 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:41:21 ]
>>244
曜日を得るのは標準関数を使えばいいのに……

それはさておき、
・monthは1〜12なのに[0〜11]の配列をそのまま参照している。
・「土」の後に改行していない。
のは問題かな。
後はもっと細かく見ないと判らん。



246 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:49:09 ]
if(month==2&&(year % 4 == 0 && year % 100 != 0 || year % 400 == 0))
return(day[2]+1);
これねぇ、本当は良くない。できればうるう年なら day[2] = 29; そうでないなら
day[2]=28; にした方が良い。ここでは問題ないけど、何回か呼び出しをした場合
これだとうるう年に該当するたびに2月の日数が1ずつ加算されていくから。

247 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:51:01 ]
何を言ってるんだ

248 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:51:24 ]
>>246
もしもーし、脳味噌入ってますか〜?

249 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:59:00 ]
>>247
>>248
理解力のない馬鹿は視ねよw

250 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:00:26 ]
>>245,246返信ありがとうございます。
指摘頂いた部分やその他修正したらカレンダーらしいものは表示が出るようになりました。

あとは1月2月3月らへんが多少ずれてるのですがこれはどう直したら良いでしょうか。

251 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:01:34 ]
>249
頭が腐ってるのか目が腐ってるのか知らんが、もう一度よく見直せ。

252 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:03:51 ]
>>249
マジで言ってるなら医者に行くか、取り敢えず寝てきたら? 100年くらい。

>>250
エスパーじゃないからどうずれるのか判らんし、そこがデバッグの楽しみだろう。
つーか、曜日の計算と改行する条件判断はあってる?
youbiが1のときは何曜日のつもり?

253 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:05:23 ]
やった!おまいら釣られてやんのっ(プ
コードを見りゃ加算されるわけねーってバレバレじゃんw

254 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:08:09 ]
いや、顔真っ赤にして後釣り宣言しなくていいから。

255 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:12:20 ]
プププッ、ネタでボケて書いたことをマジに受けて茶化し、煽りレス入れている
こんな時間にいる引きこもりニーツがきめぇ〜〜んだよ(プ
俺?俺は大学の研究室からやw



256 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:14:46 ]
どこの脳内研究室なんだか。

257 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:15:18 ]
都内の某ランクSの大学ですが何か?

258 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:16:38 ]
それじゃ、次のボケをお願いします。もうちょっと判り難いのがいいかな。

259 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:19:03 ]
>257
本当にSランクなら、そもそも釣りなんて無駄なことはしない

260 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:20:19 ]
>>244 を実行してみたけど、1日の表示がおかしい、曜日がきちっと算出されていない。
もうこんなんじゃ、月(付き)合ってらんね〜

261 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:21:39 ]
>>259
Sランク級の釣りにビビッてんだろぉ?Sランク級の釣りにお前がチビッているのがわかるぜ?

262 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:25:59 ]
ランクSAITEIのランクSだなw

263 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:28:03 ]
ちっちっち、違うぜ?Sugoi、Super、SutekiのSだぜ?お前らとは質が違うよ、質が。

264 名前:デフォルトの名無しさん [2007/06/26(火) 12:31:44 ]
[1] プログラミング基礎
[2] 以下のプログラムは,都道府県名(ローマ字)を入力すると,各都道府県の人口(人)と面積(km2)が列挙されたファイル prefectures.dat
からデータを読み込み,指定した都道府県の人口,面積およびそれらの比である人口密度を表示するプログラムである.
このプログラムを以下の例のように,人口,面積について 日本全体の総和に対する比率(百分率) も表示されるように書き換えよ.

実行例:
nodabls?% ./a.out[Enter]
chiba[Enter]
Statistics of the Chiba
Population = 6056159 (4.7 %)
Area (km^2) = 5156.19 (1.4 %)
Density (per km^2) = 1174.54

[3.1] Unix
[3.2] gcc
[3.3] c
[4] 2007年6月29日(金)



265 名前:デフォルトの名無しさん [2007/06/26(火) 12:33:21 ]
続き
プログラム
/* density.c: calculate population density for the given prefecture */
#include <stdio.h>
#include <strings.h>

int main(void)
{
char name[20], query[20];
int pop;
double area, den;
FILE *fp;

fp = fopen("prefectures.dat", "r"); /* ファイルオープン */
if (fp == NULL) { /* オープンに失敗? */
fprintf(stderr, "Can't open file!\n");
return (-1);
}

scanf("%s", query); /* 都道府県名を入力 */

den = -1.0;
/* 1行分の情報を読み込みつつループをファイル末尾まで繰り返し */
while (fscanf(fp, "%s%d%lf", name, &pop, &area) != EOF) {
if (strcasecmp(name, query) == 0) { /* 都道府県名が一致? */
den = pop / area; /* 人口密度 = 人口/面積 */
printf("Statistics of the %s\n", name);
printf("Population = %10d\n", pop);
printf("Area (km^2) = %10.2f\n", area);
printf("Density (per km^2) = %10.2f\n", den);
break; /* ループから抜ける */




266 名前:デフォルトの名無しさん [2007/06/26(火) 12:35:32 ]
}
}
fclose(fp); /* ファイルクローズ */

if (den < 0.0) { /* 都道府県名が正しくない? */
fprintf(stderr, "No such prefecture (%s)!\n", query);
return (-1);
}
return (0);
}


267 名前:デフォルトの名無しさん [2007/06/26(火) 12:38:46 ]
続き
prefectures.dat ファイル

Hokkaido 5627424 83453.04
Aomori 1436628 9606.33
Iwate 1385037 15278.40
Miyagi 2359991 7285.07
Akita 1145471 11612.11
Yamagata 1216116 9323.34
Fukushima 2091223 13782.48
Ibaraki 2975023 6095.58
Tochigi 2016452 6408.28
Gumma 2024044 6363.16
Saitama 7053689 3797.30
Chiba 6056159 5156.19
Tokyo 12570904 2186.90
Kanagawa 8790900 2415.41
Niigata 2431396 12582.37
Toyama 1111602 4247.22
Ishikawa 1173994 4185.22
Fukui 821589 4188.75
Yamanashi 884531 4465.37
Nagano 2196012 13585.22
Gifu 2107293 10598.18
Shizuoka 3792457 7779.46
Aichi 7254432 5155.84
Mie 1867166 5776.40
Shiga 1380343 4017.36


268 名前:デフォルトの名無しさん [2007/06/26(火) 12:40:30 ]
Kyoto 2647523 4612.94
Osaka 8817010 1892.86
Hyogo 5590381 8392.03
Nara 1421367 3691.09
Wakayama 1036061 4725.55
Tottori 606947 3507.17
Shimane 742135 6707.29
Okayama 1957056 7112.13
Hiroshima 2876762 8476.95
Yamaguchi 1492575 6110.45
Tokushima 809974 4145.10
Kagawa 1012261 1875.88
Ehime 1467824 5676.22
Kochi 796211 7104.66
Fukuoka 5049126 4971.01
Saga 866402 2439.23
Nagasaki 1478630 4092.44
Kumamoto 1842140 7403.68
Oita 1209587 6337.97
Miyazaki 1152993 7734.40
Kagoshima 1753144 9186.71
Okinawa 1360830 2271.30

長くなってすみません。よろしくお願いします。

269 名前:デフォルトの名無しさん [2007/06/26(火) 12:44:11 ]
次のjavaのプログラムをcに直してください

public class JobShop_EDD{
static int Job=3;
static int Machine=2;
static int K=30;
static int [] duedate={0,7,9,13,14,20};
static int [] [] process={{},{0,3,3,2,},{0,2,3,2},{0,2,3,3},{0,3,2,3},{0,2,2,2}};
static int [] [] route={{},{0,1,2,3},{0,2,1,3},{0,3,1,2},{0,3,2,1},{0,2,1,3}};
static int [] weight={0,2,2,2,2,2};



270 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:45:02 ]
>>252
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4401.c
直してみたものですが。

月曜じゃないんですか?人伝えに聞いたので曖昧ですが

271 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:49:23 ]
>>270 よくわからんから俺流ツェラーの公式を使ってやんよ

int youbi(int year,int month,int day)
{
if(month<=2) { year--; month+=12; }
return ( year + year/4 - year/100 + year/400 + (13*month+8)/5 + day )%7;
}

272 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 13:04:56 ]
>>239
>>240
ありがとうございました。またなにかありましたらよろしくおねがいします。

273 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 14:56:55 ]
>>264
問題が長い時は、ロダにtxtでうpしてリンク貼る
長いソースは拡張子を変えずにロダにうp
複数のレスに別けられると見辛い

>>269
メソッドが無くて、変数だけか。それを構造体にすればいいのか?


274 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 15:37:20 ]
day[2]じゃねーだろ

275 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 15:57:25 ]
>>264
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4402.txt



276 名前:デフォルトの名無しさん [2007/06/26(火) 16:00:47 ]
264をよろしくお願いします。

277 名前:275 mailto:sage [2007/06/26(火) 16:05:51 ]
>>264
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4403.txt

278 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:07:10 ]
>>271
有り難うございます。この部分はすり替えておきます。


279 名前:デフォルトの名無しさん [2007/06/26(火) 16:11:48 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): コマンドラインで指定した二つのファイルを交換しろ
[3] 環境
 [3.1] OS: (Windows/Linux/等々) XP
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland C++ Compiler 5.5
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限
[5] その他の制限: 
 
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4404.txt

なんかうまく動きません
助けてください


280 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:16:23 ]
一時ファイル使っちゃ駄目なの?

281 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:21:31 ]
while(fputc(*p,fp2) != EOF)
;
多分、*p++なんだろうな

282 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:21:49 ]
>>232
題意に沿ってるかワカランが
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4405.txt

283 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:22:45 ]
訂正
while(fputc(*p,fp2) != EOF)
p++;
のがいいか

284 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:24:07 ]
>>280
どうやって使うんですか?
ファイル入ったばかりでどうしていいのかさっぱりです・・・

>>281
ミスです・・・どうもです


285 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:30:42 ]
w+ → r+



286 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:32:01 ]
>>279
こんなモンでいいと思うよ
#include <stdio.h>
int main(int argc, char **argv)
{
    char *tmp;
    /* 引数の制限 */
    if (argc != 3) {
        printf("使用法:<プログラム名> <ファイル名1> <ファイル名2>\n");
        return 1;
    }
    tmp = tmpnam(0);
    if (!rename(argv[1], tmp))
        if (!rename(argv[2], argv[1]))
            if (!rename(tmp, argv[2]))
                return 0;
    perror("rename");
    return 1;
}

287 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:45:04 ]
>>286
名前じゃなくて中身を交換するようにしたいんです

できれば>>279の間違ってる部分を修正してもらえるとありがたいです


288 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:56:08 ]
修正は面倒臭いんだよな
一から作った方がよほど早い

289 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:59:28 ]
そこをなんとか・・・

290 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:11:27 ]
名前の交換も中身の交換も結果としては同じなんだから、簡単なほうがいいと思うけど。

291 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:16:30 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):キーボードから2つのファイル名を指定し、1つめのファイルの末尾に2つめのファイルの内容を追加するプログラムを作成せよ.
ファイル名は最大15文字とする.
ファイルの1行の最大文字数は31文字とする.
[3] 環境
 [3.1] OS: (Windows/Linux/等々) XP
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限
[5] その他の制限: 
 

292 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:23:14 ]
>>279 ほれ
#include <stdio.h>
int copy(char *from, char *to)
{
    FILE *fi, *fo;
    int c;
    if ((fi = fopen(from, "rb")) == NULL)
        return perror(from), 0;
    if ((fo = fopen(to, "wb")) == NULL)
        return perror(to), fclose(fi), 0;
    while ((c = getc(fi)) != EOF) putc(c, fo);
    return fclose(fi), fclose(fo), 1;
}
int main(int argc, char **argv)
{
    char *tmp;
    int result;
    /* 引数の制限 */
    if (argc != 3) {
        printf("使用法:<プログラム名> <ファイル名1> <ファイル名2>\n");
        return 1;
    }
    tmp = tmpnam(0);
    result = (copy(argv[1], tmp) && copy(argv[2], argv[1]) && copy(tmp, argv[2]));
    remove(tmp);
    return !result;
}

293 名前:286=292 mailto:sage [2007/06/26(火) 17:34:21 ]
>>279
モード"r+"で2つのファイル開いて一時ファイルを使わずに内容を交換しようという
志自体は面白いが、読み書きのたびにftell()/fseek()の類で読み書き位置を
移動する必要があるし、ファイルサイズが異なるファイルを交換する場合、
最後にファイルサイズを変更する(切り詰める)手段が必要だ。
大抵のシステムにはそうした手段が用意されているが、C標準には存在しない。

まあおとなしく>>286>>292のコードを使っとけ。

294 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:34:42 ]
>>291
ほれ。
制約の意味がわからんのだが、ファイル名の最大長とか1行の最大長とかはなんかの縛りなのか?

#include <stdio.h>

#ifndef EOF
  #define EOF -1
#endif

int main(int argc, char **argv){
  char c;
  FILE *fp1 = NULL, *fp2 = NULL;
  if( (fp1 = fopen(argv[1], "ab")) == NULL ||
    (fp2 = fopen(argv[2], "rb")) == NULL)
    return -1;
  
  fseek(fp1, 0, SEEK_END);
  while((c = fgetc(fp2)) != EOF){
    fputc(c, fp1);
  }
  
  fclose(fp1);
  fclose(fp2);
  return 0;
}

295 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:37:02 ]
>>293
デカい方のファイルに合わせてバッファ確保して中身入れ替えりゃいいんじゃねぇの



296 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:39:36 ]
>>295
ファイルを計4回開く気があるのならそれでいいね。
最初に"rb"で開いて一気読みして次に"wb"ね。
質問者の意図とは異なると思うが。

297 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:44:28 ]
なんで4回も開く必要がある
r+とfseek()使え

298 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:46:35 ]
>>297
だから、それだとファイルを切り詰められないでしょ

299 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:14:18 ]
freopenってのがあったような

300 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:23:30 ]
>>291
copy /B file1+file2

301 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:25:29 ]
>>294さん
テストの過去問題なんで、テストの問題のうちなんだと思います。

302 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:54:38 ]
>>301
なるほど、指定のテキストファイル読めとかそーゆう縛りね
んじゃ要求通りだとこんな感じかね?

#include <stdio.h>
#ifndef EOF
  #define EOF -1
#endif
#define LINE_MAX      32
#define FILENAME_MAXLENGTH  15

int main(int argc, char** argv){
  char buf[LINE_MAX];
  FILE *fp1 = NULL, *fp2 = NULL;
  
  if( strlen(argv[1]) > FILENAME_MAXLENGTH || strlen(argv[2]) > FILENAME_MAXLENGTH)
    return -2;
  
  if( (fp2 = fopen(argv[2], "rb")) == NULL || (fp1 = fopen(argv[1], "ab")) == NULL)
    return -1;
  
  while(fgets(buf, LINE_MAX, fp2) != NULL) // 1行が32文字を超えると切り捨てられるけど
    fputs(buf, fp1);
  
  fclose(fp1);
  fclose(fp2);
  return 0;
}

303 名前:デフォルトの名無しさん [2007/06/26(火) 19:39:19 ]
[1] 授業単元: プロC
[2] 問題文(含コード&リンク):
1.まず、 pwd を実行し、成功すれば、 ls を実行する。
ただし、コマンドライン引数はすべてls にそのまま渡すものとする。
2.オプション -c があれば、 date を実行し、その後、 cal を実行する。
オプションを指定しなければ、 date だけを実行する。
ただし、オプション -z timezone があれば、
環境変数TZの値をtimezoneに設定して、各コマンドを実行する。
3.findコマンドを呼び出して、指定されたディレクトリ
(複数可。指定がない場合は、カレントディレクトリ)
以下にあるディレクトリ(指定されたディレクトリ自身も含む)を表示する。
[3] 環境
 [3.1] OS:Vine Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:来週まで
[5] その他の制限:よろしくお願いします。

304 名前:デフォルトの名無しさん [2007/06/26(火) 19:43:44 ]

<サンプルプログラム1>
www.cc.kyoto-su.ac.jp/~wd/jissen-programming-c/prog/voyager1.c
<サンプルプログラム2>
www.cc.kyoto-su.ac.jp/~wd/jissen-programming-c/prog/voyager2.c

305 名前:デフォルトの名無しさん [2007/06/26(火) 19:45:37 ]

書き忘れです(汗)
pwdを実行し、成功すれば、その後、ls -lを実行するプログラムです





306 名前:デフォルトの名無しさん [2007/06/26(火) 19:56:11 ]
>>303-305
日本語でおk

307 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:19:36 ]
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
学生のデータベースを作成する。
まずは学生の名前と大学名、学科、生年月日(年はintで月日はshortで定義する)、趣味で構成される構造体を作る。
これらは全て実際には存在するような名前にしないこと。
初めに学生5人が与えられている。->kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4408.txt

プログラムは、0から3のうちいずれかを入力し0が入力されるまでプログラムを繰り返す。
0を入力したときプログラムを終了する。
1を入力したときすべての学生をバイナリモードでテキストファイルに出力し、画面上にも出力する。
2を入力したとき何番目かの学生(1と入力したら1番目という風に)を画面上に出力する。
3を入力したとき新しい学生を追加する(名前,大学名,生年月日,趣味)。

またメモリーはでいつでも1人分の学生のデータしか保持しない。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 6/27
[5] その他の制限: 特になし
よろしくお願いします。

308 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:36:36 ]
[1] 授業単元:プログラム技術
[2] 問題文(含コード&リンク):
1.正整数n を入力し,2 〜 n の範囲にある素数およびその個数を求めるプログラムを作成
しなさい.
2.年(西暦),月,日を入力したとき,入力した年月日の曜日を出力するプログラムを作成
しなさい.
3.下の表のような時間を入力したとき,その総時間を求めるプログラムを作成しなさ
い.なお,表のデータは例なので,汎用的に扱えるように,数と
時間は実行時に任意の数を入力すること.


1 動画50 分08 秒
2 動画29 分38 秒
3 動画15 分49 秒
4 動画22 分50 秒
5 動画11 分02 秒


[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限
来週の火曜辺りまで
[5] その他の制限
なし

よろしくお願いします

309 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:57:36 ]
>>302さんありがとうございました。テストできるようにがんばります。

310 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:59:31 ]
>>308
3は総時間をどう表示すればいい?
合計○○時間△△分□□秒でおk?


311 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:03:40 ]
あと3の時間は
どう入力させればいいんだ?
>>310における○○、△△、□□をそれぞれ入力してもらう形?
それとも、「* 動画** 分** 秒」を全部入力させる形?


312 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:24:41 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
2つのベクトル要素の値をキーボードから読み込み、その内積を計算するプログラムを
作りなさい。要素の値はdouble型であるものとする。
・ベクトルの要素数の指定はオブジェクト形式マクロ(#define指令)で行う(値は6とする)
・ベクトルの要素の値はキーボードから読み込む
・データの読み込みや内積の計算などの繰返し部分はfor文で行う
・結果は、読み込んだ各ベクトルの値を横ベクトルとして表示した後、その次の行に出力する
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
[4] 期限: 6月27日まで

全くわかりません 誰か助けてください

313 名前:308 mailto:sage [2007/06/26(火) 22:01:13 ]
>>311
○○、△△、□□をそれぞれ入力してもらう形です。
総時間は△△分□□秒でお願いします。
○○時間△△分□□秒でも問題はないとは思いますが・・・・

314 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:14:13 ]
>>312
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4409.txt

315 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:16:32 ]
あー
できてから気づいたけど、
ELEMENTを可変にするならprintfでベクトルを出力してるところは
もっとちゃんと書けばよかったな
カッコとかが汚いと思ったからこんな風に書いたけど



316 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:20:48 ]
>>313
まあ時間あるみたいやし
ゆっくりやらせてもらうわ
他の人でやったるって人が出てきたら俺にかまわずやってください

317 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:29:24 ]
>>314
ありがとうございました
ついでに多次元配列をつかったらどんなプログラムができるんですか?

318 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:31:20 ]
見た目がちょっとよくなるだけで
プログラム自体はほとんど変化しないからあんまり気にしない方がいい

319 名前:デフォルトの名無しさん [2007/06/26(火) 22:34:25 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
same.cをファイル入出力対応版に変更しなさい。
same.c →kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4410.txt

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 27日正午まで
[5] その他の制限: 特にナシ

実行例
[home@***~/home]% cat filesame.in
ABC
ABC
[home@***~/home]% ./filesame
filename: filesame.in
[home@***~/home]% cat filesame.out
yes
[home@***~/home]%

よろしくお願いします。

320 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:55:27 ]
[1] 授業単元: C言語
[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4412.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語: C
[4] 期限: 27日まで
[5] その他の制限:再帰法まで習った
よろしくお願いします。



321 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:22:46 ]
[1] 授業単元: C言語
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4413.txt
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語: C
[4] 期限: 27日まで
よろしくお願いします


322 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:45:03 ]
>>306
おいっ、日本語が読めない在日が何こんなところで日本人の相手をしてんだ?
とっとと祖国へ帰れよ。お前みたいな役立たずはここには必要はない。

323 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:47:07 ]
このスレから役立たずを取り除いたら、何が残るんだっていうんだ

324 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:48:55 ]
>>321
キーボードから読み込む方法?
それって代入に含まれるんじゃないか?

とりあえず
・初期化
int array[] = {0, 1, 2, 3, 4, 5};
要素数を指定しなくても初期化子の数で勝手に合わせてくれる。
固定的なデータを保持する用途とかが一般的なんじゃないかな。

・代入
array[0] = 0;
変動的で、同じような系統のデータをまとめて保持するのに使うのが一般的。
ランダムアクセスには強いが、データの追加と削除に弱い。

まぁconstでもつけなきゃ初期化した配列も普通に代入できるから結局あんま差はない希ガス。

こんなんでいいの?

325 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:49:38 ]
>>320
目に付いた(2)だけ

#include <stdio.h>

double pow_f(double x, int p) {
double f;
if(p==0) return 1;
f = pow_f(x, p-1) * (x-p+1);
return f;
}

int main(void) {
double x;
int p;
scanf("%lf %d",&x ,&p);
printf("%.1f",pow_f(x, p));
return 0;
}



326 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:50:35 ]
>>323
宿題にスマートに答える役立つ人材

327 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:52:59 ]
役立たずがいなくなるということは宿題丸投げ自体が無くなるということだから・・・
人がいるのかいないのか分からないままでdat落ちしてしまうね

328 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:54:30 ]
>>327
出題者はスレの維持に役立っていますので
役立たずではありません

329 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:55:57 ]
もともとそういう趣旨のスレだしな

330 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:02:10 ]
>>320
全部再起なんか使わなくてもできる
非常に悪い再起の例

再起は必要以上にスタック喰い潰すから使わないで済むなら極力使わないほうがいい
って、なんの答えにもなっとらんな

331 名前:デフォルトの名無しさん [2007/06/27(水) 00:03:30 ]
綺麗なソースを作ろうと思い、セオリーを守ってる(グローバル変数を極力使わないようにしてる・・・etc)が
実に汚いソースになる。
汚いと分かっていながらどこをどの様に修正すれば良いのか皆目検討つかないから困る。

助けて・・・。

332 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:08:28 ]
>>324
ありがとう
できればもう少し詳しく説明して欲しいです

333 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:17:42 ]
>>331
広域変数は悪じゃない
staticで外部モジュールから参照できないようにするとか
きっちり管理さえすれば忌み嫌うものではない
むしろ広域変数を無理に避けようとして余計マズい設計になることの方が、本来避けるべき

>>332
これ以上詳しく説明しろといわれてもな
Cで使ってる以上は、constにさえ気をつければ初期化も代入もそんな大層な差はない
C++だとまた話が変わってくるんだけど
具体例見るのが一番手っ取り早いから、いろいろ調べてみ

334 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:18:49 ]
>>308 1と2をとりあえず先に
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4414.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4415.c

335 名前:332 mailto:sage [2007/06/27(水) 00:26:28 ]
>>333
わかりました
色々ありがとうございました!




336 名前:331 [2007/06/27(水) 00:28:34 ]
>>333
うん。
今日、指摘された。
staticのスコープは定義された箇所のみが有効範囲だよね?
でもアドレス渡ししたらスコープ外の場所でも値を書き換えたり出来る?

多分、出来たとしてもやっちゃ駄目なんだろうけど・・・。




337 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:38:00 ]
どうでもよいが>>331よ。それは宿題の話なのか。
C言語に関する一般的な相談事ならスレ違いだぞよ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<213KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef