C/C++の宿題を片付けます 96代目at TECH
C/C++の宿題を片付けます 96代目 - 暇つぶし2ch449:デフォルトの名無しさん
07/09/28 11:28:03
>>448
そういうときは、色々な変数の値をprintfで吐き出すと良いよ

> scanf("%s,in_filename");

450:448
07/09/28 12:01:37
なんというくだらないミス\(^O^)/

申し訳ありませんでした……

451:デフォルトの名無しさん
07/09/28 12:50:24
ファイル読めない時のエラーメッセージもだしとけよ

452:デフォルトの名無しさん
07/09/28 15:00:32
[1] 授業単元: プログラミング演習
[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] その他の制限:なし



453: ◆EtzJSByuaQ
07/09/28 16:43:58

【質問テンプレ】
[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時くらいまで


本当にわからなくて困っています。よろしくお願い致します。

454: ◆vLIz8KOkPM
07/09/28 17:29:14
[1] 授業単元: プログラミング演習
[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

455: ◆vLIz8KOkPM
07/09/28 17:29:46
****************発展課題の問題文****************

ATM(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 円です.
口座番号を入力してください: ← 始めに戻る

456: ◆vLIz8KOkPM
07/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);
}

457: ◆vLIz8KOkPM
07/09/28 17:40:24
長文で申し訳ないですが、是非ともよろしくお願いします。m(_ _)m

458:デフォルトの名無しさん
07/09/28 18:00:37
[1] 授業単元:C言語
[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はありました。
            これで終了します。

459:デフォルトの名無しさん
07/09/28 18:46:37
#include <stdio.h>
#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;
}



460:デフォルトの名無しさん
07/09/28 19:02:44
gotoかよw

461:デフォルトの名無しさん
07/09/28 21:50:48
[1]授業単元:プログラミング演習
[2]問題文:ポインタをつかって①変数aのアドレスを獲得する。②変数bのアドレスを変数aのアドレスの4バイト後方におきたい。③変数aのアドレスの4バイト後方に(a+90)の値を代入する。④②、③の結果をprintf文で出力。
[3]環境
[3.1]Windows、Visual stdio Japan2005
(注)エラーが出ると思いますが、結果は出ます。
お願いします。

462:デフォルトの名無しさん
07/09/28 21:58:40
変数の型は?

463:デフォルトの名無しさん
07/09/28 22:12:58
一気に宿題されすぎでおれの宿題が答えられてないな。。。
おれも片付けに参加しようかね。

464:デフォルトの名無しさん
07/09/28 22:16:59
どれ?

465:デフォルトの名無しさん
07/09/28 22:48:52
>>459 >>460

URLリンク(blogs.wankuma.com)
URLリンク(blogs.wankuma.com)

466:デフォルトの名無しさん
07/09/28 23:10:13
>>452
どの程度自由度があるかわかんね.
"memo.txt"というファイル名に対して,a ts u saを表示するだけでいいの?
それとも,そのコメント風の部分も評価しなきゃいけないの?

467:デフォルトの名無しさん
07/09/28 23:28:39
goto文使うとプログラム読みにくくなるしループとか抜け出すならbreakとかあるからな。
俺も極力使うなって言われたけど中にはそっちの方が分かりやすいって人もいるんじゃない?

468:デフォルトの名無しさん
07/09/28 23:35:31
>467
この例だと分かりにくいぞw
判定ループは関数化して、戻り値で ありました/ありません 表示だろ、普通。

469:デフォルトの名無しさん
07/09/28 23:58:10
条件判定部にsizeof(a)/sizeof(a[0])なんて書いてるのみると、
深い考えがあってgoto使ってるようには見えないけどな

470:デフォルトの名無しさん
07/09/29 00:05:25
goto無しで作ってみるか?

471:デフォルトの名無しさん
07/09/29 00:18:17
>>470
横槍で良く分かってないけど、コレで良いか?

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);


472:デフォルトの名無しさん
07/09/29 00:22:35
それだと、最後のifがムダだって言いたいんだろ

473:デフォルトの名無しさん
07/09/29 00:37:36
じゃあこうか?

char *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);

474:452
07/09/29 00:39:29
/****memo.txt********/
atsusa 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つ目から
配列にいれて出力すればいんだけどどう書けばいいのかわからなくて。


475:デフォルトの名無しさん
07/09/29 00:48:16
フラグ使って一つ目のスペースがくるまで飛ばせば?

476:デフォルトの名無しさん
07/09/29 01:01:46
>>461
型はintの整数です。

477:デフォルトの名無しさん
07/09/29 01:05:30
変数bのアドレスは宣言時に決まるから、aのアドレスを得てからその4バイト後ろをbのアドレスにするってのは無理

478:デフォルトの名無しさん
07/09/29 01:17:52
>>474
ファイルのフォーマットが今ひとつ分かんないので、チョー手抜き。
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;
}

479:デフォルトの名無しさん
07/09/29 03:43:34
[1] 授業単元:C言語基礎
[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」の方のプログラムが見た感じ似ていたので、挑戦してみたのですが
やはり無理でした…

480:459
07/09/29 04:58:00
何か夜中にいろいろやりとりあったみたいやね。
とりあえず>>458はgotoまずかったらテキトーに直しといて。
1番いいのは>>468だけど、>>471>>473に置き換えてもいいんじゃないかな。
講師がソースろくすっぽ見ないってんなら関係ないけど。

481:デフォルトの名無しさん
07/09/29 05:17:34
>>476
型が int なら
int a, b;
int b, a;
のいずれか(環境依存)で a の4バイト後ろに b が配置されるけど題意の様に
『a のアドレスを得てから』は無理だな
出題者は &b = (&a)++; が可能だとでも思ってるのかな

482:デフォルトの名無しさん
07/09/29 05:39:05
>>474
strtok() 使えば簡単じゃね?禁止されてるなら

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点くらい?




483:デフォルトの名無しさん
07/09/29 07:11:26
>>479
>>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;
}

484:デフォルトの名無しさん
07/09/29 07:39:15
>>474
#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;
}

485:デフォルトの名無しさん
07/09/29 11:44:39
>>454->456をお願いしますm(__)m

486:デフォルトの名無しさん
07/09/29 11:47:41
>>453
double dv(double p,double dt){return 8.314/p*dt;}

487:デフォルトの名無しさん
07/09/29 12:05:27
>>485
456の動きが455の表示の例と違うんだけど、それは無視して良いんかな?

488:479
07/09/29 12:19:43
>>483
matrix_t *a, *b, *c; 部分でエラーが出てしまいます。
あと、ファイル指定は>>257の方のような、キーボードから行える形にしてもらいたいのですが・・・
よろしくお願いします。

489:デフォルトの名無しさん
07/09/29 12:31:35
>>488
>>483 をよく読んでから
>>257 の必要な部分をコピペでおk
あと、変数名はどちらか合わせないといけない

490:479
07/09/29 14:50:00
>>489
すみません。そのプログラムを作成してもらえないでしょうか?
力不足でプログラムを応用して完成することが無理なんです・・・

491:デフォルトの名無しさん
07/09/29 14:51:56
それをやらなければ身につかんだろうが

492:デフォルトの名無しさん
07/09/29 14:52:51
[1] 授業単元:
[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);
}

493:デフォルトの名無しさん
07/09/29 15:03:33
#include<stdio.h>

int 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);
}

494: ◆vLIz8KOkPM
07/09/29 16:11:51
>487
456のプログラムで大丈夫です。よろしくお願いしますm(__)m

495:474
07/09/29 17:37:56
>478、484
ありがとうございました。
ちょっと作り替えて表示できました。
表示できたこの
a
ts
u
s
a

a
u

a
w
...
とできたのですが、これを
a a a
ts u w
u a
s t
a a
d
a
と言う風にchar型の二次元配列に格納したいんですけど。
このあとに列単位で違う関数に送りたいんですけど可能ですかね。

496:デフォルトの名無しさん
07/09/29 17:40:46
>>494
URLリンク(kansai2channeler.hp.infoseek.co.jp)

497:デフォルトの名無しさん
07/09/29 17:45:48
>>461
>エラーが出ると思いますが、結果は出ます。
こういうこと?

#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

498:デフォルトの名無しさん
07/09/29 19:23:14
>>495
#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;
}

499: ◆vLIz8KOkPM
07/09/30 01:55:24
>>496
お返事遅れてすみません…
お陰様で助かりました。大変ありがとうございましたm(__)m

500:452
07/09/30 02:29:03
>>495
作ってくれたのはありがたいんですけど、少々考え直しまして。
めんどくさいけど大量にファイルを出力してから、それを入力したほうが
作ってあるプログラムにあわせやすいので。
そこでちょっとまた疑問がでまして。
a
ts
u
s
a

a
w
a

a
u

というファイル(例えばalpa_file.txt)があるとして、この何もかかれていない
行にきたら、それまでの文字をファイル出力して、また次の行にいき、すすんでいって、何もかかれてない行にきたら
また違うファイルに出力みたいにしたいんですけど。

501:デフォルトの名無しさん
07/09/30 02:46:25
URLリンク(kansai2channeler.hp.infoseek.co.jp)
長くなったのでロダの方へ上げました
どうか皆様の知恵をお願いします

502:デフォルトの名無しさん
07/09/30 07:16:59
>>501
>>1嫁。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
<略>
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。


ということでお前はもう質問禁止な方向に。


503:デフォルトの名無しさん
07/09/30 07:34:39
>>502
>>1嫁。
> 気に入らない質問やその他や発言はスルーの方向で。
ということでお前はもう回答禁止な方向に。

504:デフォルトの名無しさん
07/09/30 08:46:53
無限ループの予感。

505:デフォルトの名無しさん
07/09/30 14:39:56
>>503
>>1嫁。
> 気に入らない質問やその他や発言はスルーの方向で。
ということでお前はもう回答禁止な方向に。


>>504
こうですかわかりません><

506:デフォルトの名無しさん
07/09/30 15:41:30
[1] 授業単元:プログラミング
[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] その他の制限:とくにないです

よろしくおねがいします

507:デフォルトの名無しさん
07/09/30 15:50:16
>>506
「リスト構造を使え」というのは、その問題に関しては何か不自然。
もういちど問題を確認することをお勧めする。

508:デフォルトの名無しさん
07/09/30 16:01:02
リストのソートだろ?普通じゃね?

509:デフォルトの名無しさん
07/09/30 16:11:52
>>508
要素数がたった4つに固定されていたら、
リストを使う意味は全く無いと思うけど。

俺は、要素数4つというのは単に説明の例で、
本当はもっと多いか不明のどちらかだと予想してる。

510:デフォルトの名無しさん
07/09/30 17:03:59
>>509
すみません、聞いてみたら4つで固定とは言ってなかったとです。

511:デフォルトの名無しさん
07/09/30 17:55:31
C言語で、二重ループを用いた20行以上のプログラムと二重ループと配列を使った20以上のプログラムをレポートで出されたのですが、何か知っていたら教えてください。
始まりの部分は、
#include<stdio.h>
int main(void)
{
でお願いします
携帯からですいません

512:デフォルトの名無しさん
07/09/30 18:04:41
>>511
知るか(笑)

513:デフォルトの名無しさん
07/09/30 18:45:52
どんだけ漠然としてるんだwwww

514:デフォルトの名無しさん
07/09/30 18:45:59
>>506, >>510
入力はキーボードから。EOF (CTRL-D など)で入力終了。
エラーチェックは特にしていない。挿入ソート。

二文字文字列バージョン:
URLリンク(kansai2channeler.hp.infoseek.co.jp)

整数値バージョン:
URLリンク(kansai2channeler.hp.infoseek.co.jp)

515:デフォルトの名無しさん
07/09/30 18:54:29
>>501
P^-1 は手で計算してよろしい?それとも
プログラム上で計算しないとダメ?

あと #include <stdio.h> だけど C++ でいいの?

516:デフォルトの名無しさん
07/09/30 19:43:45
>>514
面白いな

517:デフォルトの名無しさん
07/09/30 20:32:33
>>501
#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;
}

518:デフォルトの名無しさん
07/09/30 20:38:28
言語間違えた orz
#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;
}

519:デフォルトの名無しさん
07/09/30 21:42:56
>>500
日本語でおk
少し長い文章を書くと内容がめちゃくちゃになるようなので
何をしたいのか最初から箇条書きで書き直し

520:デフォルトの名無しさん
07/09/30 21:48:50
>>515
自分で計算してOKです
そして言語ですが、確認したらCでもC++でも可能との事
問題文のソース例はCの場合でした

521:デフォルトの名無しさん
07/09/30 21:49:34
>>511
>>517

522:デフォルトの名無しさん
07/09/30 21:57:28
サンクス!

523:500
07/09/30 22:01:09
以下のファイル(file1.txt)があるとします。
このファイルを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
と出力できるようにしたいということです。すみません説明できなくて



524:500
07/09/30 22:02:17
>また次の出力するファイルoutput_file2.txtに
>w
>a

でなくて
a
w
a
です

525:デフォルトの名無しさん
07/09/30 22:25:40
fout=0として書き込む前にチェックするのが普通だろうが、まあいいや。
#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;
}


526:デフォルトの名無しさん
07/09/30 22:29:03
>>523-524
重要なのは
どんな入力に対して
どんな出力が必要か
を明記する事であって、ころころ変わるあなたの考える処理方法ではない

仮に、読み上げソフトか何かに与えて、同時発音させるのが目的ならば
あなたの考えはあと何回も変わるだろうし…
もう少し、何の為に何をどうしたいのかを整理して出直してきて下さい


[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;
}

527:デフォルトの名無しさん
07/09/30 23:02:45
未回答&&期限内の問題ってある?

528:デフォルトの名無しさん
07/09/30 23:06:49
>>527 Hello Worldを表示せよ

529:500
07/09/30 23:14:39
525
ありがとさん

530:デフォルトの名無しさん
07/09/30 23:16:12
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
[4] 期限:10月1日午前1時まで
[5] その他の制限:C言語を習い始めてまだ3ヶ月程度です
         よろしくおねがいします

531:デフォルトの名無しさん
07/09/30 23:23:48
>>530
課題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;
}

532:デフォルトの名無しさん
07/09/30 23:33:35
>>530
課題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;
}

533:デフォルトの名無しさん
07/09/30 23:35:40
遅れたorz
#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;
}

534:デフォルトの名無しさん
07/09/30 23:39:37
#include <stdio.h>

int 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);
}


535: ◆AsDEGV.0To
07/10/01 00:02:45
[1] 授業単元:コンピュータとプログラミング
[2] 問題文(含コード&リンク):
年月日(YYYY MM DD)と10個の整数値をキーボードから入力し、それにの値を
バイナリファイルに保存するプログラムを作成すること。それぞれの値の形は、
年(short),月(short),日(short),入力した整数値(int)とすること。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
[4] 期限:2007年10月01日01:10まで
[5] その他の制限:ポインタ・ファイル入出力迄はやっています。

宜しくお願いします。

536:デフォルトの名無しさん
07/10/01 00:14:46
バイナリで保存しなきゃだめなの?

537:530
07/10/01 00:19:17
>>531
>>532
>>533
>>534
ありがとうございます

538: ◆4Jr51i3qWE
07/10/01 00:21:27
>>536
バイナリと指定されています

539:デフォルトの名無しさん
07/10/01 00:26:59
>>535
#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;
}

540:デフォルトの名無しさん
07/10/01 00:29:37

チョン、さっさと死ねや

541: ◆4Jr51i3qWE
07/10/01 00:30:38
>>539
有難うございました。

542:デフォルトの名無しさん
07/10/01 00:32:55

チョン、さっさと死ねや

543:デフォルトの名無しさん
07/10/01 00:33:43

チョン、さっさと死ねや

544:デフォルトの名無しさん
07/10/01 00:34:18
キョンかと思った俺はハルヒ厨

545: ◆4Jr51i3qWE
07/10/01 00:56:01
2番目の問題もお願いします。

[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] その他の制限:ポインタ・ファイル入出力迄はやっています。

連続になりますが、お手数掛けます。

546:デフォルトの名無しさん
07/10/01 01:01:45
>>545
#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;
}

547: ◆4Jr51i3qWE
07/10/01 01:04:48
ありがとうございます。

548:デフォルトの名無しさん
07/10/01 02:05:28
[1] 授業単元:
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月1日23:00まで
[5] その他の制限: よろしくお願いします

549:デフォルトの名無しさん
07/10/01 02:28:59
>>548
キリ番げとw
URLリンク(kansai2channeler.hp.infoseek.co.jp)
参考にしろってプログラムがひどすぎる。
減算、除算のところに副作用があるから修正したいならしといて。

550:デフォルトの名無しさん
07/10/01 05:51:27
>>501, >>520 (1),(2),(3)

URLリンク(kansai2channeler.hp.infoseek.co.jp)

551:デフォルトの名無しさん
07/10/01 10:23:57
授業単元:C
問題文(含コード&リンク):
2000分を時間に換算するプログラムを作成しなさい
int min=2000;
実行画面
33時間20分です

552:デフォルトの名無しさん
07/10/01 10:34:12
>>551
テンプレ書けハゲ

553:デフォルトの名無しさん
07/10/01 10:37:25
>>551
#include<stdio.h>
int main(void){
int min=2000;
printf("%d時間%d分です",min==2000?33:0,min==2000?20:0);
return0;
}

554:デフォルトの名無しさん
07/10/01 11:03:21
[1] 授業単元:独習Cによる自主勉強
[2] 問題文:下記コメント
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン:BCC5.5
 [3.3] 言語: C
[4] 期限:特に無し
[5] その他の制限:くだらない問題ですみません
/*任意の数(ただし32767個まで)のdouble型を入力でき、それらの値を入力の
たびにディスクファイルに書き込むプログラムを作成してください。この
ファイルの名前はvaluesとします。また、入力された値の個数を監視し、それを
countという名前のファイルに書き込むものとする*/

555:デフォルトの名無しさん
07/10/01 11:04:57
int main(void)
{
FILE *fp1,*fp2;
int count=0;
double value;
char str[20];
if((fp1=fopen("values","wb"))==NULL){
printf("ファイルが開けません\n");
exit(1);}

if((fp2=fopen("count","wb"))==NULL){
printf("ファイルが開けません\n");
exit(1);}

do{
if((gets(str))==0){
printf("エラーが発生しました\n");
exit(1);}
if((value=atof(str))==0.0)break;

if(fwrite(&value,sizeof value,1,fp1)!=1){
printf("書き込みエラー\n");
exit(1);}
count++;
}while(count<32767);

if(fwrite(&count,sizeof count,1,fp2)!=1){
printf("書き込みエラー\n");
exit(1);}

fclose(fp1);
fclose(fp2);}

556:デフォルトの名無しさん
07/10/01 11:06:16
って↑のコードを作ってコンパイルして実行したのですが
正常にファイルが出来ません。

557:デフォルトの名無しさん
07/10/01 11:12:40
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
OS: WindowsL
コンパイラ名とバージョン: 言語:C
問題:台形の面積を求めるプログラムを作成しなさい
int a = 3;
int b = 4;
int h = 5;

実行画面
面積 = 17.50

558:557のスレ主です
07/10/01 11:16:21
面積の上辺 aは3
下辺 bは4
高さ hは5です

559:デフォルトの名無しさん
07/10/01 11:21:47
[1] 授業単元:
[2] 問題文(含コード&リンク):休み期間中に108問ある問題を終らせるには、毎日平均何問解けばよいか計算するプログラムを作成しなさい
int day = 29;
実行画面
3問:8日
4問:21日

560:デフォルトの名無しさん
07/10/01 11:55:04
>>559
三つも問題くれて有難う

561:デフォルトの名無しさん
07/10/01 11:57:19
>>557
#include<stdio.h>
int main(){
int a=3, b=4, h=5;
printf("面積=%lf",a==3&&b==4&&h==5?17.50:0);
return 0;
}

562:デフォルトの名無しさん
07/10/01 12:03:26
[1] 授業単元:カプセル化
[2] 問題文(含コード&リンク): 下記のソースをカプセル化に。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++


563:デフォルトの名無しさん
07/10/01 12:09:22
>>453です

>>486さん解答ありがとうございます。
質問なんですがこれいがいに#includeとか他に付け足す文字ってありますか…??

564:デフォルトの名無しさん
07/10/01 12:33:15
>>563
ないから書いてないのだろう

565:デフォルトの名無しさん
07/10/01 12:35:04
>>563
>486じゃないが、その課題で作成するのは関数だけなんだろ。
他につけたしちゃ拙いじゃないか。

566: ◆vLIz8KOkPM
07/10/01 13:21:31

>>454の問題に対して、>>496の解答をいただいたのですが、
以下のエラー、バグがでます・・・
直していただけないでしょうか?お願いします


% gcc -o k13 k13.c
k13.c: 関数 `main' 内:
k13.c:89:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:91:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:92:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:93:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:94:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
% ./k13
あなたの口座番号を入力して下さい:9012
暗証番号を入力して下さい:0123
鈴木一郎 様ですね.
引出し金額を入力して下さい:20000
預金残高は 518600 円です.
„$��„$��„$��„$��„$��„$��„$
��„$��„$��„$��„$��„$��„$��
あなたの口座番号を入力して下さい:^[[A^[[A
中断
%


567:デフォルトの名無しさん
07/10/01 13:41:42
「fprintf()がprintf()に化けている」に一票。

568: ◆vLIz8KOkPM
07/10/01 14:18:42
問題>>454
解答>>496

あと、

口座データの読み込み(1:ファイルから 2:初期値を使用)? :
口座データの保存(1:ファイルへ 2:保存しない)? :

この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか?

569:kiarano
07/10/01 14:20:00
[1] 授業単元:
[2] 問題文(含コード&リンク): 次の関数が何をするプログラムか具体的な使い方を示して答えてください。

void q(int *a,int n){
int i,j;
int tmp;
 for(i=1;i<n;i++){
for(j=i;j>0 && a[j-1]>a[j];j--){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}
}
}


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C言語
[4] 期限: 2007年10月3日まで




570:デフォルトの名無しさん
07/10/01 14:24:56
>>569
コンパイルできません

571:デフォルトの名無しさん
07/10/01 14:29:24
[1] 授業単元: c言語
[2] 問題文(含コード&リンク): 下にあり
[3] 環境
 [3.1] OS: (Windows
 [3.2] コンパイラ名とバージョン: cc
 [3.3] 言語: C
[4] 期限: できるだけ早めに
[5] その他の制限: 特になし
組み合わせ(nCr)
コンビネーションを計算するcomb(n,r)を作成せよ

どうやるんですかね?

572:デフォルトの名無しさん
07/10/01 14:29:29
>>569

ソートする関数
具体的な使い方
void q(int *a,int n){
int i,j,tmp;
for(i=1;i<n;i++){
for(j=i;j>0 && a[j-1]>a[j];j--){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}}}
void main(){
int a[2]={0,1};
printf("%d %d\n",a[0],a[1]);
q(a,2);
printf("%d %d\n",a[0],a[1]);
}

573:デフォルトの名無しさん
07/10/01 14:29:33
>>569
勘だと昇順ソート

574:デフォルトの名無しさん
07/10/01 14:31:36
>>569
処理の内容はバボゥソート。
int a = {789, 32, 1, 66, 93, 892, 8475, 6, 29, 9};
q(a, sizeof(a) / sizeof(*a));
{
 int end = a + sizeof(a) / sizeof(*a);
 while(a != end) {
  printf("%d\n", *a++);
 }
}

って実際に動かしてみりゃわかるんじゃない?

575:デフォルトの名無しさん
07/10/01 14:32:37
ぐはー、きで(←変換できない)かー。重複すまん。

576:デフォルトの名無しさん
07/10/01 14:38:33
>>568
>この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか?
そういうロジックを書き足せば。

>>570
わざわざ途中の非表示文字までコピペせんでも。

>>569
その関数を呼ぶロジックを書けって事?

577:デフォルトの名無しさん
07/10/01 14:55:58
>>571
#include<stdlib.h>
int comb(int n,int r){
if(n==0||r==0)return 1;
switch(rand()%3){
case 0:return n*comb(n-1,r-1)/r;
case 1:return (n>r?comb(n-1,r):0)+comb(n-1,r-1);
case 2:{int s=0;for(;n>=r;n--)s+=comb(n-1,r-1);return s;}
default:return 0;
}
}

578:デフォルトの名無しさん
07/10/01 15:01:49
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): おもしろいプログラムを作成し、提出せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 10/2 14時まで
[5] その他の制限: 今までif,for,while,switchくらいしかやってませんが、特に制限といったものはないとのことです。
システム的におもしろいのではなくギャグ系のおもしろいです。
自分ではどうもおもしろいプログラムを作成できません、力をかしてください。
お願いします。

579:デフォルトの名無しさん
07/10/01 15:15:27
何が面白ければ良いのか?ソースが工夫されているとか?内容が?
そんな曖昧な課題で明日の14時までって、今まで何しとったん?

580:578
07/10/01 15:25:43
内容です。教授が関西出身でお笑い好きのようで・・・・・・・。

先送りばかりして他の課題等に逃げてました。
僕が悪いんですが、どうか力をかしてください。

581:デフォルトの名無しさん
07/10/01 15:43:22
>>578
7行プログラミングスレから拾ってきて,適当に識別子を変えればいいんでね?

582:デフォルトの名無しさん
07/10/01 15:51:18
ギャグプログラムを作れって前に見た記憶があるような

渾身のギャグを考えて書き込めば?
誰かプログラムにしてくれるだろきっと

583:578
07/10/01 15:55:26
>>581
見てきましたが、言語が違うのか僕には何が書いてあるのかさっぱりでした。
まだはじめて間もないので・・・・・・力がなくてすいません。

584:578
07/10/01 15:59:26
>>582
どちらかというとプログラムできないというよりおもしろい物が思いつかないんです。
他の普通の課題は終わらせることができたんですけど

585: ◆vLIz8KOkPM
07/10/01 16:05:51
>>576です
>>578
そのロジックがわからないんですが…

586:デフォルトの名無しさん
07/10/01 16:09:51
>>578
#include<stdio.h>
#include<string.h>

int main(void){
const char *ptr, scenario[]={
"昨日、近所の $place 行ったんです。 $place 。 $lf "
"そしたらなんか人がめちゃくちゃいっぱいで座れないんです。 $lf "
"で、よく見たらなんか垂れ幕下がってて、 $event 、とか書いてあるんです。 $lf "
"もうね、アホかと。馬鹿かと。 $lf "
"お前らな、 $event 如きで普段来てない $place に来てんじゃねーよ、ボケが。 $lf "
" $event だよ、 $event 。 $lf "
"なんか親子連れとかもいるし。一家4人で $place か。おめでてーな。 $lf "
"よーしパパ $talk 、とか言ってるの。もう見てらんない。 $lf "
};
char *keyword[]={"$place", "$event", "$talk", "$lf"};
char *variant[]={"大学", "期末試験", "満点とるぞー", "\n"};
char buf[100];
int i, n;

ptr=scenario;
while(sscanf(ptr, "%s%n", buf, &n)>=1){
ptr+=n;
for(i=0;i<4;i++){
if(strcmp(buf, keyword[i])==0) break;
}
if(i<4) printf("%s", variant[i]);
else printf("%s", buf);
}

return 0;
}

587:デフォルトの名無しさん
07/10/01 16:12:44
>>585
他人を騙るな。

588:578
07/10/01 16:17:02
>>585
僕は後半組なんですが、前半組はジャンケンを数回繰り返すプログラムが好評がよかったようです。
なぜか教授側のPCが不調で口頭で伝えられただけなので詳しくはわかりません。すいません。

でも、例にあげられたのは簡単な文章と選択肢がありそれによりボケがあったりツッコミがあったりするプログラムでした。




ロジックの意味がうまく把握できていないんですが、これでいいでしょうか?

589:デフォルトの名無しさん
07/10/01 16:20:12
× 好評がよかった
○ 好評だった

590:578
07/10/01 16:22:06
>>589
頭悪くてすみません。
今後注意します。

591:578
07/10/01 16:27:31
>>586
ちゃんと表示されました。
ありがとうございます。


592:デフォルトの名無しさん
07/10/01 16:53:50
>587間違えました…すみませんm(__)m

>>568です。
>>576
そのロジックがわからないんで、教えていただけないでしょうか?

593:デフォルトの名無しさん
07/10/01 17:00:10
[1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):次のads-01-hw.cppを完成させよ
seiseki.txt の中身は10人の学生の名前、数学と生物学の成績
出力は画面出力ではなく、ファイルに出力せよ。
関数 heikin は各学生の数学と生物学の成績の平均を求める。
seiseki.txt:URLリンク(kansai2channeler.hp.infoseek.co.jp)
ads-01-hw.cpp:URLリンク(kansai2channeler.hp.infoseek.co.jp)
出力結果:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境 
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
 [3.3] 言語:C++
[4] 期限: 2007年10月3日10:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
関数
ポインタとアドレス
forループ
構造体
ファイルI/O
よろしくおねがいします。


594:デフォルトの名無しさん
07/10/01 17:04:48
>>592
>そのロジックがわからないんで、教えていただけないでしょうか?
いやです。

595:デフォルトの名無しさん
07/10/01 18:16:31
>>593
URLリンク(kansai2channeler.hp.infoseek.co.jp)

596: ◆vLIz8KOkPM
07/10/01 20:36:46
どなたか>>568をお願いします。期限が明日朝9時なんです…

597:デフォルトの名無しさん
07/10/01 20:44:22
>>559
#include<stdio.h>

int main(int argc, char *argv[])
{
int day=29, question=108;

if(argc>=2) sscanf(argv[1], "%d", &day);
if(argc>=3) sscanf(argv[2], "%d", &question);

printf("%d問:%d日\n", question/day, day-(question%day));
if(question%day) printf("%d問:%d日\n", question/day+1, question%day);

return 0;
}

598:デフォルトの名無しさん
07/10/01 20:48:02
>>556
異常なファイルの内容kwsk

599:デフォルトの名無しさん
07/10/01 21:02:38
>>578
ネタを書くか、もしくは探して URL を…
#include<stdio.h>

int main(int argc, char *argv[]){
char *message[]={
"A「隣の空き地に囲いができたってね?」\nB「へー」\n",
"A : Do you know that fence was completed in the next vacant lot?\nB : Hey,really?!\n"
};
int choice=-1;

printf("0 か 1 を入力して下さい (0:日本語 1:English) :");
scanf("%d", &choice);

switch(choice){
case 0:
case 1:
printf("%s", message[choice]);
break;
default:
printf("\nERROR : Invalid number ! %d\n", choice);
}

return 0;
}

600:デフォルトの名無しさん
07/10/01 21:04:15
>>596
わり。作ってアップすんの忘れてた。
>>494だそうなんで、入力をループで回すとこは入れてないよ。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

601:デフォルトの名無しさん
07/10/01 21:20:05
>>586
ソースコードがルー大柴でわろた

602:デフォルトの名無しさん
07/10/01 22:09:52
>>595ありがとうございました。感謝です

603: ◆vLIz8KOkPM
07/10/02 00:14:04
>>600
ありがとうございますm(__)mお陰様で大変助かりました。感謝しています。

604:デフォルトの名無しさん
07/10/02 02:50:52
>>586
ギャルゲのスクリプトが作りたくなってきた

605:デフォルトの名無しさん
07/10/02 12:41:42
[1] 授業単元:C言語
[3.1] OS(Windows)
3.2] bcc5.5
 [3.3] 言語: (C++)
[4] 期限:今日中
文字列aと文字列cを入力し
aに含まれる文字の数とaで最初にcが出てくる位置、最後にcが出てくる位置を
表示するプログラムを作成しなさい。
#include <stdio.h>
int str_src(char *,char);
int str_src2(char *,char);
int main(void)
{
char a[255],c;
printf("aを入力してください -> ");
scanf("%s",a);
printf("cを入力してください ->");
scanf(" %c",&c);
printf("%sの中に%cは%i個です\n",a,c,str_src(a,c));
printf("%s");
return 0;
}
int str_src(char *a,char c)
{
int count=0;
int i;
for(i=0; a[i]!='\0'; ++i)
if(a[i] == c) ++count;
return count;
}
ここまではやったのですが残りわからないのでお願い致します。

606:デフォルトの名無しさん
07/10/02 12:46:46
文字列cと書いてあるが、ソースみると一文字だけど、一文字の方でいいんだよな?

607:デフォルトの名無しさん
07/10/02 12:49:18
>>606
あ、すみません文字列aだけでcは文字です。

608:デフォルトの名無しさん
07/10/02 13:43:25
>>605>>607
str_srcでカウントして何が楽しいのか分からなかったから
やりかけのソース無視した。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

609:デフォルトの名無しさん
07/10/02 13:46:49
ちょっと訂正
URLリンク(kansai2channeler.hp.infoseek.co.jp)

610:607
07/10/02 14:03:01
>>609
本当にありがとうございました。
助かりました。

611:デフォルトの名無しさん
07/10/02 14:50:45
[1] 授業単元: 総合
[2] 問題文:じゃんけんプログラムを作りなさい。(あいこも作ること)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] BorlandC++
 [3.3] 言語:C++

612:デフォルトの名無しさん
07/10/02 15:35:08
じゃんけん以外に特に指定無し?

613:デフォルトの名無しさん
07/10/02 16:16:44
>>611
普通に作るつもりだったのに、魔がさした
URLリンク(kansai2channeler.hp.infoseek.co.jp)

614:デフォルトの名無しさん
07/10/02 16:46:16
判定なげー

615:デフォルトの名無しさん
07/10/02 17:08:20
同じく判定みて吹いた。

616:デフォルトの名無しさん
07/10/02 17:26:13
判定部分だけ書いてみた
//判定
switch((enemy-player+3)%3){
case 0: //あいこ
aiko = true;
break;
case 1: //勝ち
end = true;
win = true;
break;
default: //負け
end = true;
win = false;
break;
}

でも、
result = (enemy-player+3) % 3;
だけでいいと思う

617:デフォルトの名無しさん
07/10/02 17:29:13
少なくとも、あいこの判定はplayer == enemyだけでいいと思うんだ。

618:デフォルトの名無しさん
07/10/02 17:33:43
[1]授業単元:プログラミング演習
[2]問題文:float x,y;char a,b;と宣言し、各変数x,y,a,bのアドレスを出力するプログラムを作って、コンパイル/実行し、それぞれのメモリサイズが満たされていることを確認する。
注)メモリアドレスをprintf()を用いて出力する場合は、unsigned int型と同じく%uを出力変換に使うこと。
[3]Windows XP Visual Studio Japan20005
[4]C言語
[5]10月4日まで。お願いします。

619:デフォルトの名無しさん
07/10/02 17:39:19
>それぞれのメモリサイズが満たされていることを確認する。
アドレスを出力しただけで、それが満たされているかは確認できません。

620:デフォルトの名無しさん
07/10/02 17:50:41
stdioから直ってると思ったら、20005にフイタ

621:デフォルトの名無しさん
07/10/02 17:53:49
20005が出る頃には、intが65536ビットくらいになってるのかな

622:デフォルトの名無しさん
07/10/02 17:58:06
>>621
きっと可変長bitをCPUでサポートしてくれてる

623:デフォルトの名無しさん
07/10/02 18:01:09
メモリアドレスをprintf()を用いて出力する場合は、unsigned int型と同じく%uを出力変換に使うこと。ここだけでいいんで教えてください。

624:デフォルトの名無しさん
07/10/02 18:02:41
printf("%u",&x);

625:デフォルトの名無しさん
07/10/02 19:40:21
>>622
ってかbitなんてなくなってる

626:613
07/10/02 20:09:52
見直してみて自分でも吹いた。やっちゃったZE。


627:デフォルトの名無しさん
07/10/02 20:19:20
ふちゅーは%pじゃないか?

628:デフォルトの名無しさん
07/10/02 20:24:42
0x%Xじゃね?

629:デフォルトの名無しさん
07/10/02 21:36:01
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): ユーザが整数を入力すると、その整数をINT型の変数に入れ、そのビット列を表示するプログラム。
ただ、INT型のビット数は環境によって変わる可能性があるため、
sizeof()演算子を利用してINT型の変数のビット数を求め、そのビット数分だけ表示するようにせよ。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限: なし

お願いします。



630:デフォルトの名無しさん
07/10/02 21:46:43
>>629
これでおk

unsigned int v, bit = 1 << sizeof(int) * 8 - 1;
scanf("%d", &v);
while(bit) {
  putchar(bit & v ? '1' : '0');
  bit >>= 1;
}
puts("");

631:デフォルトの名無しさん
07/10/02 21:48:02
>>629
1バイトが8ビットとは限らないけどこれでよければどうぞ。

#include<stdio.h>

int main(void)
{
int in;
int cnt;

scanf( "%d", &in );

for ( cnt = sizeof( int ) * 8; cnt > 0 ; cnt-- ) {
printf ( "%d", ( in >> ( cnt - 1 ) ) & 1 );
}

return 0;
}


632:デフォルトの名無しさん
07/10/02 21:49:46
>>630
入力が負の数だったときに処理系依存で無限ループじゃね?

633:デフォルトの名無しさん
07/10/02 21:56:13
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): じゃんけんを10回行い、その対戦結果(対戦譜)をCSV形式で出力するもの。
ただし、出力先は(/デスクトップ/じゃんけん結果)フォルダで、ファイル名は日付を含むこと。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C++
[4] 期限: 明日中
[5] その他の制限: 出力したCSVファイルはExcelで開いて確認すること。

お願いします。

634:デフォルトの名無しさん
07/10/02 21:57:20
>>630-631
ありがとうございます。
参考にさせていただきます。

635:デフォルトの名無しさん
07/10/02 22:05:50
>>632
kwsk

636:デフォルトの名無しさん
07/10/02 22:19:01
>>633
>[1] 授業単元: C言語
> [3.3] 言語: C++
どっちやねん

637:デフォルトの名無しさん
07/10/02 22:23:04
とりあえずC言語でやっておけばおk。どうせC++コンパイラでもC言語のソースは
コンパイルできるし。

638:デフォルトの名無しさん
07/10/02 23:24:31
>>635
あ、ごめん。unsignedつけてたらOKだっけ?
負の数の右シフトが算術シフトになるか論理シフトになるかは
処理系依存だったと思ったから・・・
あいまいで、そーりー

639:デフォルトの名無しさん
07/10/02 23:32:29
何が言いたいのか今一よく判らんが、unsignedなら負の数にはならないんだな、これが。

640:デフォルトの名無しさん
07/10/02 23:38:17
符号無し!

641:デフォルトの名無しさん
07/10/02 23:39:18
>>380
めんどくさいんでcharで説明。
[10101010]を右に1ビットシフトした場合[10010101]になるか[01010101]になるかは処理系依存

調べたらやっぱ、unsignedは問題なかった。スマソ
URLリンク(proger.blog10.fc2.com)

642:デフォルトの名無しさん
07/10/02 23:41:57
とりあえず、何をシフトしてるかぐらいは理解してくれ

643:デフォルトの名無しさん
07/10/03 00:27:59
>>641
> [10101010]を右に1ビットシフトした場合
> [10010101]になるか[01010101]になるかは処理系依存

(URLリンク(proger.blog10.fc2.com))
> C言語の規格として、算術シフトか論理シフトかは不定

うそ。規格では次のようになっている。ISO/IEC 9899, 1999 より:
> 6.5.7
> The result of E1 >> E2 is E1 right-shifted E2 bit positions.
> If E1 has an unsigned type or if E1 has a signed type and a
> nonnegative value, the value of the result is the integral
> part of the quotient of E1 / 2^E2. If E1 has a signed type
> and a negative value, the resulting value is implementation-defined.

つまり、E1 が unsigned であるか、もしくは signed かつ E1 ≧ 0 のときに
限って右シフトの動作は定められており、それ以外は implementation-defined。
すなわち、論理シフトやら算術シフトの範囲を超えて処理系の自由。


644:デフォルトの名無しさん
07/10/03 00:58:12
負数の右シフトは値がぶっ飛んだって問題ないでOK?

645:デフォルトの名無しさん
07/10/03 00:59:42
日本語でおk

646:デフォルトの名無しさん
07/10/03 02:29:31
そもそも負って言っても2進数で表すと、どういう表現になるか?
考えてみよー

647:デフォルトの名無しさん
07/10/03 03:04:07
[1] 授業単元:
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: windows 
[3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月4日22:00まで
[5] その他の制限: ありません
大変お手数ですが、よろしくお願いいたします

648:デフォルトの名無しさん
07/10/03 05:48:29
>>647
問題1
#include <stdio.h>
#include <math.h>

int fac(int n) { return n==1 ? 1 : n * fac(n-1); }

int geo(int a, int r, int n) { return n==1 ? a : geo(a, r, n-1) * (pow(r, n) - 1) / (pow(r, n-1) - 1); }

int fib(int n) { return n==1 || n==2 ? 1 : fib(n-1) + fib(n-2); }

double a[] = { 1, 2, 3, 4, 5};

double hor(double x, int n) { return n==0 ? a[n] : hor(x, n-1) * x + a[n]; }

int main(void)
{
    printf("10! = %d\n", fac(10));
    printf("2^0 + 2^1 + 2^2 + ... + 2^9 = %d\n", geo(1, 2, 10));
    printf("fibonacci 20: %d\n", fib(20));
    printf("f(2) = %.2f\n",hor(2, 4));

    return 0;
}


649:デフォルトの名無しさん
07/10/03 08:58:37
>>646
考える前に仕様書を読んでくれ。6.2.6.2 に書いてあるから。要点は
・value bits / padding bits / sign bit からなる。
・どこの bit が value bits/padding bits/sign bit であるかは処理系定義。
・sign bit が 0 のときは正の数,1 のときは負の数を表現する。
・数表現が「絶対値と符号,二の補数,一の補数」のどれかは処理系定義。

650:デフォルトの名無しさん
07/10/03 09:14:49
>>631
> 1バイトが8ビットとは限らない
それよりもこれについて悔しく

651:デフォルトの名無しさん
07/10/03 09:19:45
知らなくても普通は問題ないが、そういう特殊な環境もあるらしい。


652:デフォルトの名無しさん
07/10/03 09:22:07
やな環境だなぁ。そんな環境を作っている奴、使っている奴は確実に変わり者。

653:デフォルトの名無しさん
07/10/03 09:25:09
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・

654:デフォルトの名無しさん
07/10/03 09:29:54
1バイトが7ビットとか・・・ぷっ・・・ぷぷぷっ・・・ぷぅ~~~(屁)が出ちゃうぜ

655:デフォルトの名無しさん
07/10/03 09:32:52
650のバカが突っ込んだつもりで不勉強を晒しただけだな。

656:デフォルトの名無しさん
07/10/03 09:41:06
というわけで (UINT_MAX-UINT_MIN) の数値からunsigned intのビット数をどうにかして得てからやったほうが無難なときもあるよ,と

657:デフォルトの名無しさん
07/10/03 09:52:48
CHAR_BIT@limits.h

658:デフォルトの名無しさん
07/10/03 09:56:42
>>654
CHAR_BITは8以上と定められているので、流石にそれではISO準拠を名乗れない。

659:デフォルトの名無しさん
07/10/03 10:02:58
>>655
っつかお前さっきっから偉そうにうぜぇよ?詰まらん突込みに必死になりすぎw
んなの知っててわざとお前みたいなでしゃばりに答えさせているだけだろ。
ほんっと、最近うぜぇガキが増えたな。
>>653
>>651
>>649
>>643
↑こいつキモイ

660:デフォルトの名無しさん
07/10/03 10:04:26
655 名前:デフォルトの名無しさん 投稿日:2007/10/03(水) 09:32:52
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
↑バカとか言っているし、なんだこいつ?不勉強だってw
>>650には知らないとか存在しないとは書かれていない。
しかも「悔しく」ってボケているところに気づかない2ちゃん初心者ワロスw
モロに釣られたな、このでしゃばり、知識をひけらかしたい厨房。

653 名前:デフォルトの名無しさん 投稿日:2007/10/03(水) 09:25:09
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・



661:デフォルトの名無しさん
07/10/03 10:06:54
>>656
UINT_MINは存在しない。
存在したとしても常に0だろうし。

662:デフォルトの名無しさん
07/10/03 10:07:36
URLリンク(ja.wikipedia.org)(%E6%83%85%E5%A0%B1)
> 初期のコンピューターでの1バイトは6ビットである(英文文字(キャラクタ)コードが
> 源であった)。1バイトを7ビットや9ビットとして扱うコンピュータもあり
> (DECのPDP-10、NECのACOS-6など)、このため情報通信の分野では
> 常に8ビットを表すために、バイトではなくオクテットと呼ぶのが適切である。
さてと、どっちが不勉強の無知を晒したか、分かったよな?8ビットを1バイトとしない環境があるとしても
それはバイトではなく 何と 言うでしょう~~か?ったく、知ったかのバカが無知を晒したよw
>>655 >>655 >>655 >>655 >>655 >>655 <こいつなw

663:デフォルトの名無しさん
07/10/03 10:08:37
>>661
いい加減知ったかはうるさいよ
>>655のバカさんw
>>651 >>653

664:デフォルトの名無しさん
07/10/03 10:11:32
なんでもかんでも例外をキャッチするなよ
しかもバグってるし…

665:デフォルトの名無しさん
07/10/03 10:13:43
良い感じに水掛け論になってきたなwwwwwwwwwwwwww

666:デフォルトの名無しさん
07/10/03 10:15:08
>>661
URLリンク(www.google.co.jp)
っつか、ほんまバカにバカって言われるとなんとも。まぁ、どっちが知識があるとか
競い合っているようじゃまだまだ子供だな。ちゃんと調べようぜ?
UINT_MINが存在するしないを一個人が決めて良いもんだろうか?
強いて決めるなら、って話なら分かる。

667:デフォルトの名無しさん
07/10/03 10:17:45
>>655さんよぉ、とっとと謝罪してくれないかねぇ?どこが バカ なのか説明してくれ。
突っ込んだ質問にさも知ったような口で答えたつもりが、相手が無知だと勘違いして
墓穴を掘るとは・・・敢えて突っ込まれて正確に、事細かに説明できないなら黙ってた方が良いよ。
あと、ここ、宿題スレだから。続きがやりたいなら別の質問関連のスレで頼むわ。

668:デフォルトの名無しさん
07/10/03 10:19:18
30分かけて一生懸命調べてからファビョってるところが笑える

669:デフォルトの名無しさん
07/10/03 10:21:53
>>662
・1バイトは通常8ビットであり、古くは6ビット、7ビット、9ビットの物が存在した。
・よって「常に8ビット」を表すために情報通信分野ではオクテットという用語がある。
その機械で1バイトが8ビット以外と定められているのなら、バイト以外ありえないが。
まさかオクテットだなどと言うまい?

670:デフォルトの名無しさん
07/10/03 10:22:24
>>668
負け犬の遠吠え乙w 正確な説明も出来ないくせに他人をバカ呼ばわりしてんじゃねーよ

671:デフォルトの名無しさん
07/10/03 10:23:54
>>669
問題はそこじゃない。>>650が無知だったという証拠は?
詳しくと突っ込まれて答えたのがそうでない環境があるってことだけだろ?
そんなの知ってんだよ、こっちは情報関係の分野を専攻してたからねぇ。
具体的に答えたのはむしろボケた俺の方だろ?w

672:デフォルトの名無しさん
07/10/03 10:26:12
いつになったら中途半端な知識で突っ込んで、指摘されたら逆切れ連投&釣り宣言の馬鹿コンボを
やめてくれるんだろう。
何回このパターン見たことか。

673:デフォルトの名無しさん
07/10/03 10:27:56
っつか、マジでスレ違いだし、ここらで俺が結論づけておくわ。
>>655のバカが突っ込んだつもりで不勉強を晒しただけだな。
他人をバカ呼ばわりする前に自分の知ったかな不十分な知識で偉そうにしていて
相手を勝手に無知、不勉強にするな。調べもしない奴こそいい加減。
悪いがこっちは調べたんじゃなくて知ってたが、敢えて誰もが見られる文献に
リンクをしただけ。普通は自分で調べるだろ、調べる奴は。

674:デフォルトの名無しさん
07/10/03 10:36:35
>>650,652,654,659,660,662,663,666,667,670,671,673

相変わらず恐ろしいほどの瞬発力だ

675:デフォルトの名無しさん
07/10/03 10:45:04
>>672
まあ、わかりやすいから見かけたら即あぼーんで対処するしかないな。

馬鹿は馬鹿である引け目があるが故に馬鹿と指摘されると馬鹿のように怒り始めるから
あまり馬鹿にしてやらないほうが良い。馬鹿にも馬鹿なりの自尊心というやつがあるの
だろう。本当に馬鹿ではなく自分に絶対の自信があるのなら、馬鹿にされても聞き流せ
るはずだから、本来はとても馬鹿馬鹿しい事だが。まあ、わざわざ相手して馬鹿をみる
こともない。

676:デフォルトの名無しさん
07/10/03 10:46:32
沸きすぎワロタww

677:デフォルトの名無しさん
07/10/03 10:50:16
久々に覗いて見たらまたいつもの人か
相変わらずだなここも

678:デフォルトの名無しさん
07/10/03 13:28:34
ここの板もいい加減ID制にして欲しいよ
あぼーんするのが面倒だ

679:デフォルトの名無しさん
07/10/03 15:18:03
スレリンク(tech板)

680:デフォルトの名無しさん
07/10/03 15:36:19
別にIDにしなくてもいいや、いい加減慣れた
長くても一日放置すれば飽きるみたいだし

681:デフォルトの名無しさん
07/10/03 23:37:15
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):
「年(西暦)」「月」を入力したら,その月のカレンダーを表示するプログラムを作成しなさい。ただし,下記の条件を満たすものとする。
【条件】
(1)カレンダークラスを作成し,main関数でカレンダークラスの実体を生成し,カレンダークラス内のメンバ関数(show関数)を呼び出してカレンダーを表示する。
(2)カレンダークラスはカプセル化されていること。
(3)カレンダー表示には,年,月および曜日,日を表示すること。
(4)「閏年」「祝日」「六曜」「節句」「二十四節気」の表記を可能にする。
(5)上記以外については自由に作成してよい。

[3] 環境
 [3.1] OS: Windows VISTA or XP
 [3.2] visual studio 2005
 [3.3] 言語: C++
[4] 期限: 2007/10/5まで。
[5] その他の制限: 特になし

よろしくお願いします。

682:デフォルトの名無しさん
07/10/03 23:43:05
>>681
「六曜」の計算式plz

683:デフォルトの名無しさん
07/10/04 00:06:49
>>682

(月+日)÷6=?…あまり
大安 0
赤口 1
先勝 2
友引 3
先負 4
仏滅 5
例:
十五夜(8月15日) : 8+15=23, 23÷6=3あまり5→仏滅
十三夜(9月13日) : 9+13=22, 22÷6=3あまり4→先負
七夕(7月7日): 7+7=14, 14÷6=2あまり2→先勝


684:デフォルトの名無しさん
07/10/04 00:11:44
>>683
六曜は月の暦(太陰暦)だから太陽暦での月の途中でリセットされるよ

685:デフォルトの名無しさん
07/10/04 00:25:37
やべぇ、5年もホテルでバイトしてて六曜が重要だったのに
そんな単純な計算式で出るなんて初めて知った・・・

686:デフォルトの名無しさん
07/10/04 00:36:50
ラブホか

687:デフォルトの名無しさん
07/10/04 00:44:54
(; ・`д・´)これConsoleでやるのか!

688:デフォルトの名無しさん
07/10/04 00:51:38
太陽暦と太陰暦変換の計算式って中々見つからない
海上保安庁の
URLリンク(www1.kaiho.mlit.go.jp)
に計算式があるようだが 解読できないです。


689:デフォルトの名無しさん
07/10/04 02:50:41
[1] 授業単元:
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: windows 
[3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月5日6:00まで
[5] その他の制限: ありません
大変お手数ですが、よろしくお願いいたします

690:デフォルトの名無しさん
07/10/04 03:55:44
>>689
問題2の1つ目のループの計測
2つ目以降は計測してるループのとことかnの値とかそこらへんを書きかえればok
#include <stdio.h>
#include <sys/time.h>
int main(void)
{
    int i, j, n, sum;
    hrtime_t start, finish;

    printf("1.\n");
    printf("+----+---------+---------+---------+---------+---------+\n");
    printf("| n | 2000000| 4000000| 6000000| 8000000| 10000000|\n");
    printf("+----+---------+---------+---------+---------+---------+\n");
    printf("|time|");

    for(n=2000000; n<=10000000; n+=2000000) {
        start = gethrtime(); /* 計測開始 */
        sum = 0;
        for(i=0; i<n; i++) sum++;
        finish = gethrtime(); /* 計測終了 */
        printf("%9f|", (double)(finish-start) / NANSEC);
    }

    printf("\n+----+---------+---------+---------+---------+---------+\n");

    return 0;
}


691:デフォルトの名無しさん
07/10/04 04:02:44
>>689
関数名が情けないことになってるので、書きなおしておいて
#include<stdio.h>
int kaijo(int n){
if(n<=1) return 1;
return n*kaijo(n-1);
}
double touhikyusu(double a0, double x, int n){
if(n<=0) return a0;
return touhikyusu(a0*x, x, n-1);
}
int fibonacchi(int n){
if(n<=1) return 1;
return fibonacchi(n-1)+fibonacchi(n-2);
}
double honer(double x, double keisu[], int keisu_num){
if(keisu_num<=0) return 0.0;
return honer(x, keisu, keisu_num-1)*x+keisu[keisu_num-1];
}
int main(void){
double sum;

printf("%d\n", kaijo(10));
for(i=0,sum=0.0;i<10;i++) sum+=touhikyusu(1.0, 2.0, i));
printf("%f\n", sum);
printf("%d\n", fibonacchi(10));
printf("%f\n", honer(2.0, (double [5]){1.0, 2.0, 3.0, 4.0, 5.0}, 5));
return 0;
}

692:デフォルトの名無しさん
07/10/04 04:34:39
動作確認ぐらいしろよ

693:デフォルトの名無しさん
07/10/04 09:51:29
関数名touhikyusuなのに、等比級数を返さないってのはどうよ?

694:デフォルトの名無しさん
07/10/04 10:17:28
double touhikyusu(double a0, double r, int n){
if(n<=0) return a0;
return touhikyusu(a0, r, n-1)*r+a0;
}

695:デフォルトの名無しさん
07/10/04 11:27:50
>>694
なにそれ?

696:デフォルトの名無しさん
07/10/04 12:37:01
等比級数と等比数列がごっちゃになってた

double function(double a, double r, int n){
return n==1 ? a : a*pow(r,n-1) + function(a, r, n-1);
}

697:デフォルトの名無しさん
07/10/04 12:48:16
>>689
普通初項というとa1じゃないか?
それ以外は良いと思うが

698: ◆JdKMFRogo6
07/10/04 15:10:08
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
処理の前後で clock() の値を保存しておき、その差をとり、プログラムの実行時間を求めよ。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] VC 
 [3.3] 言語: C++
[4] 期限: 2007/10/7まで。
[5] その他の制限:
 include<time.h>を用いる。
int t1, t2, t0;
t1 =?
処理
t2 =?
t0 = t2 - t1;
 結果表示

制限というかイメージ的には、こんな感じかなぁとは思うのですが式がわかりませんでした。
大変お手数ですが、よろしくお願いいたします


699:デフォルトの名無しさん
07/10/04 15:43:28
>>698
処理の内容は何でもいいの?

700:デフォルトの名無しさん
07/10/04 17:42:53
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
ディレクトリの中身のファイル20個をランダムに取り出して違うディレクトリに5個にコピーしろ。
[3] 環境
 [3.1] OS: LINUX
 [3.2] VC 
 [3.3] 言語: C++
[4] 期限: 2007/10/7まで。
[5] その他の制限:
今ホームディレクトリにいて
そこにdataというディレクトリがありも、またdata2というディレクトリがあるとします。
dataというディレクトリに1.dat~20.datのファイルがあるとします。
そのディレクトリのファイルをランダムに5個取り出して、data2にいれてください。

data/~.datのファイルの数20の番号からランダムに番号を選んでそのファイルを
~とするべきなのかな?

701:デフォルトの名無しさん
07/10/04 18:11:54
>>700
LinuxなのにVC?

702:デフォルトの名無しさん
07/10/04 18:14:19
そこはコピーしてました。
上のを。

703:デフォルトの名無しさん
07/10/04 18:20:10
ちゃんと書けよハゲ

704:デフォルトの名無しさん
07/10/04 18:36:04
ディレクトリなどの概念はOSに依存するので
きちんと環境を書かないと解答なんてできないよ。

705:デフォルトの名無しさん
07/10/04 18:52:58
>>681
681です
六用の部分は省いても良いです。


706:デフォルトの名無しさん
07/10/04 19:09:39
最近はハゲって言っちゃ駄目だそうだよ。
例えば目の不自由な人を「めくら」と言う等、本人の人格に関わりの無い身体的特徴をあげつらって侮辱するのは差別ではないか、って事らしい。
チビとかデブも駄目らしい。
ハゲは「髪の不自由な人」、チビは「身長の不自由な人」、デブは「脂肪燃焼の不自由な人」って言うそうな。

707:デフォルトの名無しさん
07/10/04 19:41:06
[1] 授業単元:実験
[2] 問題文(含コード&リンク):
ディレクトリの中身のファイル20個をランダムに
取り出して違うディレクトリに5個にコピーしなさい。
[3] 環境
 [3.1] OS: LINUX
 [3.2] (gcc )
 [3.3] 言語: C
[4] 期限: 10月5日の朝までにできてればいいです。
[5] その他の制限:
今ホームディレクトリにいて
そこにdataというディレクトリがありも、またdata2というディレクトリがあるとします。
dataというディレクトリに1.dat~20.datのファイルがあるとします。
そのディレクトリのファイルをランダムに5個取り出して、data2にいれてください。

data/~.datのファイルの数20の番号からランダムに番号を選んでそのファイルを
~とするべきなのかな?





最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch