C/C++の宿題を片付けます 96代目
■ このスレッドは過去ログ倉庫に格納されています
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/
0449デフォルトの名無しさん
2007/09/28(金) 11:28:03そういうときは、色々な変数の値をprintfで吐き出すと良いよ
> scanf("%s,in_filename");
0450448
2007/09/28(金) 12:01:37申し訳ありませんでした……
0451デフォルトの名無しさん
2007/09/28(金) 12:50:240452デフォルトの名無しさん
2007/09/28(金) 15:00:32[2] 問題文(含コード&リンク):
/****memo.txt********/
atsusa a ts u s a
au a u
awatadashii a w a t a d a sh i i
awa a w a
/*********************/
このmemo.txt というファイルがあるとして、
このファイルを読み込み、右の「a,ts,u,s,a」という単位で
かかれてある右の列(2列目)を(atsusaを1列目、a,ts,u,s,aを2列目)
a
ts
u
s
a
と表示できるようにしなさい。
[3] 環境
[3.1] OS:LINUX
[3.3] 言語:C
[4] 期限:早いほうがいいです
[5] その他の制限:なし
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):圧力P一定の下、温度変化量ΔTしたとき、1molの理想気体のガス容積の変化量ΔVを算出する関数を作成しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:CPad for Borland C++Compiler
ver2.31
[3.3] 言語:C++
[4] 期限:2007年09月28日20時くらいまで
本当にわからなくて困っています。よろしくお願い致します。
0454 ◆vLIz8KOkPM
2007/09/28(金) 17:29:14[3] 環境
[3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C
[4] 期限: 9月29日(土)午後9時まで
[5] その他の制限: ポインタ、構造体、配列、関数まで習ったので、この範囲内でお願いします。
[2] 問題文(含コード&リンク):
**発展課題**について【下に、発展課題の問題文、自分の作成したプログラムをのせます】、
各口座のデータをバイナリファイルに保存する機能(口座データが変更される度にfwriteで)
各口座のデータをバイナリファイルから読み込む機能(プログラム起動時に1 回のみfreadで)を追加せよ.実行例を下に示す。
% ./kadai13
口座データ読込み(1:ファイルから2:初期値を使用)? 1
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 20000
ありがとうございました.残高は518600 円です
口座データ保存(1:ファイルへ2:保存しない)? 1
口座番号を入力してください: ← 口座番号入力に戻る
発展課題の問題については>>455
それに対する自分のプログラムは>>456
0455 ◆vLIz8KOkPM
2007/09/28(金) 17:29:46ATM(Automated Teller Machine; 現金自動預け払い機) システムを実現するプログラムを作成する.
最初に,氏名,口座番号,暗証番号,預金残高を要素とする構造体を定義し,512 人分の口座が作成可能なようにせよ.
また,初期値として次のように構造体の内容を設定せよ.
• 田中太郎の口座番号は1234 で,預金残高を1,234,560 円に設定する.
• 山田花子の口座番号は5678 で,預金残高を 987,600 円に設定する.
• 鈴木一郎の口座番号は9012 で,預金残高を 538,600 円に設定する.
• 暗証番号は口座番号に1111 を足して10000 で割った余りに設定する.
このとき引出しの機能を実現せよ。具体的には,口座番号の入力,暗証番号の入力と確認,支払額の入力,預金残高の更新をするプログラムを作成せよ.
実行例を以下に示す
% ./kadai10
口座番号を入力してください: 5000 ← 存在しない
暗証番号を入力してください: 0123
口座番号または暗証番号が間違っています.
口座番号を入力してください: 9012
暗証番号を入力してください: 5555 ← 間違っている
口座番号または暗証番号が間違っています.
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 1000000 ← 預金額より多い
預金額が不足しています.
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 20000
ありがとうございました.残高は518600 円です.
口座番号を入力してください: ← 始めに戻る
0456 ◆vLIz8KOkPM
2007/09/28(金) 17:35:06#include<stdio.h> #include<string.h> #define MAC 256
main(){
char save[MAC]; int account; int code; int draw; int i;
struct{
char name[MAC]; int account; int code; int balance;
}ATM[500];
strcpy(ATM[0].name,"田中太郎"); ATM[0].account=1234; ATM[0].code=(ATM[0].account+1111)%10000; ATM[0].balance=1234560;
strcpy(ATM[1].name,"山田花子"); ATM[1].account=5678; ATM[1].code=(ATM[1].account+1111)%10000; ATM[1].balance=987600;
strcpy(ATM[2].name,"鈴木一郎"); ATM[2].account=9012; ATM[2].code=(ATM[2].account+1111)%10000; ATM[2].balance=538600;
printf("あなたの口座番号を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&account);
for(i=0;i<=500;i++){ if(account==ATM[i].account) break; }
if(account!=ATM[i].account){ printf("そのような口座は存在しません.\n"); }
else{ printf("暗証番号を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&code);
for(i=0;i<=500;i++){ if(code==ATM[i].code) break; }
if(code==ATM[i].code){ printf("%s 様ですね.\n",ATM[i].name); printf("引出し金額を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&draw);
if(draw<0){ printf("ERROR!!\n"); }
else if(draw>ATM[i].balance){ printf("金額が不足しています.\n"); }
else if(draw<=ATM[i].balance){ printf("預金残高は %d 円です.\n",ATM[i].balance-draw); }}
else if(code!=ATM[i].code){ printf("認証に失敗しました.\n"); }}
return(0);
}
0457 ◆vLIz8KOkPM
2007/09/28(金) 17:40:240458デフォルトの名無しさん
2007/09/28(金) 18:00:37[2] 問題文(含コード&リンク):文字列AB、CD、EF、GHがある。キーボードから文字を入力しこの文字列があればそれを取り出す。
全部取り出したら終了する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: BCC5.5
[3.3] 言語:C
[4] 期限: 2007/10/1
[5] その他の制限:実行例
現在:AB、CD、EF、GH
文字を入力してください:AB
ABはありました。
現在:CD、EF、GH
文字を入力してください:TR
TRはありません。
現在:CD、EF、GH
文字を入力してください:
・
・
・
現在:GH
文字を入力してください:GH
GHはありました。
これで終了します。
0459デフォルトの名無しさん
2007/09/28(金) 18:46:37#include <string.h>
int main(void){
char *a[]={"AB","CD","EF","GH"},b[9],c[]="現在:%s",d[]="、%s",*e;int i;
while(1){
e=c;
for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i]){
printf(e,a[i]);
e=d;
}
}
if(e==c) break;
printf("\n文字を入力してください:");
scanf(" %8[^\n]",b);
for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i] && !strcmp(a[i],b)){
printf("%sはありました。\n",b);
a[i]=0;
goto found;
}
}
printf("%sはありません。\n",b);
found:;
}
puts("これで終了します。 ");
return 0;
}
0460デフォルトの名無しさん
2007/09/28(金) 19:02:440461デフォルトの名無しさん
2007/09/28(金) 21:50:48[2]問題文:ポインタをつかって�@変数aのアドレスを獲得する。�A変数bのアドレスを変数aのアドレスの4バイト後方におきたい。�B変数aのアドレスの4バイト後方に(a+90)の値を代入する。�C�A、�Bの結果をprintf文で出力。
[3]環境
[3.1]Windows、Visual stdio Japan2005
(注)エラーが出ると思いますが、結果は出ます。
お願いします。
0462デフォルトの名無しさん
2007/09/28(金) 21:58:400463デフォルトの名無しさん
2007/09/28(金) 22:12:58おれも片付けに参加しようかね。
0464デフォルトの名無しさん
2007/09/28(金) 22:16:590465デフォルトの名無しさん
2007/09/28(金) 22:48:52http://blogs.wankuma.com/jitta/archive/2007/09/27/98335.aspx
http://blogs.wankuma.com/jitta/archive/2007/09/28/98562.aspx
0466デフォルトの名無しさん
2007/09/28(金) 23:10:13どの程度自由度があるかわかんね.
"memo.txt"というファイル名に対して,a ts u saを表示するだけでいいの?
それとも,そのコメント風の部分も評価しなきゃいけないの?
0467デフォルトの名無しさん
2007/09/28(金) 23:28:39俺も極力使うなって言われたけど中にはそっちの方が分かりやすいって人もいるんじゃない?
0468デフォルトの名無しさん
2007/09/28(金) 23:35:31この例だと分かりにくいぞw
判定ループは関数化して、戻り値で ありました/ありません 表示だろ、普通。
0469デフォルトの名無しさん
2007/09/28(金) 23:58:10深い考えがあってgoto使ってるようには見えないけどな
0470デフォルトの名無しさん
2007/09/29(土) 00:05:250471デフォルトの名無しさん
2007/09/29(土) 00:18:17横槍で良く分かってないけど、コレで良いか?
for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i] && !strcmp(a[i],b)){
printf("%sはありました。\n",b);
a[i]=0;
break;
}
}
if(i==sizeof(a)/sizeof(a[0])) printf("%sはありません。\n",b);
0472デフォルトの名無しさん
2007/09/29(土) 00:22:350473デフォルトの名無しさん
2007/09/29(土) 00:37:36char *format;
・・・
format = "%sはありません。\n";
for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i] && !strcmp(a[i],b)){
a[i]=0;
format = "%sはありました。\n";
break;
}
}
printf(format,b);
0474452
2007/09/29(土) 00:39:29atsusa a ts u s a
au a u
awatadashii a w a t a d a shi i
awa a w a
/*********************/
ちょっといろいろ考えてたんだけど。
このファイルを読み込み、右の「a,ts,u,s,a」という単位で
かかれてある右の列(2列目)を(atsusaを1列目、a,ts,u,s,aを2列目)
a
ts
u
s
a
という風な形で、ファイル"output1.txt"と出力するようにしなさい。
ってのがいいかな。
”atsusa a ts u s a”のスペースがくるたびに改行して配列にいれて、その1つ目を無視して2つ目から
配列にいれて出力すればいんだけどどう書けばいいのかわからなくて。
0475デフォルトの名無しさん
2007/09/29(土) 00:48:160476デフォルトの名無しさん
2007/09/29(土) 01:01:46型はintの整数です。
0477デフォルトの名無しさん
2007/09/29(土) 01:05:300478デフォルトの名無しさん
2007/09/29(土) 01:17:52ファイルのフォーマットが今ひとつ分かんないので、チョー手抜き。
1行は254文字以下、行末にスペースが無い、単語間のスペースが1つという条件。
#include <stdio.h>
#include <string.h>
int main()
{
FILE *ifp, *ofp;
char line[256];
char *pos;
if((ifp = fopen("memo.txt", "r")) == NULL) { return 1; }
if((ofp = fopen("output1.txt", "w")) == NULL){ fclose(ifp); return 1; }
while(fgets(line, 256, ifp) != NULL){
if((pos = strchr(line, ' ')) != NULL){
for(pos++;*pos != '\0';pos++){
if(*pos == ' '){ fprintf(ofp, "\n"); }
else{ fprintf(ofp, "%c", *pos); }
}
}
}
fclose(ifp); fclose(ofp);
return 0;
}
0479デフォルトの名無しさん
2007/09/29(土) 03:43:34[2] 問題文(含コード&リンク):
ファイルにN×Nの整数行列が2つ書き込まれている。この2つの行列積を求め、
解を違うファイルに書き込みなさい。
ただし、2つのN×N整数行列のデータは
3
1 2 3
5 6 7
1 2 3
3 2 1
3 4 5
6 7 8
のように書き込まれているとする。
(先頭の値で次元Nを指定している。)
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C言語)
[4] 期限: 07年9月30日まで
[5] その他の制限:入力ファイル、出力ファイルはともに任意のファイル名を
指定できるようにする。
「257」の方のプログラムが見た感じ似ていたので、挑戦してみたのですが
やはり無理でした…
0480459
2007/09/29(土) 04:58:00とりあえず>>458はgotoまずかったらテキトーに直しといて。
1番いいのは>>468だけど、>>471か>>473に置き換えてもいいんじゃないかな。
講師がソースろくすっぽ見ないってんなら関係ないけど。
0481デフォルトの名無しさん
2007/09/29(土) 05:17:34型が int なら
int a, b;
int b, a;
のいずれか(環境依存)で a の4バイト後ろに b が配置されるけど題意の様に
『a のアドレスを得てから』は無理だな
出題者は &b = (&a)++; が可能だとでも思ってるのかな
0482デフォルトの名無しさん
2007/09/29(土) 05:39:05strtok() 使えば簡単じゃね?禁止されてるなら
char buf[100]; // に "atsusa a ts u s a\n" が入ってると考えてね
char *top, *ptr;
top = strchr( buf, ' ' );
if( top ) {
top++;
while( 1 ) {
ptr = strchr( top, ' ' );
if( ptr ) *ptr = '\n';
else break;
}
printf( "%s", top );
}
で出力できると思うけど、区切りの ' ' が複数連続すると余計な改行が発生するから30点くらい?
0483デフォルトの名無しさん
2007/09/29(土) 07:11:26>>316 に追加で
int main(void){
FILE *fp_in, *fp_out;
int N=0, column, row;
matrix_t *a, *b, *c;
fp_in=fopen("ファイル", "r");
if(fp_in==NULL) return 1;
fp_out=fopen("違うファイル", "w");
if(fp_out==NULL){
fclose(fp_in);
return 1;
}
fscanf(fp_in, "%d", &N);
a=matrix_alloc(N, N);
b=matrix_alloc(N, N);
for(column=0;column<N;column++)
for(row=0;row<N;row++) fscanf(fp_in, "%lf", &a->data[column][row]);
for(column=0;column<N;column++)
for(row=0;row<N;row++) fscanf(fp_in, "%lf", &b->data[column][row]);
c=matrix_mul(a, b);
for(column=0;column<N;column++){
for(row=0;row<N;row++) fprintf(fp_out, " %.0f", c->data[column][row]);
fprintf(fp_out, "\n");
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
0484デフォルトの名無しさん
2007/09/29(土) 07:39:15#include<stdio.h>
int main(void)
{
char buf[1000];
FILE *fp=stdin;
int is_top=1;
while(1)
{
if(fscanf(fp, "%[^ \t\n]", buf)==1){
if(!is_top) printf("%s\n", buf);
is_top=0;
}
else if(fscanf(fp, "%[ \t]", buf)==1)
{
}
else if(fscanf(fp, "%1[\n]", buf)==1)
{
is_top=1;
}
else
{
break;
}
}
return 0;
}
0485デフォルトの名無しさん
2007/09/29(土) 11:44:390486デフォルトの名無しさん
2007/09/29(土) 11:47:41double dv(double p,double dt){return 8.314/p*dt;}
0487デフォルトの名無しさん
2007/09/29(土) 12:05:27456の動きが455の表示の例と違うんだけど、それは無視して良いんかな?
0488479
2007/09/29(土) 12:19:43matrix_t *a, *b, *c; 部分でエラーが出てしまいます。
あと、ファイル指定は>>257の方のような、キーボードから行える形にしてもらいたいのですが・・・
よろしくお願いします。
0489デフォルトの名無しさん
2007/09/29(土) 12:31:35>>483 をよく読んでから
>>257 の必要な部分をコピペでおk
あと、変数名はどちらか合わせないといけない
0490479
2007/09/29(土) 14:50:00すみません。そのプログラムを作成してもらえないでしょうか?
力不足でプログラムを応用して完成することが無理なんです・・・
0491デフォルトの名無しさん
2007/09/29(土) 14:51:560492デフォルトの名無しさん
2007/09/29(土) 14:52:51[2] 問題文(含コード&リンク): 下記
[3] 環境
[3.1] OS: (Windows)
[3.2]
[3.3] 言語: (C)
[4]9/29
かなりの初心者でさっぱりです。ヨロシク願いします。
以下のプログラムは、入力された10個の数値を引き算し、その結果を表示するプログラムです。
9〜11行目を別の関数(関数名はFuncDev)とし、修正しなさい。
ただし、グローバル変数は使わないこと。また、FuncDev内のローカル変数名は任意とする。
FuncDev関数は以下の定義とする。
int FuncDEv(void)
FuncDev関数の戻り値は、画面入力されたint型データとする。
#include<stdio.h>
void main(void);
void main(void)
{
int n1,n2;
int nt;
nt=0;
for(n1=0;n1<10;n1++){
printf("0-9の数値を入力:");
scanf("%d,&n2");
nt-=n2;
}
printf("結果%dです"nt);
}
0493デフォルトの名無しさん
2007/09/29(土) 15:03:33int FuncDev(void)
{
int n2;
printf("0-9の数値を入力:");
scanf("%d", &n2);
return n2;
}
void main(void)
{
int n1,n2;
int nt;
nt=0;
for(n1=0;n1<10;n1++){
n2= FuncDev();
nt-=n2;
}
printf("結果%dです", nt);
}
0494 ◆vLIz8KOkPM
2007/09/29(土) 16:11:51456のプログラムで大丈夫です。よろしくお願いしますm(__)m
0495474
2007/09/29(土) 17:37:56ありがとうございました。
ちょっと作り替えて表示できました。
表示できたこの
a
ts
u
s
a
a
u
a
w
...
とできたのですが、これを
a a a
ts u w
u a
s t
a a
d
a
と言う風にchar型の二次元配列に格納したいんですけど。
このあとに列単位で違う関数に送りたいんですけど可能ですかね。
0496デフォルトの名無しさん
2007/09/29(土) 17:40:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4991.txt
0497デフォルトの名無しさん
2007/09/29(土) 17:45:48>エラーが出ると思いますが、結果は出ます。
こういうこと?
#include <stdio.h>
int main(){
int a , *b;
printf("a?>");
scanf("%d" , &a);
b = &a + 1;
printf("Address:a=>%d , b=>%d\n" , &a , b);
*b = a + 90;
printf("Value:a=>%d , b=>%d" , a , *b);
return 0;
}
まあ、bのアドレスがaの4バイト先にあるわけじゃないけど、出題者はこういうことを言いたいんじゃね?
エラー出ないけどw
0498デフォルトの名無しさん
2007/09/29(土) 19:23:14#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]){
FILE *fp;
int row = 0, col = 0, max_col = 0, i, j;
char buf[128], *p, str[128][128][3] = {0};
if(argc < 2 || (fp = fopen(argv[1], "r")) == NULL) return 0;
while(fgets(buf, sizeof(buf), fp) != NULL){
p = strtok(buf, " \n");
while((p = strtok(NULL, " \n")) != NULL) strcpy(str[row][col++], p);
row++, col = 0;
}
fclose(fp);
for(i = 0; i < row; i++){
for(j = 0; str[i][j][0] != '\0'; j++) ;
if(j > max_col) max_col = j;
}
for(j = 0; j < max_col; j++){
for(i = 0; i < row; i++)
if(str[i][j][0] != '\0') printf("%2s ", str[i][j]);
else printf("%*c", 3, 32);
printf("\n");
}
return 0;
}
0499 ◆vLIz8KOkPM
2007/09/30(日) 01:55:24お返事遅れてすみません…
お陰様で助かりました。大変ありがとうございましたm(__)m
0500452
2007/09/30(日) 02:29:03作ってくれたのはありがたいんですけど、少々考え直しまして。
めんどくさいけど大量にファイルを出力してから、それを入力したほうが
作ってあるプログラムにあわせやすいので。
そこでちょっとまた疑問がでまして。
a
ts
u
s
a
a
w
a
a
u
というファイル(例えばalpa_file.txt)があるとして、この何もかかれていない
行にきたら、それまでの文字をファイル出力して、また次の行にいき、すすんでいって、何もかかれてない行にきたら
また違うファイルに出力みたいにしたいんですけど。
0501デフォルトの名無しさん
2007/09/30(日) 02:46:25長くなったのでロダの方へ上げました
どうか皆様の知恵をお願いします
0502デフォルトの名無しさん
2007/09/30(日) 07:16:59>>1嫁。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
<略>
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
ということでお前はもう質問禁止な方向に。
0503デフォルトの名無しさん
2007/09/30(日) 07:34:39>>1嫁。
> 気に入らない質問やその他や発言はスルーの方向で。
ということでお前はもう回答禁止な方向に。
0504デフォルトの名無しさん
2007/09/30(日) 08:46:530505デフォルトの名無しさん
2007/09/30(日) 14:39:56>>1嫁。
> 気に入らない質問やその他や発言はスルーの方向で。
ということでお前はもう回答禁止な方向に。
>>504
こうですかわかりません><
0506デフォルトの名無しさん
2007/09/30(日) 15:41:30[2] 問題文(含コード&リンク):口頭で説明されたので問題文はありません。
入力した2文字のアルファベット4組(たとえば ae、bd、ac、ab)を
アルファベット順(上の例だったら ab、ac、ae、bd)に表示せよ
また数字でも同じことをせよ(3、4、2、1→1、2、3、4)
あとリスト構造を使えとか言ってました
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:学校のはよくわからんです
[3.3] 言語:C
[4] 期限: 2007年10月3日まで
[5] その他の制限:とくにないです
よろしくおねがいします
0507デフォルトの名無しさん
2007/09/30(日) 15:50:16「リスト構造を使え」というのは、その問題に関しては何か不自然。
もういちど問題を確認することをお勧めする。
0508デフォルトの名無しさん
2007/09/30(日) 16:01:020509デフォルトの名無しさん
2007/09/30(日) 16:11:52要素数がたった4つに固定されていたら、
リストを使う意味は全く無いと思うけど。
俺は、要素数4つというのは単に説明の例で、
本当はもっと多いか不明のどちらかだと予想してる。
0510デフォルトの名無しさん
2007/09/30(日) 17:03:59すみません、聞いてみたら4つで固定とは言ってなかったとです。
0511デフォルトの名無しさん
2007/09/30(日) 17:55:31始まりの部分は、
#include<stdio.h>
int main(void)
{
でお願いします
携帯からですいません
0512デフォルトの名無しさん
2007/09/30(日) 18:04:41知るか(笑)
0513デフォルトの名無しさん
2007/09/30(日) 18:45:520514デフォルトの名無しさん
2007/09/30(日) 18:45:59入力はキーボードから。EOF (CTRL-D など)で入力終了。
エラーチェックは特にしていない。挿入ソート。
二文字文字列バージョン:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4994.c
整数値バージョン:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4995.c
0515デフォルトの名無しさん
2007/09/30(日) 18:54:29P^-1 は手で計算してよろしい?それとも
プログラム上で計算しないとダメ?
あと #include <stdio.h> だけど C++ でいいの?
0516デフォルトの名無しさん
2007/09/30(日) 19:43:45面白いな
0517デフォルトの名無しさん
2007/09/30(日) 20:32:33#include<stdio.h>
int main(void){
int i, j, n, num[9+1];
while(1)
{
printf("行数(1-9):");
scanf("%d", &n);
if(1<=n && n<=9) break;
printf("\nエラー\n");
}
num[0]=num[1]=1;
for(i=0;i<n;i++)
{
num[i+1]=0;
for(j=i;j>=0;j--) num[j+1]+=num[j];
for(j=0;j<=i+1;j++) printf(" %d", num[j]);
printf("\n");
}
return 0;
}
0518デフォルトの名無しさん
2007/09/30(日) 20:38:28#include<iostream>
int main(void){
int i, j, n, num[10];
while(1){
std::cout << "行数(1-9):";
std::cin >> n;
if(1<=n && n<=9) break;
std::cout << std::endl << "エラー" << std::endl;
}
num[0]=num[1]=1;
for(i=0;i<n;i++){
num[i+1]=0;
for(j=i;j>=0;j--) num[j+1]+=num[j];
for(j=0;j<=i+1;j++) std::cout << num[j] << " ";
std::cout << std::endl;
}
return 0;
}
0519デフォルトの名無しさん
2007/09/30(日) 21:42:56日本語でおk
少し長い文章を書くと内容がめちゃくちゃになるようなので
何をしたいのか最初から箇条書きで書き直し
0520デフォルトの名無しさん
2007/09/30(日) 21:48:50自分で計算してOKです
そして言語ですが、確認したらCでもC++でも可能との事
問題文のソース例はCの場合でした
0521デフォルトの名無しさん
2007/09/30(日) 21:49:34>>517
0522デフォルトの名無しさん
2007/09/30(日) 21:57:280523500
2007/09/30(日) 22:01:09このファイルをfgetsで読み込んで、文字が書かれてない行にきたら
それまで読み込んだ文字を違うファイル(output_file1.txt)に出力します。
出力したらまた元のファイルの読み込みを始めます。そして文字が書かれてない行に
きたら、また違う別のファイル(output_file2.txt)に出力します。
読み込むファイルfile1.txtが
a
ts
u
s
a
a
w
a
a
u
とすると
出力するファイルoutput_file1.txtに
a
ts
u
s
a
また次の出力するファイルoutput_file2.txtに
w
a
と出力できるようにしたいということです。すみません説明できなくて
0524500
2007/09/30(日) 22:02:17>w
>a
でなくて
a
w
a
です
0525デフォルトの名無しさん
2007/09/30(日) 22:25:40#include <stdio.h>
int main(void){
char buff[256];int i=1;
FILE *fin=fopen("file1.txt","r"),*fout=fopen("output_file1.txt","w");
while(fgets(buff,sizeof(buff)/sizeof(buff[0]),fin)){
if(buff[0]=='\n'){
fclose(fout);
sprintf(buff,"output_file%d.txt",++i);
fout=fopen(buff,"w");
}else{
fputs(buff,fout);
}
}
fclose(fout);fclose(fin);
return 0;
}
0526デフォルトの名無しさん
2007/09/30(日) 22:29:03重要なのは
どんな入力に対して
どんな出力が必要か
を明記する事であって、ころころ変わるあなたの考える処理方法ではない
仮に、読み上げソフトか何かに与えて、同時発音させるのが目的ならば
あなたの考えはあと何回も変わるだろうし…
もう少し、何の為に何をどうしたいのかを整理して出直してきて下さい
[user]$ awk -f a.awk < memo.txt
#!/bin/awk -f
BEGIN{count=1}
!/^$/ && NF>1{
filename=sprintf("output_file%d.txt", count);
for(i=2;i<=NF;i++) print $i>> filename
count=count+1;
}
0527デフォルトの名無しさん
2007/09/30(日) 23:02:450528デフォルトの名無しさん
2007/09/30(日) 23:06:490529500
2007/09/30(日) 23:14:39ありがとさん
0530デフォルトの名無しさん
2007/09/30(日) 23:16:12[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4998.txt
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限:10月1日午前1時まで
[5] その他の制限:C言語を習い始めてまだ3ヶ月程度です
よろしくおねがいします
0531デフォルトの名無しさん
2007/09/30(日) 23:23:48課題1
#include <stdio.h>
int main( void )
{
int year;
int check;
scanf( "%d", &year );
if ( year % 400 == 0 ) {
check = 1;
}
else if ( year % 100 == 0 ) {
check = 0;
}
else if ( year % 4 == 0 ) {
check = 1;
}
else {
check = 0;
}
if ( check == 0 ) {
printf( "閏年ではありません" );
}
else {
printf( "閏年です" );
}
return 0;
}
0532デフォルトの名無しさん
2007/09/30(日) 23:33:35課題2(むりやりswitch使った悪い例)
#include <stdio.h>
int main( void ){
const char * const tv_name[] = {
"HBC", "NHK総合",
"STV", "NHK教育",
"TVH", "UHB",
"HTB",
};
int channel;
scanf( "%d", &channel );
switch ( channel ) {
case 1: channel = 0; break;
case 3: channel = 1; break;
case 5: channel = 2; break;
case 12: channel = 3; break;
case 17: channel = 4; break;
case 27: channel = 5; break;
case 35: channel = 6; break;
default: channel = -1; break;
}
if ( channel != -1 ) {
printf ( "%s", tv_name[ channel ] );
}
return 0;
}
0533デフォルトの名無しさん
2007/09/30(日) 23:35:40#include <stdio.h>
int main(void){
int input;
char *channel=NULL;
scanf("%d",&input);
switch (input){
case 1:channel="HBC";break;
case 5:channel="STV";break;
case 12:channel="NHK教育";break;
case 17:channel="TVH";break;
case 27:channel="UHB";break;
case 35:channel="HTB";break;
default:channel="砂嵐";break;
}
printf("%s\n",channel);
return 0;
}
0534デフォルトの名無しさん
2007/09/30(日) 23:39:37int main(void)
{
int a;
printf("西暦を入力してください。");
scanf("%d",&a);
if((a % 4 == 0 && a % 100 != 0) || a % 400 == 0)
printf("%d年は閏年です。\n ",a);
else
printf("%d年は閏年じゃありません。\n",a);
return(0);
}
0535 ◆AsDEGV.0To
2007/10/01(月) 00:02:45[2] 問題文(含コード&リンク):
年月日(YYYY MM DD)と10個の整数値をキーボードから入力し、それにの値を
バイナリファイルに保存するプログラムを作成すること。それぞれの値の形は、
年(short),月(short),日(short),入力した整数値(int)とすること。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限:2007年10月01日01:10まで
[5] その他の制限:ポインタ・ファイル入出力迄はやっています。
宜しくお願いします。
0536デフォルトの名無しさん
2007/10/01(月) 00:14:460538 ◆4Jr51i3qWE
2007/10/01(月) 00:21:27バイナリと指定されています
0539デフォルトの名無しさん
2007/10/01(月) 00:26:59#include<stdio.h>
int main(void)
{
short year, month, day;
int i, value[10], value_num=sizeof(value)/sizeof(value[0]);
FILE *fp;
printf("年:");
scanf("%hd", &year);
printf("月:");
scanf("%hd", &month);
printf("日:");
scanf("%hd", &day);
for(i=0;i<value_num;i++)
{
printf("%2d番目の数値入力:", i+1);
scanf("%d", &value[i]);
}
fp=fopen("binary.dat", "wb");
if(fp==NULL) return 1;
fwrite(&year, sizeof(year), 1, fp);
fwrite(&month, sizeof(month), 1, fp);
fwrite(&day, sizeof(day), 1, fp);
fwrite(value, sizeof(value[0]), value_num, fp);
fclose(fp);
return 0;
}
0540デフォルトの名無しさん
2007/10/01(月) 00:29:37チョン、さっさと死ねや
0541 ◆4Jr51i3qWE
2007/10/01(月) 00:30:38有難うございました。
0542デフォルトの名無しさん
2007/10/01(月) 00:32:55チョン、さっさと死ねや
0543デフォルトの名無しさん
2007/10/01(月) 00:33:43チョン、さっさと死ねや
0544デフォルトの名無しさん
2007/10/01(月) 00:34:180545 ◆4Jr51i3qWE
2007/10/01(月) 00:56:01[1] 授業単元:コンピュータとプログラミング
[2] 問題文(含コード&リンク):
年月日(YYYY MM DD)と10個の整数値をキーボードから入力し、それにの値を
バイナリファイルに保存するプログラムを作成すること。それぞれの値の形は、
年(short),月(short),日(short),入力した整数値(int)とすること。
上記の問題で作成したファイルを読み込んで、内容をディスプレイに順番に表示するプログラムを作成する事。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限:2007年10月01日01:55まで
[5] その他の制限:ポインタ・ファイル入出力迄はやっています。
連続になりますが、お手数掛けます。
0546デフォルトの名無しさん
2007/10/01(月) 01:01:45#include<stdio.h>
int main(void)
{
short year, month, day;
int i, value[10], value_num=sizeof(value)/sizeof(value[0]);
FILE *fp;
fp=fopen("binary.dat", "rb");
if(fp==NULL) return 1;
fread(&year, sizeof(year), 1, fp);
fread(&month, sizeof(month), 1, fp);
fread(&day, sizeof(day), 1, fp);
fread(value, sizeof(value[0]), value_num, fp);
fclose(fp);
printf("%d %d %d\n", year, month, day);
for(i=0;i<value_num;i++)
{
printf("%2d番目の数値:%d\n", i+1, value[i]);
}
return 0;
}
0547 ◆4Jr51i3qWE
2007/10/01(月) 01:04:480548デフォルトの名無しさん
2007/10/01(月) 02:05:28[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4999.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月1日23:00まで
[5] その他の制限: よろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています