C/C++の宿題を片付けます 103代目at TECH
C/C++の宿題を片付けます 103代目 - 暇つぶし2ch656:デフォルトの名無しさん
08/01/27 15:16:43
>>654
#include<stdio.h>
int main(void){
    int year, month, day, week, tmpm, tmpy, i;
    int daymax[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    year = tmpy = 2008;
    month = tmpm = 1;
    day = 1;
    if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) daymax[1] = 29;
    if (tmpm < 3) {
        tmpy--;
        tmpm += 12;
    }
    week = (tmpy + tmpy/4 - tmpy/100 + tmpy/400 + (13*tmpm+8)/5 + day) % 7;
    for(; month <= 12; day++, week++){
        if(week == 7) week = 0;
        if(day == 1){
            printf("\n***** %04d / %2d *****\n", year, month);
            for(i=0; i < week; i++) printf(" ");
        }
        printf(" %2d", day);
        if(day == daymax[month-1]){
            putchar('\n');
            day = 0;
            month += 1;
            continue;
        }
        if(week == 6) putchar('\n');
    }
    return 0;
}

657:デフォルトの名無しさん
08/01/27 15:27:44
ワロタ

658:デフォルトの名無しさん
08/01/27 17:23:15
>>581
(1)の問題のみ
URLリンク(www.aki7.com)

659:デフォルトの名無しさん
08/01/27 17:56:42
OS Mac言語C言語



課題 13.3 キーボードから 5 個の英単語を入力し、辞書順に並べ替えて表示するプログラムを作成せ
但し、
? main関数内で単語を入力し、並び替える作業を関数 Sort 内で行なう
? 関数 Sortは戻り値がなく、入力した配列 wordを引数に持つ
? 結果の表示は main関数内で行なう
? 完全に辞書順にするのは難しいため、1 文字目のみを見て並び変えれば良いものとする
? 入力する単語は apple、peach、banana、grape、melonとせよ



自分で製作したのですが、無理でした。
基本これに、似た形を作ってもらって。
間違えも指摘してください。


#include<stdio.h>

#define N 5

void Sort(char input[][]);

main() {
int i;
char array[N[6];




660:デフォルトの名無しさん
08/01/27 17:58:01
printf("Input %d numbers\n", N);
for(i=0; i<N; i++) {
printf("array[%d] = ", i);
scanf("%s", (array+i));
}

Sort(array);
printf("Sort result.\n");
for(i=0; i<N; i++) {
printf("array[%d] = %s\n", i, array[i]);
}
}

void Sort(char input[][]) {
int i, j;
char temp;

for(i=1; i<N; i++) {
for(j=N-1; j>=i; j--) {
if(input[j-1][0] > input[j][0]) {
temp = input[j-1];
input[j-1] = input[j];
input[j] = temp;
}
}
}
}

661:デフォルトの名無しさん
08/01/27 18:32:35
>>583ってポインタ使ってないよね?


662:デフォルトの名無しさん
08/01/27 18:55:05
>>656
printf()って、引き数にポインタをとるんですよね?
ポインタを使わないでくださいって書いているんですけど読めないんですか?

663:デフォルトの名無しさん
08/01/27 18:55:54
>>659
>間違えも指摘してください。
「間違え」ではなくて、「間違い」ですね。

664:デフォルトの名無しさん
08/01/27 19:08:53
一次配列の中身をランダムに置換して更に、それを
逆置換するプログラムを教えてください。
ある係数を渡すことで毎回同じ並びになるようにして
暗号のように使えるようにしないといけないみたいです。

 
例えば「1」という係数を渡すと
[3 2 4 1]を[2 4 1 3]にシャッフルして
それをもう一度[3 2 4 1]に戻したいです


665:デフォルトの名無しさん
08/01/27 19:25:04
>>664
> 一次配列の中身をランダムに置換して更に、それを逆置換する
・一次配列って一次元配列ってこと?
・ランダムに置換の,「ランダムに」ってどの程度のことを言っているの?

666:664
08/01/27 19:36:22
>>665
すみません「元」が抜けてましたね。
ランダムがどの程度か…そこまで指定されてないんですが
簡単な規則性が無ければ良いと思います。

667:デフォルトの名無しさん
08/01/27 19:38:22
>>664
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARRAY_SIZE 32
void shift(int *p, int v) {
int *buf = (int*)malloc(sizeof(int)*v+1);
memcpy(buf, p, sizeof(int)*v);
memmove(p, p+v, sizeof(int)*ARRAY_SIZE);
memcpy(p+(ARRAY_SIZE-v), buf, sizeof(int)*v);
}
void print(int *p) {
int i = 0;
printf("array[%d] = {", ARRAY_SIZE);
do {
printf("%d", p[i]);
} while (++i < ARRAY_SIZE && putchar(','));
printf("}\n");
}
int main () {
int i, in, array[ARRAY_SIZE];

for (i = 0; i < ARRAY_SIZE; ++i) array[i] = i;

print(array);
scanf("%d", &in);
shift(array, in%=ARRAY_SIZE);
print(array);
shift(array, ARRAY_SIZE-in);
print(array);
return 0;
}

668:デフォルトの名無しさん
08/01/27 19:39:11
例の
> [3 2 4 1]を[2 4 1 3]にシャッフルして
これがモロ規則性あるからその通りに作った。

669:デフォルトの名無しさん
08/01/27 19:54:07
>>659
Sort関数内に
printf("%d,%d\n",i,j);
を追加して、ちゃんとソートが行われているかどうか確認するといい




670:デフォルトの名無しさん
08/01/27 20:03:38
>>664
#include<stdio.h>
#include<stdlib.h>
typedef struct tag_dataset{int index, data;}dataset_t;
void swap_int(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
void swap_dataset(dataset_t *a, dataset_t *b){dataset_t c;c=*a;*a=*b;*b=c;}
void encode(int data[], int datanum, int seed){
int i;
srand(seed);
for(i=0;i<datanum;i++) swap_int(&data[i], &data[rand()%(i+1)]);
}
void decode(int data[], int datanum, int seed){
int i; dataset_t *tmp;
srand(seed);
tmp=malloc(sizeof(*tmp)*datanum);
for(i=0;i<datanum;i++) tmp[i].index=i;
for(i=0;i<datanum;i++) swap_dataset(&tmp[i], &tmp[rand()%(i+1)]);
for(i=0;i<datanum;i++) tmp[i].data=data[i];
for(i=0;i<datanum;i++) data[tmp[i].index]=tmp[i].data;
free(tmp);
}
void prt(int data[], int datanum){
int i;
for(i=0;i<datanum;i++) printf(" %d", data[i]);
printf("\n");
}
int main(void){
int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10}, datanum=sizeof(data)/sizeof(data[0]);
encode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */
decode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */
return 0;
}

671:581
08/01/27 20:12:35
>>658さん

解析サンプルまで付けてくださってありがとうございます(T_T)
本当に困っていたので助かりました!!

これを元に(2)と(3)にも挑戦します・・・
でも期限には絶対間に合う予感がしない・・・orz

672:670
08/01/27 20:13:10
>>664
>>670 を書き直した
#include<stdio.h>
#include<stdlib.h>
void swap(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
void encode(int data[], int datanum, int seed){
int i;
srand(seed);
for(i=0;i<datanum;i++) swap(&data[i], &data[rand()%(i+1)]);
}
void decode(int data[], int datanum, int seed){
int i, *tmp;
srand(seed);
tmp=malloc(sizeof(int)*datanum);
for(i=0;i<datanum;i++) tmp[i]=rand()%(i+1);
for(i=datanum-1;i>=0;i--) swap(&data[i], &data[tmp[i]]);
free(tmp);
}
void prt(int data[], int datanum){
int i;
for(i=0;i<datanum;i++) printf(" %d", data[i]);
printf("\n");
}
int main(void){
int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10};
int datanum=sizeof(data)/sizeof(data[0]);
encode(data, datanum, 0); /* 0 の部分が乱数seed */
prt(data, datanum);
decode(data, datanum, 0); /* 0 の部分が乱数seed */
prt(data, datanum);
return 0;
}

673:デフォルトの名無しさん
08/01/27 20:13:23
[1] 授業単元: cプログラミング入門」
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c言語
[4] 期限:1/31まで
[5] その他の制限;特になし
どうかよろしくお願い致します。

674:659
08/01/27 20:14:55
自分でもう一度やってみたけど。分けわからなくなってきた。
もう本当に無理っぽい。

誰か、答えを教えてください。

675:デフォルトの名無しさん
08/01/27 20:38:56
死ねカス

676:デフォルトの名無しさん
08/01/27 20:53:40
[1] 授業単元:C言語演習
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C言語
[4] 期限:1月28日中
[5] その他の制限:特にありません。
よろしくお願いします!


677: ◆LnG.2EAY0A
08/01/27 21:01:19
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:VC 6
 [3.3] 言語:C
[4] 期限:2008年01月28日午前まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。


678:デフォルトの名無しさん
08/01/27 21:08:28
>>659
ここは宿題スレだ。
組んで欲しいならテンプレ使って正式に頼め。

URLリンク(kansai2channeler.hp.infoseek.co.jp)
ギャーギャー騒がれると目障りだし、これ持って去りな。

679:デフォルトの名無しさん
08/01/27 21:36:04
>>678
なんというツンデレw

680:デフォルトの名無しさん
08/01/27 21:55:48
>>676
showpidがおかしくないか?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

int main() {
pid_t pid;
int i, status, flg = 0;
for (i = 0; i < 10; ++i) {
if ((pid = fork()) < 0) {
fprintf(stderr, "error\n");
exit(1);
}

if (pid == 0) {
execv("showpid", NULL);
exit(1);
} else {
if (flg == 0) {
flg = 1;
printf("I am a parent with pid = %d.My child is %d.\n",getpid(),pid);
}
waitpid(pid, &status, 0);
}
}

return 0;
}

681:デフォルトの名無しさん
08/01/27 21:57:02
## showpid ##
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
printf("I am a child with pid = %d,My parent pid is %d.\n",getpid(),getppid());
exit(EXIT_SUCCESS);
}

682:664
08/01/27 22:07:09
>>870
助かりました☆
ありがとうございます!

683:デフォルトの名無しさん
08/01/27 22:08:13
>>870
やるじゃん

684:637
08/01/27 22:08:40
>>649

ありがとうございます!
あとはなんとかしてみようと思います。

685:デフォルトの名無しさん
08/01/27 22:16:07
簡単なゲームを作れといわれたのですがわかりません
誰か助けてください

686:デフォルトの名無しさん
08/01/27 22:16:43
>>685
>>677

687:デフォルトの名無しさん
08/01/27 22:50:20
>>686
むつかしくてわかりません、もっと簡単なのお願いします
ポーカーとかでいいです

688:デフォルトの名無しさん
08/01/27 22:52:28
>>687
頭は大丈夫か?


689:デフォルトの名無しさん
08/01/27 22:57:01
ポーカーの方がよっぽど難しい罠

690:デフォルトの名無しさん
08/01/27 23:00:12
>>687
まあ何も考えずに>>677の問題文にあるソースをコピってコンパイルして動かしてみろ
そして中身を理解しろ

ポーカーはそれからだ

691:デフォルトの名無しさん
08/01/27 23:05:29
オセロ作るスレってのがあったな

692:デフォルトの名無しさん
08/01/27 23:06:59
>>676
当方で確認した環境は Vine Linux 4.2 (kernel 2.6.16.36), 処理系は gcc 3.3.6 です。
showpid; URLリンク(kansai2channeler.hp.infoseek.co.jp)
tentimes: URLリンク(kansai2channeler.hp.infoseek.co.jp)

関係ないが、
URLリンク(espio.air-nifty.com)
によると、鳥インフルエンザがインドではやっているらしい。1400 人超えたとか超えないとか。
それにしても日本ではなぜ報道されないのか?

693:デフォルトの名無しさん
08/01/27 23:07:04
釣りだろ

694:デフォルトの名無しさん
08/01/27 23:14:30
>>673
URLリンク(kansai2channeler.hp.infoseek.co.jp)

695:692
08/01/27 23:21:19
>>680
確かに提示されたshowpidはおかしいですね。私もひっかかってしまった。

696:デフォルトの名無しさん
08/01/28 00:00:31
【時間切れ】 (1/27)
なし

【未解決問題】
>>614 1/28 8:00 残:課題2
>>581 1/28 9:00 残:課題2、3
>>677 1/28 午前まで
>>650 1/29
スレリンク(tech板:229番) 1/31
>79 無期限
>144 無期限 問題文>148

697:デフォルトの名無しさん
08/01/28 01:05:26
オレも早くせっくるしたい、by20歳

698:デフォルトの名無しさん
08/01/28 02:54:34
>>614 (>>696 1行目)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

699:デフォルトの名無しさん
08/01/28 03:04:20
[1] 授業単元:C演習
[2] 問題文(含コード&リンク):
/*ガウスの消去法プログラム*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#define A(x,y) a[(x)*(L+1)+y]
void output(double *a, int, int);
int gauss(double*a,double*x,int L,int n,double eps,int isw)
main(){
double amax,awap;
int i,j,k,l,m,ii,irow;
if(isw==1) output(a, L, n){
for(m=0;m<n-1;m++){
amax=fabs(A(m,m));
irow=m;
for(i=m+1;i<n;i++){
if(amax<fabs(A(i,m))){
amax=fabs(A(i,m));
irow=i;}
if(amax<=eps){
return(0);}
if(m!=irow){
for(l=m;l<n+1;l++){
続く
[3] 環境
 [3.1] OS: Windows 
 [3.2] コンパイラ名とバージョン: cresent
 [3.3] 言語: C++
[4] 期限: 1月28日11:00まで

700:デフォルトの名無しさん
08/01/28 03:18:16
>>699
見難い。
出直して来い。

701:673
08/01/28 07:23:48
<<694ありがとうございます!参考にします。

702:デフォルトの名無しさん
08/01/28 10:56:13
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
配列に整数を100個蓄える。
(1)蓄える整数は関数randによって与えられるものとし、
この配列をバブルソートによってソートした結果を出力するプログラムを作成せよ。

(2)また、上の問題を選択ソートを使用したプログラムに変更せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月29日

よろしくお願いします


703:デフォルトの名無しさん
08/01/28 11:26:39
>>702 ありきたりで申し訳ないが
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
#define SWAP(type, x, y) do{type tmp = x; x = y; y = tmp;}while(0)
// バブルソート
void bsort(int *a, int n){
    int i, j;
    for(i = 0; i < n - 1; i++)
        for(j = i + 1; j < n; j++)
            if(a[i] > a[j])
                SWAP(int, a[i], a[j]);
}
// 選択ソート
void ssort(int *a, int n){
    int i, j, min;
    for(i = 0; i < n - 1; i++){
        min = i;
        for(j = i + 1; j < n; j++) if(a[min] > a[j]) min = j;
        SWAP(int, a[i], a[min]);
    }
}
int main(void){
    int i, a[N];
    srand((unsigned)time(NULL));
    for(i = 0; i < N; i++) a[i] = rand()%100;
    for(i = 0; i < N; i++) printf("%4d", a[i]);
    printf("\n");
    bsort(a, N); // ssort(a, N);
    for(i = 0; i < N; i++) printf("%4d", a[i]);
}

704:デフォルトの名無しさん
08/01/28 11:42:15
>>702
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//バブルソート
int main(void){
int i,j,num[100],temp;
srand(time(NULL));
for(i=0;i<100;i++)num[i]=rand();
for(i=99;i>0;i--){
for(j=0;j<i;j++)
if(num[j]>num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;}}}
for(i=0;i<100;i++)printf("%d\n",num[i]);
return 0;
}
//選択ソート
int main(void){
int i,j,num[100],min,temp;
srand(time(NULL));
for(i=0;i<100;i++)num[i]=rand();
for(i=99;i>0;i--){
min=i;
for(j=0;j<i;j++)if(num[min]>num[j])min=j;
temp=num[min];
num[min]=num[i];
num[i]=temp;}
for(i=0;i<100;i++)printf("%d\n",num[i]);
return 0;
}

705: ◆HXgzCCSIaM
08/01/28 13:00:19
1] 授業単元:プログラミング演習Ⅰ
[2] 問題文(含コード&リンク):
構造体を用いて加減算を行う。
以下の空白(oooo)を埋めよ。
#include <stdio.h>
struct { /* 構造体の宣言 */
struct{
int a;
int b;
}keisan;

int main( void )
{
  int wa, sa; /* 変数の宣言 */
  scanf( "%d, %d", &keisan.a, &keisan.b             ); /* 入力 */
  wa= oooo    ; /* 加算 */
  sa= oooo    ; /* 減算 */
  printf( "和は%d 差は%d\n", wa, sa ); /* 出力 */
return 0;

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] VC 5.5
 [3.3] 言語: (C)
[4] 期限: 無期限
[5] その他の制限: 特になし

途中まで自分で埋めたのですが、oooo部分が違うと指摘されました。
よろしくお願いします。

706:デフォルトの名無しさん
08/01/28 13:20:35
>>705
wa = keisan.a + keisan.b
sa = keisan.a - keisan.b

707:デフォルトの名無しさん
08/01/28 13:27:12
>>705
scanfの中も違う
scanf( "%d %d", &keisan.a, &keisan.b); /* 入力 */

708:デフォルトの名無しさん
08/01/28 13:39:04
合ってるんじゃね?

709:デフォルトの名無しさん
08/01/28 13:44:44
問題は、出題の意図がどうであったか、だな。

710: ◆HXgzCCSIaM
08/01/28 13:58:31
>706-709
ありがとうございます。問題部分はこれで解決しました。
甘えてもう1題

[2] 問題文(含コード&リンク):
 2つの正の整数値a,bの最大公約数を出力するプログラムをユークリッドの互除法というアルゴリズムを用いて作成したい。
 以下のプログラムの****部分に適切な処理をいれて,プログラムを完成させなさい。

#include <stdio.h>
int main( void )
{
 int a, b;    /* 変数の宣言 */
 int m, n;
 scanf( "%d,%d", &a, &b );/* 2つの正の整数値を入力する */
 m=  a ;
 n=  b ;
 while(m **** n){   /* ユークリッドの互除法を適用 */
  if( m > n )
   m =  *****    ;
  else
   n =  ****     ;

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] VC 5.5
 [3.3] 言語: C言語
[4] 期限:無期限
[5] その他の制限: 特になし

同じく後半部分が解りませんでした。
よろしくお願いします。

711:デフォルトの名無しさん
08/01/28 14:12:14
>>710
while(m != n){
    if(m > n)
        m = m - n;
    else
        n = n - m;
}

712:デフォルトの名無しさん
08/01/28 14:13:21
#include <stdio.h>
int main(void)
{
int a,b,m,n;
scanf("%d %d",&a,&b);
m=a;
n=b;
while(m*n)
{
if(m>n)
m%=n;
else
n%=m;
}
printf("%dと%dの最大公約数は%dです",a,b,m+n);
return 0;
}

713:デフォルトの名無しさん
08/01/28 14:17:37
lcmやgcdの問題が多すぎ。

714:デフォルトの名無しさん
08/01/28 15:16:02
柴田望洋の本を使ってる授業多いNE。

715: ◆HXgzCCSIaM
08/01/28 15:17:33
>711
ありがとうございます!助かりました。

>712
別の表記方法なんですね。
勉強になります。



716:デフォルトの名無しさん
08/01/28 15:30:22
[1]プログラミング入門
[2]問題文
 キーボードから月(1~12)を入力して、その月の日数を表示するプログラムを
 完成させなさい
[3]環境
 [3.1] OS:WindowsXP
 [3.2] VC 5.5
 [3.3] 言語: C言語
[4]期限:1月29日
[5]その他の制限特になし

初心者ですがよろしくおねがいします

717:デフォルトの名無しさん
08/01/28 15:35:48
>>716
#include <stdio.h>

int main(void)
{
int month, Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
scanf("%d", &month);
printf("%d", Days[month - 1]);
return 0;
}

718:デフォルトの名無しさん
08/01/28 17:27:31
[1]プログラミング演習Ⅱ
[2]問題文
sample.txt 
0 1 2,
2 4 5,
3 4 2,
1 2 5,
2 2 2,
3 1 4,
1 1 2,
2 1 3,
3 5 4,
4 2 2,

 上の外部テキストファイル(sample.txt)に書かれている座標データを読み込み、
 1行ずつ順にx,y,zの配列に格納し、ちゃんと格納されたか出力してください。
[3]環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C言語
[4]期限:1月28日 17:00
[5]その他の制限特になし


719:デフォルトの名無しさん
08/01/28 17:32:35
期限切れ

720: ◆LnG.2EAY0A
08/01/28 18:21:22
以前質問させてもらった>>677です。
期限を01月28日と書きましたが、宿題の期限が伸びたので
図々しい様ですが、改めてお願いさせて頂いても良いでしょうか?
内容は変わりありません。

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:VC 6
 [3.3] 言語:C
[4] 期限:2008年02月05日まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。


721:デフォルトの名無しさん
08/01/28 18:35:20
>>720
問題文の意図が明瞭でない。それだと答えようがない

722: ◆LnG.2EAY0A
08/01/28 19:19:25
>>721
説明不足ですみませんでした。
問題文の元は、石取りゲームといって最初に全体の石の数・そこから一度に取れる数を設定しなければいけません、それが以下の部分です↓
printf("石を交互に取り、最後の1個を取った人が負けです\n");
while (1) {
nOrder = 1;
printf("石の数は(5以上100以下)==");
gets(answer);
nStone = atoi(answer);
if (nStone < 5 || nStone > 100) {
printf("石の数が不正です\n");
continue;
}
while (1) {
printf("一度に取れる石の数は(2以上)==");
gets(answer);
nGet = atoi(answer);
if (nGet >= nStone) {
printf("一度に取れる石の数が多すぎます\n");
continue;
}
if (nGet < 2) {
printf("一度に取れる石の数が少なすぎます\n");
continue;
}
break;
}
この部分で設定するのですが、最初の石の数・一度に取れる数を一度に設定できるようにしたいのです。例えば、
「一括設定を使いますか?→ y/n」→「難易度を選択して下さい→ 1:優しい 2:普通 3:難しい」
ここで1を入力すると、石の数と取れる数をファイルから読み込み、その設定でプレイする。といった感じです。
説明下手ですみません、追記させていただきました。

723:デフォルトの名無しさん
08/01/28 20:10:38
#include<stdio.h>
#include<string.h>
int main(void){
FILE *fp;
char line[128], *p;
int nStone, nGet, level, cnt;
~省略~
for(cnt=1; fgets(line, 128, fp) != NULL && cnt <= 3; cnt++){
 if(level != cnt) continue;
 p=strchr(line, '\n');
 if(p!=NULL) *p='\0';
 sscanf(line, "%d %d", &nStone, &nGet);
 break;
}
~省略~

724:デフォルトの名無しさん
08/01/28 21:08:06
[1]通信工学II
[2]問題文(含コード&リンク):
  次の文字送受信プログラム(IPv4専用)を、IPv4/v6デュアルスタックのプログラムに改良せよ。
  クライアント:URLリンク(kansai2channeler.hp.infoseek.co.jp)
  サーバー:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
 [3.1] OS:Windows XP/Vista
 [3.2] コンパイラ名:Visual C++ 2005 SP1
 [3.3] 言語:C++
[4]期限:1月31日 16:00
[5]その他の制限:特になし

丸投げですがよろしくお願いいたします。

725:デフォルトの名無しさん
08/01/28 21:15:27
なんかデカいのがきたな。

726:デフォルトの名無しさん
08/01/28 22:22:04
コメントそれなりについてるけど、このスレにしては確かにでかいな・・・
変更が必要な箇所を明記してくれてるけど、専門外でさっぱりわかんねw

727:デフォルトの名無しさん
08/01/28 22:32:12
素人でホントに困っています。よろしくお願いします

【質問テンプレ】
[1] 授業単元: 情報科学実習
[2] 問題文(含コード&リンク):()
問題>
次のような書式のファイルからデータを読み出して、標準体重の人の名前と
血液型一覧を別のファイルに出力せよ。ただし、classを用いること。また、
人のデータは必要によってメモリ割り当てすること

*標準体重・・・まず。指数k=平均体重/(平均身長-100)を出す。
各人の理想体重は(身長-100)×kであり、標準体重は、理想体重の97~103%。

・データファイルの書式
一行目:人数
二行目以降:名前 血液型 身長 体重

・データファイルの例
2
Mizumoto O 172 67
Otake A 170 62
[3] 環境
 [3.1] OS: I Mac
 [3.2] コンパイラ名とバージョン: E macs
 [3.3] 言語:C++
[4] 期限: 2008年2月6日まで
[5] その他の制限:繰り返し、条件式、配列、アドレス、ポインタ、スコープ、
クラスを習いました。


728:デフォルトの名無しさん
08/01/28 23:27:23
コンパイラ?

729:デフォルトの名無しさん
08/01/29 00:16:19
【時間切れ】 (1/28)
>581 >718

【未解決問題】
>>650 1/29

スレリンク(tech板:229番) 1/31
>>724 1/31 16:00
>>720 2/5 詳細>>722
>>727 2/6
>79 無期限
>144 無期限 問題文>148

730:デフォルトの名無しさん
08/01/29 00:33:26
>>727
この計算式通り計算すると理想体重が170付近になってしまいますが
理想体重でなくて理想身長の間違いではないでしょうか?
電卓で計算してみて下さい。

731:730
08/01/29 00:35:05
あ、ごめんなさい。私の間違いでした。

732:デフォルトの名無しさん
08/01/29 00:53:45
>>727
URLリンク(kansai2channeler.hp.infoseek.co.jp)

data2.datというファイルに結果を出力しています。

733:デフォルトの名無しさん
08/01/29 01:33:25
[1] 授業単元:C言語
[2] 問題文(含コード&リンク)
入力された整数を配列に順次格納する(昇順になるように入力すること)。
0が入力された時に整数の入力を終了し、次に入力された数字を、二分探索によって
配列から探索し、その配列の添え字番号を出力するプログラムを作成せよ

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 1月29日正午まで

お願いします

734:702
08/01/29 01:44:08
>>703-704
ありがとうございました


735:デフォルトの名無しさん
08/01/29 02:21:02
>>733
#include <stdio.h>
#include <stdlib.h>
#define BUFFSIZE 32
#define ARRAYSIZE 256

int binary_search(int array[], int b, int e, int key)
{
    int t = (e - b) / 2 + b;
    if (array[t] == key) return t;        
    if (array[t] < key) return binary_search(array, t, e, key);
    if (array[t] > key) return binary_search(array, b, t, key);
}

int main(void)
{
    int array[ARRAYSIZE];
    char buff[BUFFSIZE];
    int i;

    puts("Input Number(s).");
    for (i = 0; i < ARRAYSIZE; ++i) { fgets(buff, BUFFSIZE, stdin); if (atoi(buff) == 0) break; array[i] = atoi(buff); }
    printf("Input Number. :");
    fgets(buff, BUFFSIZE, stdin);
    printf("index: %d\n", binary_search(array, 0, i, atoi(buff)));

    return 0;
}


736:デフォルトの名無しさん
08/01/29 02:59:26
gccは不思議だな。
停止性がなくとも止まってくれるのは何故だろう?
printfとかを入れると止まらんけど。

737:デフォルトの名無しさん
08/01/29 06:45:43
[1] 授業単元:データ構造とアルゴリズム設計
[2] 問題文(含コード&リンク)
名前と年齢を入力し、年齢をキーとして、ハッシュ(チェイン法)に登録する
'-'を入力すると登録を終了し、次に入力された年齢を、ハッシュ法で検索し
あればその名前を出力するプログラムを作成せよ。ハッシュ表の大きさは9とする
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2月1日まで
よろしくお願いします。


738:デフォルトの名無しさん
08/01/29 08:03:26
>>732
ありがとうございます!!助かりました

739:733
08/01/29 08:55:01
>>735
ありがとうございました!


740:デフォルトの名無しさん
08/01/29 10:54:03
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows Xp
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2003
 [3.3] 言語: C
[4] 期限: 1/29まで
コンパイルするとエラーが出るのですが
どこが間違っているのかわからなくなってしまいました。
よろしくお願いします。

741:740
08/01/29 10:59:25
連投すいません
問題つけるの忘れてました
申し訳ありません
これです
URLリンク(kansai2channeler.hp.infoseek.co.jp)

742:デフォルトの名無しさん
08/01/29 11:31:24
「エラーメッセージはコピペしてください。」 って>>1に書いてある
コンパイルを通したいだけなら、問題文よりコンパイラのメッセージをコピペしてくれよ

743:デフォルトの名無しさん
08/01/29 11:59:24
回答者たちよ、実務では解決できるのかすら分からない難題に埋もれる中、
回答が出るよう作られた宿題回答で回帰逃避したい気持ちはよく分かるぞ。

744:デフォルトの名無しさん
08/01/29 12:36:05
娯楽ってのはそういうもんだ

745:デフォルトの名無しさん
08/01/29 12:37:29
>>743
先生、回帰逃避がよく判らないです。

746:デフォルトの名無しさん
08/01/29 12:53:27
>>737
URLリンク(kansai2channeler.hp.infoseek.co.jp)

747:デフォルトの名無しさん
08/01/29 13:26:55
前に回答して頂いた>>581です。
期限が切れてしまいましたが、二月頭まで締切を伸ばしてもらったので、引き続き(2)と(3)の解答をお願いできませんか??
どうかよろしくお願いします…m(_ _)m

748:デフォルトの名無しさん
08/01/29 14:01:25
>>747
音声データを縮める、音声データを反転させる、の定義をしてくれたまえ。

749:デフォルトの名無しさん
08/01/29 14:28:52
718の者です。期限1/28の17:00までって書いたんですけど
これは間違いで1/30の17:00までなのでよろしくお願いしますm(__)m

750:デフォルトの名無しさん
08/01/29 16:22:53
>>749
#include <stdio.h>

#define DATAFILE "sample.txt"
#define LINES 10

int main(void)
{
FILE *fp;
char line[10];
int i = 0, x[LINES], y[LINES], z[LINES];

if (fp = fopen(DATAFILE, "r")) {
while (fgets(line, sizeof(line), fp)) {
sscanf(line, "%d%d%d", &x[i], &y[i], &z[i]);
i++;
}
fclose(fp);
for (i = 0; i < LINES; i++)
printf("x[%d] = %d, y[%d] = %d, z[%d] = %d\n", i, x[i], i, y[i], i, z[i]);
}
return 0;
}

751:デフォルトの名無しさん
08/01/29 21:17:12
[1] 授業単元:C言語I

[2] 問題文(含コード&リンク):(元データ:URLリンク(kansai2channeler.hp.infoseek.co.jp)

入.力画.像ファイ.ル名、出.力画.像ファイル名、縦、横の
縮.小率を実行時に与えることが出来るようにすること

以下の場合、エラーメッセージを標準エラーに出力し
て、プログラムを終了させること

・正しくない縮.小率が入力された場合

・入力ファイル名に存在しないファイルが指定された場合

・すでに存在するファイル名が出.力画.像ファイル名に指定さ
れた場合

[3] 環境
 [3.1] OS:Linux OpenSuse
 [3.2] コンパイラ名とバージョン: すみません確認が分かりませんでした。cc でコンパイルしています。
 [3.3] 言語: C

[4] 期限: [2008年01月31日17:00まで]

[5] その他の制限: 簡単な例について,プログラミングの基礎知識,変数と式,制御の流れ,関数,配列,文字列,ポインタ,構造体とユーザ定義型,ファイルです。

  基本的に初心者からの講座ですので使えることは多くありません。元プログラムを見ていただければ程度が分かると思います。

  問題文で不自然に'.'が入っているのは,万が一検索されたときの対策です。
気を悪く思ったかもしれません。すみません。
もしスレを監視していたら意味もないですが;


752:デフォルトの名無しさん
08/01/29 21:22:20
丸投げしといて見つかりたくないか。そうか。

753:デフォルトの名無しさん
08/01/29 21:25:30
姿勢が気に食わないな。

754:デフォルトの名無しさん
08/01/29 21:44:19
完全に駄目元で言ってるな。

755:デフォルトの名無しさん
08/01/29 21:48:30
問題文のコメントも文字化けしてワロタ。

756:デフォルトの名無しさん
08/01/29 21:50:57
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):除算計算のプロセス改良 詳細→(URLリンク(kansai2channeler.hp.infoseek.co.jp))
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:visual C++
 [3.3] 言語: C++
[4] 期限:2/4
[5] その他の制限: 演算子/使用不可。
ヒントが詳しくあり、その通りにするだけだと思うのですができず。
問題と試しに作ったのを同梱したので添削してもらえると助かります。

757:デフォルトの名無しさん
08/01/29 22:15:24
>>756
fdivrsub()内の1行目、if()の条件式
(powb <= a << (powb+powb)) を if ( a < ( powb+powb )) にしたらいいんじゃない?

758:デフォルトの名無しさん
08/01/29 22:25:32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ある海賊団(総員10名)が100枚の金貨を手に入れた。
そこでみんなで分けようとしたが、この海賊団には以下の分配ルールがある。
一番年長の海賊(ボス)が誰に何枚割り振るかを決める。
ボスも含めたみんながその割り振りに賛成か反対か投票をする。
半数以上の賛成で可決される。ただし、賛成が半数未満ならボスは処刑され、
新たなボスがまた分配方法を決める。(10人は年が違うので新ボスを誰にするかでもめることはない)
と、決まるまでこれが繰り返される。
そしてこの海賊団員の特徴として、
みんな限りなく賢く、それぞれみんなが賢いことも知っている。
みんな自分の命は一番大事。次に大事なのは金貨。だが処刑は大好きで、
今のボスを処刑しても次のボスからもらえる金貨の枚数が同じだろうと思ったら、反対に票を投じる。
それぞれあまり仲はよくないので談合はしない。及び金貨の共有もしない。
さて、今のボスは自分がなるべくたくさん金貨がほしい場合、
何枚手に入れることができるだろうか?
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限: なし

759:758
08/01/29 22:36:55
スレ違いなので取り下げます

760:デフォルトの名無しさん
08/01/29 22:59:20
[1]プログラミング入門
[2]問題文
座標(X_1
Y_1)にある自転車1が角度A_1(度)の方向にV_1(m/s)で進み、座標(X_2
Y_2)にある自転車2が角度A_2(度)の方向にV_2(m/s)で進んでいる。
二つの自転車が出会う点の座標(X_3
Y_3)と、経過時間Tを求めなさい。
X軸の正方向を0(度)とする。
座標1目盛り1(m)とする。
[3]環境
[3.1] OS:WindowsXP
[3.2] Visual studio 2003
[3.3] 言語: C++
[4]期限:1月30日
[5]その他の制限特になし

丸投げで本当に申し訳ありません!
何卒宜しくお願い致します!(>_<)

761:デフォルトの名無しさん
08/01/29 23:16:13
>>750
ありがとうございました!!
ほんと助かりました。

762:デフォルトの名無しさん
08/01/29 23:46:06
>>760
向かい合って一直線に進んでるならまだしも、
ちょうどぶち当たるなんてこと、限りなく無いに等しいがそれでもいいの?

763:デフォルトの名無しさん
08/01/29 23:48:00
>>762
自転車の長さが100mくらいあるのかも知れないwww

764:デフォルトの名無しさん
08/01/30 00:05:32
【時間切れ】 (1/29)
>650 >740

【未解決問題】
>>760 1/30

スレリンク(tech板:229番) 1/31
>>724 1/31 16:00
>>751 1/31 17:00
>>581 2月頭 残:課題2、3
>>720 2/5 詳細>>722
>79 無期限
>144 無期限 問題文>148

765:デフォルトの名無しさん
08/01/30 00:08:06
まぁそのA1とA2が違う値ならぶつかるはずだけどなw

766:デフォルトの名無しさん
08/01/30 00:09:54
うはwと思ったらスピードが違うかったら一生交わらないww

767:デフォルトの名無しさん
08/01/30 00:13:37
>>765
点と点とが衝突するというのは、限りなく難しいと思う
自転車とやらの長さに依存する問題

長さが無限大の自転車だとほぼ確実に衝突するし、
長さが無限小の自転車だとほぼ確実に衝突しない

768:760
08/01/30 00:57:47
申し訳ありません!直線の交点を求めて、それぞれがその交点にたどり着く時間T_1(秒)およびT_2(秒)を求める問題でした(>_<)

769:デフォルトの名無しさん
08/01/30 05:07:25
>>768
眠くてかなりやっつけだが、一応書いた。
交わらない位置関係の判定がいまいちかも分からん。
#include <iostream>
#include <math.h>
#define PI 3.1415926535897932384626433832795
#define RATE 1000
using namespace std;
typedef struct DATA {
double x, y, a, v, l;
};
int main () {
DATA a, b;
cout << "X_1:"; cin >> a.x; cout << "Y_1:"; cin >> a.y;
cout << "A_1:"; cin >> a.a; cout << "V_1:"; cin >> a.v;
cout << "X_2:"; cin >> b.x; cout << "Y_2:"; cin >> b.y;
cout << "A_2:"; cin >> b.a; cout << "V_1:"; cin >> b.v;
a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180);
b.l = (a.y - b.y) / sin((b.a - a.a) * PI / 180);
if ((int)(a.a - b.a) % 180 == 0 ||
(int)(a.l*RATE) < 0 || (int)(b.l*RATE) < 0) {
cout << "まじわらない";
return -1;
}
cout << "T_1 = ";
if ((int)(a.l*RATE) == 0) cout << "0" << endl;
else cout << a.l / a.v << endl;
cout << "T_2 = ";
if ((int)(b.l*RATE) == 0) cout << "0" << endl;
else cout << b.l / b.v << endl;
return 0;
}

770:デフォルトの名無しさん
08/01/30 05:19:39
すまん、何か忘れてると思ったらx使ってなかったわwww

× a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180);
○ a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180) + (b.x - a.x);

771:デフォルトの名無しさん
08/01/30 11:11:15
>>757
お礼が遅れて申し訳ありません
ありがとうございました

772:デフォルトの名無しさん
08/01/30 12:28:43
>>720
URLリンク(kansai2channeler.hp.infoseek.co.jp)

773:デフォルトの名無しさん
08/01/30 14:45:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 ファイル中に自然数が10列記されている。
 この数列中には0が1~9個含まれている。
 従って、0を区切りと考えれば。この数列中には数が最低1つは連続している(連続回数とよぶ)。
 連続回数の最大を求め,その時の和を求めよ。
 ただし、連続回数の最大が2つ以上ある時は和の大きい方を最大とする。
 また、連続回数も和も同じであるときは考慮しなくてもよい。
 例1)3,1,0,3,6,2,3,7,4,0であれば、最大連続数は6でその和は25である。
 例2)3,1,0,2,2,0,03,0,0であれば、最大連続数は2でその和は4である。
[3] 環境
 [3.1] OS:Vine Linux 4.2
 [3.2] コンパイラ名とバージョン:gcc3.4
 [3.3] 言語:C
[4] 期限:[無期限]
[5] その他の制限:なし

むりやりならばできましたが、スマートなやり方があれば教えていただきたいです。


774:デフォルトの名無しさん
08/01/30 16:29:15
>>773 その無理やりのソースを貼り付けよう!

775:デフォルトの名無しさん
08/01/30 16:41:46
>>773 自分も無理やりやってみた。
#include <stdio.h>
#define N 10
int continuous(int *a, int from, int n){
    int to;
    for(to = from; to < n && a[to] != 0; to++);
    return to;
}
int culsum(int *a, int from, int to){
    int i, sum = 0;
    for(i = from; i < to; i++) sum += a[i];
    return sum;
}
int main(void){
    FILE *fp = fopen("data.txt", "r");
    int i, next, cnt = 1, sum = 0, tmp, a[N];
    if(!fp) return 1;
    for(i = 0; i < N; i++) fscanf(fp, "%d,", &a[i]);
    fclose(fp);
    for(i = 0; i < N; i++){
        next = continuous(a, i, N);
        if(next - i >= cnt){
            cnt = next - i;
            tmp = culsum(a, i, next);
            if(tmp > sum) sum = tmp;
        }
        i = next;
    }
    printf("cnt: %d\nsum: %d\n", cnt, sum);
    return 0;
}

776:デフォルトの名無しさん
08/01/30 16:45:28
部分だけ。
a[10]に数値読み込んでこんな感じかな?

int i,j=0,max=0,temp=0,renzoku=0;
for(i=0;i<10;i++)
{
while(a[i]&&i<10)
{
temp+=a[i];
i++;
j++;
}
renzoku=(j>renzoku?j:renzoku);
if(renzoku==j)max=(temp>max?temp:max);
j=0;
}

777:デフォルトの名無しさん
08/01/30 16:47:38
なにをもってスマートなんだろう

778:デフォルトの名無しさん
08/01/30 16:49:18
tempも0に戻そうぜ

779:デフォルトの名無しさん
08/01/30 17:00:22
ごめwww手抜きするといいことないねwwwww

#include <stdio.h>

int main(void)
{
int a[10],i,j=0,max=0,temp=0,renzoku=0;
FILE *fp=fopen("data.txt","r");
if(!fp) return 1;
for(i=0;i<10;i++)fscanf(fp,"%d,",&a[i]);
fclose(fp);

for(i=0;i<10;i++)
{
while(a[i]&&i<10)
{
temp+=a[i];
i++;
j++;
}
renzoku=(j>renzoku?j:renzoku);
if(renzoku==j)max=(temp>max?temp:max);
j=temp=0;
}
printf("最大連続数:%d\n合計:%d",renzoku,max);
return 0;
}

780:デフォルトの名無しさん
08/01/30 17:21:21
>>773
URLリンク(kansai2channeler.hp.infoseek.co.jp)

781:デフォルトの名無しさん
08/01/30 17:33:36
>>773
URLリンク(kansai2channeler.hp.infoseek.co.jp)

782:デフォルトの名無しさん
08/01/30 17:40:24
・0~99の100個の数字から異なる30個を選び、配列COM[30]に
格納せよ。
・次に異なる6個の数字を入力し、順番に配列MAN[6]に格納せよ。
・ソート方法Aを用いて配列COM、MANの要素をそれぞれ小さい順に並べよ。
・配列COMに含まれる配列MANの数字の個数countを求めよ。
・最後に、配列COM、MANの全要素、変数countを
 result.outに書き込め。
・出力形式は自由とするが、main関数内は10行以内にすること。

[ソート方法A]
・作業用の配列として、要素が100個のint型の配列Workを用意する。
・配列Workの各要素は、0に初期化する。
・ソートしたい配列xの要素を順番に読んで、Work[その値]を+1する。
・作業3をすべてのxの要素について行った後、Workの要素を小さい方から順番に
 よんで、Workの値が0でなければ、xに書き戻します。

この課題が全然できません。助けて下さい。


783:デフォルトの名無しさん
08/01/30 17:51:36
>>773
URLリンク(kansai2channeler.hp.infoseek.co.jp)

784:デフォルトの名無しさん
08/01/30 17:53:32
>>782
それ、【ヒント1】~【ヒント3】も問題文にあるだろ?

785:デフォルトの名無しさん
08/01/30 18:22:57
>>782
作ったけど,PC移行中でコンパイラ入れて無くて試せない^p^

786:デフォルトの名無しさん
08/01/30 20:10:32
>>769
本当に有難う御座います!!

787:デフォルトの名無しさん
08/01/30 20:37:58
[1] 授業単元:
[2] 問題文(含コード&リンク):シェルソートは単純挿入法を改良し、ソートの効率を上げたものである。
全ての要素を1度にソートするのではなく、
間隔dをあけて要素を比較して大まかなソートを繰り返したのち、
最後にd = 1でソートを実行する。

データ数をnとしたときの、効率の良い間隔d[i]の計算法として、
Knuthによる次の式が知られている。

t = log2n - 1 (整数に切り捨て)
d[t-1] = 1
d[i-1] = 2d[i] + 1

この式を使って、与えられた要素数nに対し
t、配列dの値を計算する関数を作成しなさい。
n = 100としたときの、tおよびdの要素の値を画面に出力しなさい。
logの計算を行うには、math.hをインクルードする

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期間:2/1まで
[5] その他の制限: なし
お願いします。

788:デフォルトの名無しさん
08/01/30 21:23:01
>>782
URLリンク(kansai2channeler.hp.infoseek.co.jp)

789:788
08/01/30 21:25:57
ありゃ、main()関数が10行以下の制限忘れてた。
全部他の関数に移せってか。ちょっとまって。

790:デフォルトの名無しさん
08/01/30 21:26:06
>>782
>>694

791:デフォルトの名無しさん
08/01/30 21:35:02
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。
一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,その点が物体の内部に落ちるかどうかを判定する。
内部に落ちる確率が体積に比例することから体積が見積もれる。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2/1
[5] その他の制限:


792:788
08/01/30 21:38:18
>>782
URLリンク(kansai2channeler.hp.infoseek.co.jp)
すまんかった。

793:デフォルトの名無しさん
08/01/30 21:43:34
>>782の問題は、内容から おそらく COMとMANに値を収める
部分を、共通関数化すれば得点高いと思う。
それを構成できるかも問うてる様に見える。

具体的には、配列代入関数として、入れたかどうかと、
配列が溢れた事を戻り値で返す。

794:デフォルトの名無しさん
08/01/30 22:05:45
>>793
>>673

795:デフォルトの名無しさん
08/01/30 23:52:16
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void)
{
 double x, y, z;
 int iter[] = {10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 0}, i, j, k = 0, count;
 for (i = iter[k]; i; i = iter[++k]) {
  count = 0;
  for (j = 0; j < i; j++) {
   x = (double)rand() / RAND_MAX - 0.5;
   y = (double)rand() / RAND_MAX - 0.5;
   z = (double)rand() / RAND_MAX;
   if (sqrt(x * x + y * y) <= 0.5 && 0. <= z && z <= 1.)
    count++;
  }
  printf("ITER = %d, V = %f\n", iter[k], (double)count / iter[k]);
 }
 printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5);

 return 0;
}


796:デフォルトの名無しさん
08/01/30 23:52:43
あ、>>795>>791さんへです。

797: ◆LnG.2EAY0A
08/01/31 02:04:32
>>772
>>723
お返事が送れて申し訳ありません、回答ありがとうございました!
これでなんとか理解できそうです。


798:デフォルトの名無しさん
08/01/31 14:03:52
[1] プログラミング序論
[2] ①./a.out arg1 arg2 ...の時、
    argをアルファベット順にソーティングするquicksortのプログラムを作る。
  ②問題①をライブラリ関数qsort()を用いて作る。
   qsort( void* base, int n_elem, int size, int (*compare)(void*, void*) )
   base: 配列のアドレス
   n_elem: 要素数
   size: 一要素のサイズ
   compare: 比較に使う関数。
  ③ライブラリ関数と同じ動きをする関数
   msort( ...qsortと同じ引数... )
   を作る。(アルゴリズムはクイックソート)
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C
[4] 2008年2/5(火)
[5] 制限は特にないです

よろしくお願いしますm(__)m

799:デフォルトの名無しさん
08/01/31 16:57:21
>>798

とりあえず最後の問題だけやってみた。
これで満点とれなかったら教官の頭が悪い。

( ´∀`)つURLリンク(kansai2channeler.hp.infoseek.co.jp)

800:ハム
08/01/31 18:54:12
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文:(数独の問題作成の途中です。)
       最初全てに0が入った2次元配列を、数字が全て埋まった状態にするプログラムを考えています。
       どなたかお力をお貸し下さい。
[3] 環境 Visual Studio 2005
 [3.1] OS: Windows/ XP
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C言語
[4] 期限: ([2008年2月2日21:00まで]
[5] その他の制限:初心者なので、簡単なコードでお願いします。

801:デフォルトの名無しさん
08/01/31 18:55:16
[1] プログラミング演習
[2]リンクリストを用いたスタックプログラムの作成
typdef struct box{
int cont;
struct box next;}box1;
typedef box1 *stack;
スタックの仕様は↑とする。
ポップアップとプッシュダウンを行う関数
int pupup(stack S);
void pushdown(stack S; int x);
を作成せよ。
[3] 環境
 [3.1] winXP
 [3.2] bcc
 [3.3] C
[4] 2008年2/5(火)
[5] 制限:問題文の仕様を使うこと。
アンダーフロー対策はしなくてよい

よろしくおねがいします。




802:デフォルトの名無しさん
08/01/31 18:56:05
>>800
お前は日本語を書いている自信があるのか?

803:デフォルトの名無しさん
08/01/31 19:14:15
>>800
数独は、プログラムで解くのは簡単だけど作るのは難しいと思われ。
途中まで作ったのならそれを提示したまえ。
# つーか、初心者向けの内容じゃねぇぞ。

804:デフォルトの名無しさん
08/01/31 20:18:36
>>724の者ですが、締め切りが2/2の12:00に伸びたのでどうかよろしくお願いします。
全然わからないので…

805:デフォルトの名無しさん
08/01/31 21:03:12
>>804
やだ。

806:名無し募集中。。。
08/01/31 21:08:17
>>805
お前に言ってねーよ。カス。
どうか分かる方お願いします。

807:デフォルトの名無しさん
08/01/31 21:09:57
>>806
やだってばー。

808:名無し募集中。。。
08/01/31 21:10:43
>>807
だからお前のような頭のヘボい奴には頼んでないから。
どうか頭の良い方お願いします。

809:デフォルトの名無しさん
08/01/31 21:15:17
>>808
馬鹿はスルーしろ

810:デフォルトの名無しさん
08/01/31 21:17:14
>>808
いちいち反応するな馬鹿

811:デフォルトの名無しさん
08/01/31 21:36:03
>>808
答えようかと思ったが、君のように裏表がある人間のために
エディタ起動するのマンドクセ('A`)

812:名無し募集中。。。
08/01/31 21:37:32
>>811
お前に言ってねーよ。カス。
どうか分かる方お願いします

813:デフォルトの名無しさん
08/01/31 21:54:17
誰もわかんねーのかよ。
単位やべーからお願い。

814:デフォルトの名無しさん
08/01/31 21:55:03
いさぎよく諦めろ

815:名無し募集中。。。
08/01/31 21:56:28
>>814
お前がやれ。命令だ。

816:デフォルトの名無しさん
08/01/31 22:00:14
俺今他のやってる

817:デフォルトの名無しさん
08/01/31 22:41:07
>>801
問題がタコだな。
まず、その仕様じゃコンパイルすら通らない。

>pupup
popupの間違いでは。

>アンダーフロー対策はしなくてよい
オーバーフロー対策はどうなのよ。

818:デフォルトの名無しさん
08/01/31 22:43:33
最近の人工無能は頭いいな

819:デフォルトの名無しさん
08/01/31 22:45:05
>>800
>数字が全て埋まった状態にするプログラム

ほらよ

memset(table, 1, sizeof(table));

820:デフォルトの名無しさん
08/01/31 22:57:33
>>817
オーバーフロウもアンダーフロウも対策しなくて大丈夫です。
ペーパーで提出する課題なのでかなり適当みたいです。
popupは自分も気になりましたが問題がpupupなのでそのままにしましたw

821:デフォルトの名無しさん
08/01/31 23:02:20
>>820
それだけじゃなくて、

typdef struct box{
int cont;
struct box next;}box1;

↑じゃコンパイル通らないよ。

typdef struct box{
int cont;
struct box *next;}box1;

↑こうしないと。

いいかげんそうな教官みたいだし、もう提出しなくてよいんじゃね?

822:デフォルトの名無しさん
08/01/31 23:06:48
タイポもあるな。

823:デフォルトの名無しさん
08/01/31 23:12:43
つーか、prevへのポインタ無しで、どうやってpopupするわけ?
一方通行じゃん。pushしか出来ねーーー

824:デフォルトの名無しさん
08/01/31 23:14:41
というか、nextがprevなのか。

825:デフォルトの名無しさん
08/01/31 23:29:21
>>795
ありがとうございます!

826:デフォルトの名無しさん
08/01/31 23:34:58
まぁ文句ばっかり言うのもあれなので。

typedef struct box{
int cont;
struct box *next;}box1;
typedef box1 *stack;

int pupup(stack S)
{
box1 tmp = *S->next;
free(S->next);
S->next = tmp.next;
return tmp.cont;
}

void pushdown(stack S, int x)
{
box1 *new_box = (box1 *)malloc(sizeof(box1));
new_box->cont = x;
new_box->next = S->next;
S->next = new_box;
return;
}

827:デフォルトの名無しさん
08/01/31 23:48:51
>>798
URLリンク(kansai2channeler.hp.infoseek.co.jp)
2と3。

828:デフォルトの名無しさん
08/02/01 00:37:31
昨日は規制の巻き添えを食らって、書きこめなかつた

【時間切れ】 (1/31)
スレリンク(tech板:229番) 1/31
>>751 1/31 17:00

【未解決問題】
>>787 2/1

>>724 2/2 12:00
>>800 2/2 21:00
>>581 2月頭 残:課題2、3
>79 無期限
>144 無期限 問題文>148

829:デフォルトの名無しさん
08/02/01 00:39:09
ミス、>>798は課題①が終わってません

830:デフォルトの名無しさん
08/02/01 00:42:04
>800
「数独(すうどく・SUDOKU)とは、3×3のブロックに区切られた9×9の正方形の枠内に1~9までの数字を入れるペンシルパズルの一つである。」

123 456 789
456 789 123
789 123 456

234 567 891
567 891 234
891 234 567

345 678 912
678 912 345
912 345 678

でいいんじゃね?

831:デフォルトの名無しさん
08/02/01 00:43:22
解答
URLリンク(www.nicovideo.jp)

832:581
08/02/01 12:47:48
>>581です。
(2)なのですが、音声データを半分に圧縮して再生できれば良いそうです。
実際の音声データとなる部分のbyte?を、一個飛ばしで読み込んでみて、と言われたのですが、さっぱりです…orz
(3)は、音声データを読み込んで、逆再生できればOKだそうです。

よろしくお願いしますm(_ _)m

833:デフォルトの名無しさん
08/02/01 13:26:02
>>787
URLリンク(kansai2channeler.hp.infoseek.co.jp)

834:デフォルトの名無しさん
08/02/01 13:32:09
>>832
半分削ったら復元無理じゃん
あとまずは>>658さんのテキストファイルをWavにするプログラム作れば
既にないぞうしてるかもしれないけど

835:デフォルトの名無しさん
08/02/01 13:38:12
復元は要求されてなくね

836:デフォルトの名無しさん
08/02/01 13:56:05
再生するにはwavが作れないと駄目

837:デフォルトの名無しさん
08/02/01 14:19:02
おもったんだがどんな楽器の音もテキストの数字の羅列のみで鳴らせるのか ちょっとおどろき

838:デフォルトの名無しさん
08/02/01 14:22:37
そらまあどんなデータだってバイナリじゃ0と1の集合なんだし、
音だろうと映像だろうと数字の羅列に対応させるのは簡単だぞ。

839:デフォルトの名無しさん
08/02/01 14:25:39
でも人間がテンキーで打ち込みしてもオーケストラの音楽とかむりのはず

840:デフォルトの名無しさん
08/02/01 14:26:40
最終的に鼓膜を震わせればいいんだから

841:デフォルトの名無しさん
08/02/01 14:29:07
複雑な音楽は0と1だけじゃなくその間の音色がいくらでもある。
引き篭ってパソコン麦価かまってるとそんな当たり前のことも分からなくなるんだな。

842:デフォルトの名無しさん
08/02/01 14:30:59
この中で一番頭悪いのは>>841でFA?

843:デフォルトの名無しさん
08/02/01 14:37:43
>>839も加えておいてくれ。どっちもどっち

844:デフォルトの名無しさん
08/02/01 14:39:05
ドとド#の間にだって音があるんだよ。
カラオケの採点だと正確にドを出すのを高得点としているが、
人間の耳に入った場合は必ずしも正確なドが心地よいとは限らない。
ちょっとはずしてる加減がかわいいとかあるだろ?
音だけじゃなくリズムとか強弱とかもな。

845:デフォルトの名無しさん
08/02/01 14:41:34
>>841
でも人間の耳の分解能には限界があるだろ
1/3を0.0101010101010101で近似しても違いなんて分からない

846:デフォルトの名無しさん
08/02/01 14:50:16
>>845
そっちの問題より量子化の時の誤差の方が大きいだろ。

847:デフォルトの名無しさん
08/02/01 15:02:09
>>846
>>841が「離散量では原理的に複雑な音楽を忠実に表現できない」という主張をした(と俺は理解した)から、
目盛を十分細かく取れば良い、という説明をしただけで、実際に音声をデジタルで扱う場合にどこが困難かは別の話だろ

848:デフォルトの名無しさん
08/02/01 15:15:18
>>841
よくわからんが、MIDIのことか? なつかしいな。

849:デフォルトの名無しさん
08/02/01 15:15:52
[1] プログラミング演習
[2]試験課題
優先順位付き四則演算

式を入れてください
(123.4*(5.1+0.2)+(6+0.3)/(3.0-1.0)/5=?
答えは?です。

[3.1]WindowsXP
[3.2]VS8.0
[3.3]C++
[4]2月5日
[5]構造体
調べてみましたがよくわかりませんでした。
よろしくお願いいたします。


850:デフォルトの名無しさん
08/02/01 15:18:41
>>849
メンバ関数とか使っていい?

851:798
08/02/01 16:36:21
>>799さん
>>827さん
お早い回答、見やすいプログラムありがとうございました^^

・・・もし来週も行き詰ったら・・・よろしくお願いしますm(__)m





852:デフォルトの名無しさん
08/02/01 16:41:11
850
はい、習っているので大丈夫です。

853:デフォルトの名無しさん
08/02/01 17:37:34
>>849
けっして俺がつくったソースコードではないけど
頭のいい人はすごいねって思う。
fparserでググれば出てくるかもしれんが
圧縮してあげとく。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

854:デフォルトの名無しさん
08/02/01 17:40:56
>>800
URLリンク(kansai2channeler.hp.infoseek.co.jp)
とりあえず書いてみたが、あまり簡単でもスマートでもない。
出力だけはたぶん合ってそうだけども。

855:デフォルトの名無しさん
08/02/01 18:23:00
>>853
ありがとうございます、動きました。

856:デフォルトの名無しさん
08/02/01 19:43:00
>>724
URLリンク(kansai2channeler.hp.infoseek.co.jp)
VCないから、Cygwin/g++用に変更した。一応動いたのでうp
参考程度にどうぞ
(運がよければVCでもそのままコンパイルできる。一応気にしてソース修正したつもり)

IPv6環境ないからIPv6での動作確認はできなかった

857: ◆sUfWYz9MSA
08/02/01 21:53:06
[1] 授業単元: 画像処理研究
[2] 問題文(含コード&リンク):
以下のようなcsvファイルをfopen()で読み込み,
フーリエ変換したものをグラフで表示する.

400,97.98
400.5,98.13
401,98.31
401.5,98.49
・・・
という","の左が700まである波形データです。
読み込んだデータを","区切りでプロンプトに書き出す
ことはできているのですが,フーリエ変換がどうしてもできませんorz
お手数ですが教えてもらえないでしょうか。

sample: URLリンク(yomiko-01.hp.infoseek.co.jp)

csvでupできなかったので.txtになってますスイマセン・・・

[3] 環境
 [3.1] OS: Windows2000
 [3.2] コンパイラ名とバージョン:Visual C++ 6.0
 [3.3] 言語: どちらでも可
[4] 期限: できるだけ早くお願いします。
[5] その他の制限:学校から家に帰るのでコメント返信遅くなります・・・
         どうかよろしくお願いします。

858:デフォルトの名無しさん
08/02/01 22:24:48
[1] 授業単元:コンピュータ理論
[2] 問題文(含コード&リンク):n,kを入力したとき、0~n-1の整数からk個選ぶ選び方をすべて出力する
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語:C言語
[4] 期限: 2月4日中
[5] 再帰的アルゴリズムを使うと簡単と言われました。
どうかよろしくおねがいします。

859:デフォルトの名無しさん
08/02/01 22:34:05
順列を区別するかを書け。

860:デフォルトの名無しさん
08/02/01 22:37:07
組み合わせです

861:デフォルトの名無しさん
08/02/01 22:42:47
>>859
重複なしの組み合わせです。

n=5,k=3のときは
012 013 014 023 024 034 123 124 134 234
となるはずです。


862:デフォルトの名無しさん
08/02/01 22:46:58
>>857
C言語によるアルゴリズム事典からそのままぱくったので
あってるかどうかわからへんで~
URLリンク(kansai2channeler.hp.infoseek.co.jp)

863:デフォルトの名無しさん
08/02/01 23:01:55
>>858
unsigned long combination(int n, int k)
{
int i, j;
unsigned long a[17];

if (n - k < k) k = n - k;
if (k == 0) return 1;
if (k == 1) return n;
if (k > 17) return 0; /* error */
for (i = 1; i < k; i++) a[i] = i + 2;
for (i = 3; i <= n - k + 1; i++) {
a[0] = i;
for (j = 1; j < k; j++) a[j] += a[j - 1];
}
return a[k - 1];
}


864:デフォルトの名無しさん
08/02/01 23:07:33
>>863
ワロタ

865:デフォルトの名無しさん
08/02/01 23:40:39
>>858
#include<stdio.h>
#include<stdlib.h>
void get_combination(int num, int chosenCnt);
int *numary;
int n, c;
int main(int argc, char *argv[]){
 if(argc != 3) return 1;
 n = atoi(argv[1])-1;
 c = atoi(argv[2]);
 if((numary = (int*)calloc(sizeof(int), c)) == NULL) return 1;
 get_combination(0, 1);
 free(numary);
 return 0;
}
void get_combination(int num, int chosenCnt){
 int i;
 if(chosenCnt > c){
  for(i=0; i < c; i++) printf(" %d", numary[i]);
  putchar('\n');
  return;
 }
 for(i=num; i <= n; i++){
  numary[chosenCnt-1] = i;
  get_combination(i+1, chosenCnt+1);
 }
}

866:858
08/02/01 23:54:04
>>863
返答ありがとうございます。
コンパイル通るのですが、どうやったら表示できるかが分からず、
いろいろ試してみましたが出来ませんでした。orz...

>>865
返答ありがとうございます。
ばっちり動きました。ありがとうございます。
助かりました。
後でプログラムをじっくり解読してみます。

本当にありがとうございました。

867:デフォルトの名無しさん
08/02/01 23:54:10
>>856さま
IPv4でもIPv6でも動きました!
本当にありがとうございました!

868:デフォルトの名無しさん
08/02/01 23:55:44
>>866
本気で何も分かってないな。まあ丸投げスレだからいいんだけど

869:デフォルトの名無しさん
08/02/02 00:01:53
>>862
>>857です。返事ありがとうございます!
今帰ってきたので、後で参考にさせてもらいます(o´・ω・)´-ω-)ペコリ


870:デフォルトの名無しさん
08/02/02 00:14:39
>>849
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
>> 853 さんにならって、私がこの方面にのめりこむきっかけとなったソースを、そのままあげておきます。
なお、宿題の題意にあうように手直しはしていますが、小数点の処理は手抜きです。オリジナルを損ねたくなかったわけで、すみません。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>853
まったく頭のいい人はすごいですね。

871:デフォルトの名無しさん
08/02/02 00:27:55
【時間切れ】 (2/1)
>787

【未解決問題】
>>581 2月頭 残:課題2、3
>>798 2/5 残:課題1
>79 無期限
>144 無期限 問題文>148

872:ハム
08/02/02 00:52:07
>>854さん
ありがとうございます!
熟読して、勉強させていただきます!
本当にありがとうございます!!


873:デフォルトの名無しさん
08/02/02 02:04:47
>>870
小数に対応できるようにfactor()の中身を>>870が書き換えたんだよね?
'('が来た後の exp0() を int で受けてるままだから
このままだと丸まっちゃうよ

874:870
08/02/02 02:23:48
>>873
感謝です。訂正したものをあげておきます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

875:853
08/02/02 02:50:50
URLリンク(karetta.jp)
こーいうページもあるけどね
これをdoubleでやりとりするように変えた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
をあげとこう

876:デフォルトの名無しさん
08/02/02 02:54:00
>>874
早いねw
もっというと現状のソースはちょっと精神分裂気味に見えるから
double number(void) 作って↓みたいにしたほうが元のBNF通りかねえ?
他人の宿題だからどうでもいいかもだけど。

double factor(void){

if(isdigit(nextc){ /* F -> Num */
return number();
} else if(match('(')) { /* F -> (E) */
double v = exp0();
if(match(')')) return v;
else error();
} else {
error();
}

}

877:デフォルトの名無しさん
08/02/02 10:06:19
>>876
そうすると、1桁しかあつかえないのでは?
いや、現状が精神分裂気味なのはまったく同意です。オリジナルの美しい構造を残したいものです。

878:デフォルトの名無しさん
08/02/02 10:31:53
>>875
なるほど,ブランク読み飛ばし、単項のマイナスにも対応してますね。
ただし、このBNF はLL(1)文法であり、たかだか**1文字**先読みすればdeterministicにtop-downに解析できるわけで、その精神をソースにもりこみたいな、という意志がありまして...。

879:デフォルトの名無しさん
08/02/02 11:22:33
83代目の575は評価されるべき

880:デフォルトの名無しさん
08/02/02 17:33:37
>>751が叩かれてて質問者でもないし聞きづらかったんだけど、期限も切れているようだし>>751を聞いていいかな?

881:デフォルトの名無しさん
08/02/02 17:41:13
いいとも!

882:デフォルトの名無しさん
08/02/02 19:12:13
[1] 授業単元:プログラミング初級
[2] 問題文(含コード&リンク):
1~24まで穴埋め問題です
URLリンク(ip.tosp.co.jp)

[3] 環境
 [3.1] OS : windows
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C言語
[4] 期限:2月4日

883:デフォルトの名無しさん
08/02/02 20:18:58
>>882
とりあえず22まで。間違ってても謝罪や賠償はしない。
1. int *
2. char *
3. char *
4. int **
5. char **
6. char **
7. &cnt
8. &ch
9. &ch
10. pc
11. *pc
12. &ch
13. pch
14. *pch
15. argv[1]
16. pa
17. *(argv[2])
18. *pa
19. &pc
20. &pch
21. **ppc
22. **pch


884:デフォルトの名無しさん
08/02/02 20:36:22
23と24も。
最近C言語でプログラム書いていないんで、argvの仕様を調べなおしてた。
あと、実行時の引数の順序がわからんから、適当に書き換えてくれ。
23. *(pp+3)
24. **(pp+4)

885:デフォルトの名無しさん
08/02/02 21:22:32
>>883
ありがとう御座います

886:デフォルトの名無しさん
08/02/02 21:28:44
URLリンク(www.raw-paradise.com)

887:デフォルトの名無しさん
08/02/02 21:48:01
>>879
再掲載お願いできますでしょうか?

888:デフォルトの名無しさん
08/02/03 00:06:55
結局751の画像は何を対象にしてたんだぜ?

889:デフォルトの名無しさん
08/02/03 00:38:36
>>581
URLリンク(kansai2channeler.hp.infoseek.co.jp)

890:デフォルトの名無しさん
08/02/03 01:29:14
【時間切れ】 (2/2)
なし

【未解決問題】
>>798 2/5 残:課題1
>>79 無期限
>>144 無期限 問題文>>148

891:デフォルトの名無しさん
08/02/03 02:44:30
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
input8500.txtには4桁の整数が8500個書かれている。
これら8500個の整数のうち、相異なる整数は何種類あるか求めなさい。

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

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年2月4日12:00まで
[5] その他の制限: 制限は特にありません。宜しくお願いいたします。


892:デフォルトの名無しさん
08/02/03 03:30:01
>>891
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void){
  int *table=(int*)calloc(sizeof(int), 10000, 0), i, x;
  FILE *in=fopen("input8500.txt","r");
  for(i=0; i<8500; i++){
    fscanf(in, "%d", &x);
    table[x]++;
  }
  for(i=x=0; i<10000; x+=table[i]?1:0, i++);
  printf("%d種類\n", x);
}

コンパイラ無いので,試してないけど動くんじゃね?

893:デフォルトの名無しさん
08/02/03 08:25:55
>>887

575 デフォルトの名無しさん sage 2007/02/22(木) 19:31:21
>>574
ほい。
#include<stdio.h>
#include<stdlib.h>
char buf[100],*src=buf;
double atm(void);
double mul(double r){return*src=='*'?++src,mul(r*atm()):*src=='/'?++src,mul(r/atm()):r;}
double add(double r){return*src=='+'?++src,add(r+mul(atm())):*src=='-'?++src,add(r-mul(atm())):r;}
double atm(void){
    double r;
    while(isspace(*src))++src;
    if(*src == '(')++src,r = add(mul(atm())),++src;
    else r = strtod(src,&src);
    while(isspace(*src))++src;
    return r;
}
int main(){gets(src);printf("%f\n",add(mul(atm())));}

894:デフォルトの名無しさん
08/02/03 17:42:29
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:2月12日(火)16時20分まで
[5] その他の制限:特になし。

よろしくお願いします。



895:891
08/02/03 18:08:31
>>892
ありがとうございます。コンパイルしてみたところ
5行目に、too many arguments to function `calloc'
とエラーが出ました。calloc関数は使用したことがないため、
どこを直せばいいのか分かりません。
教えていただけないでしょうか。

896:デフォルトの名無しさん
08/02/03 18:11:24
それくらい仕様を見れば分かるだろ。

897:デフォルトの名無しさん
08/02/03 18:12:20
>>895
calloc(10000, sizeof(int))

898:デフォルトの名無しさん
08/02/03 18:45:29
>>894
URLリンク(kansai2channeler.hp.infoseek.co.jp)

899:デフォルトの名無しさん
08/02/03 20:53:57
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語: C
[4] 期限:2月5日
[5] その他の制限:特になし

お願いします。


900:デフォルトの名無しさん
08/02/03 21:35:45
[1] 授業単元:課題3
[2] 問題文(含コード&リンク):月日を入力するとその日の星座を表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C
[4] 期限: 2008/2/6
[5] その他の制限: 特にありまさん

901:891
08/02/03 22:02:09
>>896 >>897
コンパイル通りました。ありがとうございました!
仕様良く読みます。

902:デフォルトの名無しさん
08/02/03 22:09:06
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。
一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,その点が物体の内部
に落ちるかどうかを判定する。内部に落ちる確率が体積に比例することから体積が見積もれる。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2/4
[5] その他の制限:

以前このスレで質問した問題なんですがコンパイルできなかったのでもう一度
おしえてもらえないでしょうか。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
 printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5); のM_PIでエラーがでて
しまいます。

903:デフォルトの名無しさん
08/02/03 22:22:43
>>900
#include <stdio.h>
#include <stdlib.h>

int main() {
static const struct {int n; const char *s;} c[] = {
{120, "みずがめ"}, {219, "うお"}, {321, "おひつじ"}, {420, "おうし"},
{521, "ふたご"}, {622, "かに"}, {723, "しし"}, {823, "おとめ"},
{923, "てんびん"}, {1024, "さそり"}, {1122, "いて"}, {1222, "やぎ"},
};
int i, m, d;
char buf[256];

do {
printf("月/日: ");
if (fgets(buf, sizeof buf, stdin) == 0)
return EXIT_FAILURE;
} while (sscanf(buf, "%d / %d", &m, &d) != 2);
for (i = 0; i < 12 && m * 100 + d >= c[i].n; i++)
;
if (--i < 0)
i = 11;
printf("%s座\n", c[i].s);
return EXIT_SUCCESS;
}

904:デフォルトの名無しさん
08/02/03 22:27:41
>>902
上の方に
#define M_PI 3.141592653589793238
とか書いときゃいいんじゃね?

905:デフォルトの名無しさん
08/02/03 22:30:10
>>902
 printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5);のまえにでも
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
とでもしとけ
てか、CygwinでもMinGWでもコンパイルは通るんだが

906:デフォルトの名無しさん
08/02/03 22:35:19
>>902
私の方でもコンパイル・実行しましたが、問題はありませんでした。
環境は WindowsXP/cygwin(gcc 3.4.4) です。
#include <math.h>
の記述がありますから、M_PI には円周率が定義されているはずなのですが...。
gcc のインストールはどうやってしましたか?

907:906
08/02/03 22:40:29
>>902
そうそう、アップローダのソースは空白が全角になってました。これを半角に直してみてください。


908:デフォルトの名無しさん
08/02/03 22:41:48
VCとかでは定義されてなかったような気がする。関係ないけど
バージョンによってはgccでも載ってなかったりするのか?

909:デフォルトの名無しさん
08/02/03 22:54:59
>>899
URLリンク(kansai2channeler.hp.infoseek.co.jp)

910:デフォルトの名無しさん
08/02/03 22:58:44
>>908
M_PI は、手元の gcc 2.6.3 for GO32/PC9801 の math.h には定義されていましたね。
bcc 5.5 でも OK, VC 6.0 の math.h にはありませんでした。

911:デフォルトの名無しさん
08/02/03 23:09:50
VC(7以上)なら
#define _USE_MATH_DEFINES
で使えたはずだが

912:デフォルトの名無しさん
08/02/03 23:10:52
>>900
#include<stdio.h>
int main(void){
char *a[]={"いて","やぎ","みずがめ","うお","おひつじ","おうし","ふたご","かに","しし","おとめ","てんびん","さそり"};
unsigned int m,d;
printf("月,日=");
scanf("%d,%d",&m,&d);
printf("%s座\n",a[(m+d*2/",*&*(,*0...,"[m%12])%12]);
return 0;
}


913:デフォルトの名無しさん
08/02/04 00:16:06
3.141592653592

914:デフォルトの名無しさん
08/02/04 02:21:34
>>798 課題1。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

915:581
08/02/04 03:47:38
>>889さん
ありがとうございますm(_ _)m
さっきgccでコンパイル通そうとおもったら通らなかったのですが、どうすれば良いでしょうか??orz

916:デフォルトの名無しさん
08/02/04 08:45:59
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:UNIX
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限:2月6日
[5] その他の制限:
よろしくお願いします。

917:デフォルトの名無しさん
08/02/04 09:10:09
>>915
どんなエラーメッセージが出ていますか。

918:デフォルトの名無しさん
08/02/04 09:34:59
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: どちらでも可
[4] 期限: 2008年02月04日12:00まで
[5] その他の制限:

919:デフォルトの名無しさん
08/02/04 10:44:49
>>916

( ´∀`)つURLリンク(kansai2channeler.hp.infoseek.co.jp)

920:デフォルトの名無しさん
08/02/04 10:47:51
>>918

( ´∀`) yamaguchi.txt が落とせないんです。

921:デフォルトの名無しさん
08/02/04 10:54:17
>>916

ごめん。行頭に空白があったり、空行があったらバグっちゃう。
パッチ書きました。

( ´∀`)つURLリンク(kansai2channeler.hp.infoseek.co.jp)

922:デフォルトの名無しさん
08/02/04 11:03:33
>>916

ごめん。add_word() の処理が冗長だった。
もう一回パッチあててくり。

( ´∀`)つ URLリンク(kansai2channeler.hp.infoseek.co.jp)

923:899
08/02/04 11:06:04
>>909
ありがとうございました。

924:デフォルトの名無しさん
08/02/04 11:07:56
>>920

yamaguchi.txtです
URLリンク(kansai2channeler.hp.infoseek.co.jp)

925:915
08/02/04 11:26:36
>>917さん
コンパイル失敗時に出てきたエラーメッセージを直接コピペします。長いかも・・・。
2ch.c:6: parse error before `&'
2ch.c:17: parse error before `}'
2ch.c: In function `read_wave_file':
2ch.c:47: storage size of `chunk' isn't known
2ch.c:54: stray '\' in program
2ch.c:54: parse error before `)'
2ch.c:56: stray '\' in program
2ch.c:56: parse error before `)'
2ch.c:62: stray '\' in program
2ch.c:62: parse error before `!'
2ch.c:68: parse error before `else'
2ch.c:68: stray '\' in program
2ch.c: At top level:
2ch.c:76: parse error before `if'
2ch.c:78: parse error before `+'
2ch.c:78: warning: data definition has no type or storage class
2ch.c:81: warning: parameter names (without types) in function declaration
2ch.c:81: warning: data definition has no type or storage class
2ch.c:83: parse error before `if'
2ch.c: In function `write_wave_file':
2ch.c:92: storage size of `chunk' isn't known
2ch.c:98: stray '\' in program
2ch.c:98: parse error before `;'
2ch.c:102: stray '\' in program
2ch.c:102: parse error before `;'
2ch.c:105: stray '\' in program
2ch.c:105: parse error before `;'
2ch.c:110: stray '\' in program
2ch.c:110: parse error before `;'


926:デフォルトの名無しさん
08/02/04 11:39:00
>>925
5行目の最後(改行の直前)の'\'が消えてないか?

927:デフォルトの名無しさん
08/02/04 12:35:58
>>922
ありがとうございました。

928:デフォルトの名無しさん
08/02/04 13:55:09
>>925
まさかとは思うが、改行コードが\r\nのままLinuxでコンパイルしていないか?
5行目末のバックスラッシュが\rをエスケープしてしまい、その後の\nをエスケープできなくなるぞ。

929:デフォルトの名無しさん
08/02/04 14:43:27
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク):①0~99の数字から異なる30個を選び、配列COM1[30]に格納せよ
               (時間で初期化,乱数を使用)
              ②次に6個の異なる数を入力し配列COM2[6]に格納せよ
              ③次にCOM1、COM2の数を小さい順に並び変えよ
              ④次にCOM1とCOM2の両方に含まれる数の個数を求めよ
              ⑤最後にCOM1とCOM2の全数字と④の個数を出力させよ
[3] 環境
 [3.1] OS:UNIX
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限:2月7日
[5] その他の制限:

宜しくお願いします。


930:デフォルトの名無しさん
08/02/04 14:59:57
>>929
>>788

931:デフォルトの名無しさん
08/02/04 15:24:53
>>929

( ´∀`)つURLリンク(kansai2channeler.hp.infoseek.co.jp)

932:デフォルトの名無しさん
08/02/04 15:33:49
>>931
make_com1()は>>929の①の『0~99の数字から異なる30個を選び』を
満たしてないような・・・(重複するんじゃないの?)

通りがかりで失礼


933:デフォルトの名無しさん
08/02/04 16:57:58
>>929
URLリンク(kansai2channeler.hp.infoseek.co.jp)

初心者だけどやってみた、一応ちゃんと動いた。
変数の名前とかだいぶ適当だけど勘弁。

934:デフォルトの名無しさん
08/02/04 17:17:44
[1] 授業単元:C言語入門
[2] 問題文:キーボードから学籍番号を入力すると、
その学生の eメールアドレスを出力するプログラムを作成しなさい。
ただし、学籍番号は7桁の自然数とし、これ以外の文字列が打ち込まれた時には
「学籍番号は7桁の数字で入力して下さい」と出力して、終了するプログラムとすること。

学籍番号を入力して下さい:0032113
0032113@yahoo....など。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: visual studio
 [3.3] 言語: C++
[4] 期限: 2月4日
[5] その他の制限:

期限ギリギリで申し訳ないですが、お願いします。

935:デフォルトの名無しさん
08/02/04 19:00:43
>>929
俺も作ってみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)


936:デフォルトの名無しさん
08/02/04 20:45:00
100回入れ替えなくても30回で十分なやり方あるだろ……と思ってよく見たらその交換の仕方はダメだ

937:935
08/02/04 20:46:34
あぁ・・・VCで作ったから_tmainのままになってら・・・

938:デフォルトの名無しさん
08/02/04 20:49:52
>>936
後学の為にダメな理由を詳しく教えてくれると嬉しい。


939:デフォルトの名無しさん
08/02/04 20:57:16
for( i = 0 ; i < sizeof(hoge)/sizeof(*hoge) ; i++ )
{ // i番目の要素と乱数(0~99)番目の要素を交換
int rnd = rand() % 100 ;
int tmp = 0 ;

tmp = hoge[i] ;
hoge[i] = hoge[rnd] ;
hoge[rnd] = tmp ;
}

これだと数値が偏るから

940:デフォルトの名無しさん
08/02/04 20:58:56
[1] 授業単元:プログラミング
[2] 問題文
input.txtの各行には100点満点の数学の試験の点数が書かれている。
これを0点台,10点台…,90点台,100点の11の階級に分け、どの階級に何人
が属するかを人数分の"*"で表すプログラムを書きなさい。出力の細かな形式は問わない。

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

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C
 [3.3] 言語:C
[4] 期限:2月6日
[5] その他の制限:

よろしくお願いします。

941:デフォルトの名無しさん
08/02/04 20:59:28
>>934
学籍番号とメールアドレスの関連はどうなってるんだ?
それだけじゃ、苗字を入力して、下の名前を出力するプログラムって言うぐらい、意味不明だぞ。
どうやって作ったらいいのかサッパリ分からん。

学籍番号@yahoo.co.jpでいいのか?

942:デフォルトの名無しさん
08/02/04 21:03:06
>>939
どう偏るの?

943:934
08/02/04 21:06:39
>>941
入力された学籍番号@yahoo.co.jp
と、出力されるプログラムです。

ただし、学籍番号は7桁の自然数とし、これ以外の文字列が打ち込まれた時には
「学籍番号は7桁の数字で入力して下さい」と出力して、終了するプログラムとすること。

↑ここがどのようにプログラムしたらいいのか分からないのです。

944:デフォルトの名無しさん
08/02/04 21:10:33
>>940
#include <stdio.h>

int main(void)
{
FILE *fp;
int i, j, a[11] = {0}, n;

if((fp=fopen("input.txt", "r"))==NULL) return 1;

while(fscanf(fp, "%d", &n)!=EOF) a[n/10]++;

for(i=0; i<11; i++) {
printf("%3d点台:", i*10);
for(j=0; j<a[i]; j++) putchar('*');
putchar('\n');
}
fclose(fp);

return 0;
}

945:デフォルトの名無しさん
08/02/04 21:11:47
>>942
スレリンク(tech板:513番)
スレリンク(tech板:532番)
スレリンク(tech板:534番)

946:デフォルトの名無しさん
08/02/04 21:18:28
>>940

( ´∀`)つURLリンク(kansai2channeler.hp.infoseek.co.jp)


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