したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

宿題・課題をください

1名無しさん:2003/06/07(土) 20:36
課題欲しいです。
宿題の手伝いします

2名無しさん:2003/06/07(土) 20:48
strlen作ってみれ。

3名無しさん:2003/06/07(土) 20:58
#include <string.h>
size_t strlen(const char *s)
{
return strchr(s,'\0')-s;
}

4名無しさん:2003/06/07(土) 20:59
#include <stdio.h>
#include <string.h>
int main(void)
{
char kana[100];
int a;
printf("文字を入力してください\n");
scanf("%s",kana);
a=strlen(kana);
printf("文字数は%dでした。",a);
getchar();
}
strlenを使って何か作れってこと?

5名無しさん:2003/06/07(土) 21:07
>>3標準関数は使うな。
まぁそれだけできれば作れると思うが。
>>4
ちゃうわ。
strlen互換の関数をを自分で作ってみろっちゅーこと。

6名無しさん:2003/06/07(土) 21:09
すいませんでした。早とちりしてました。
いいですね、ここ。
結構勉強になるかも。初心者には

7名無しさん:2003/06/08(日) 00:20
再起関数を使って、クイックソートを行うプログラムを一丁。

8名無しさん:2003/06/08(日) 01:59
>>7
昔書いた奴。ごちゃごちゃしてみにくいな・・・


#include <stddef.h>

static void swap(unsigned char *,unsigned char *,size_t);

void qsort(void *base,size_t nmemb,size_t size,int (*compar)(const void *,const void *))
{
unsigned char *pivot,*left,*right;

if(nmemb<=1)
return;

pivot=(unsigned char *)base+nmemb/2*size;
left=(unsigned char *)base;
right=(unsigned char *)base+(nmemb*size-size);

while(left<=right){
for(;(*compar)(left,pivot)<0;left+=size) ;
for(;(*compar)(right,pivot)>0;right-=size) ;
if(left<=right){
if(left==pivot)
pivot=right;
else if(right==pivot)
pivot=left;
swap(left,right,size);
left+=size;
right-=size;
}
}

qsort(base,(right+size-(unsigned char *)base)/size,size,compar);
qsort((unsigned char *)base+(left-(unsigned char *)base),(nmemb*size-(left-(unsigned char *)base))/size,size,compar);
}

static void swap(unsigned char *v1,unsigned char *v2,size_t n)
{
unsigned char t;

for(;n--;v1++,v2++)
t=*v1,*v1=*v2,*v2=t;
}

9名無しさん:2003/06/08(日) 02:14
>>8
ありがとう!

さっそく解読させてもらいます。
これを参考にしてやってみます。

10七衛門:2003/06/08(日) 02:18

遅れましたが訂正

再起関数 ・・・ 再帰関数。

11名無しさん:2003/06/10(火) 21:47
int strlen(char c[]){
int n=0;
for(int i=0;;i++){
if(c[i]==null)
break;
n++;
}
return n;
}
めちゃくちゃ初心者です。添削してください。

12名無しさん:2003/06/10(火) 23:47
>>11
大体いいんじゃない?
いただけないのは、if(c[i]==null)ってとこ。
nullじゃなくてNULLだし、そもそもif(c[i]=='¥0')と書くべき。
0と'\0'とNULLの違いはちゃんとつけなきゃだめぽ。
あと、この手のはwhileで書くほうが自然かな。
while(*c != '\0') {
   c++;
   n++;
}
みたいに

13名無しさん:2003/06/12(木) 21:20
NULL = アドレス的NULL
'\0' = 文字列的NULL

意味だけ言うと、NULL != '\0'
だよ。

14名無しさん:2003/06/13(金) 15:42
2から数えて100万番目の素数を出来るだけ早く計算するプログラムを教えて下さい。

15名無しさん:2003/06/14(土) 07:27
というか、素数を求めるアルゴリズム教えてください

16はんぺら:2003/06/14(土) 13:40
>14 アルゴリズム1・・・エラトステネスのふるい
2から100万までの数が素数であるかないかを入れる配列a[1000000]
を作る。
素数であれば0、なければ1、分からなければ9を入れる。
まずa[1]からa[999999]の全てに9を入れる。
次に順番に素数かどうかを判定していく。例えば「3」を素数かどうか調べると
素数だと分かる。
その後、3の倍数は素数じゃないのでa[3],a[6]・・・・a[999999]までに1を入れる。
はうあ!!!これは、2から100万の間の素数を調べるアルゴリズムじゃん!!
間違えた!!「100万番目」の素数を調べるのではなかった・・。

17はんぺら:2003/06/14(土) 13:40
>14 アルゴリズム1・・・エラトステネスのふるい
2から100万までの数が素数であるかないかを入れる配列a[1000000]
を作る。
素数であれば0、なければ1、分からなければ9を入れる。
まずa[1]からa[999999]の全てに9を入れる。
次に順番に素数かどうかを判定していく。例えば「3」を素数かどうか調べると
素数だと分かる。
その後、3の倍数は素数じゃないのでa[3],a[6]・・・・a[999999]までに1を入れる。
はうあ!!!これは、2から100万の間の素数を調べるアルゴリズムじゃん!!
間違えた!!「100万番目」の素数を調べるのではなかった・・。

18はんぺら:2003/06/14(土) 13:41
しかも2重カキコ・・・恥ずかしすぎる!
あ〜〜
もうこのハンドルネーム使えないよ〜〜

19はんぺら:2003/06/14(土) 13:45
訂正 
a[6]・・・a[999999] 
です。

「はんぺら」より

20名無しさん:2003/06/15(日) 14:32
(1)テキストファイルは名簿である.各行のデータを,ID,姓名,読み(ローマ字)の三つの要素をもつ構造体に格納する
プログラムを書け.
(2)木とはなにか.また,2分木とはなにか.説明せよ.
(3)(1)でデータを格納した構造体を節点とする2分木を作成するプログラムをかけ.新しいデータを一行ずつ構造体に読み込んで,
   木に追加していくこと.必ずポインタを使って木を実現し(構造体に必要な修正を加えること),データが増えても対処できるようにすること.
   また,すべての節点をなぞりながら,データ(ID,姓名,読み)を出力できるようにもせよ.その際できるだけ
  見やすい形に表示するよう工夫すること.

21名無しさん:2003/06/16(月) 16:16
>>20
http://pc2.2ch.net/test/read.cgi/tech/1055056940/316

22名無しさん:2003/06/16(月) 18:17
>>21
(・∀・)ナンテコッタ

23名無しさん:2003/06/16(月) 19:08
>>20の(1)を誰かやってください

24はんぺら:2003/06/17(火) 06:01
>>20

/*名簿データの構造体への読み込み簡易版*/
#include<stdio.h>
#include<stdlib.h>

int i,j;
FILE *f_load;

struct meibo{

char id[20];
char name[20];
char yomi[20];

};

struct meibo syainn[1];

int main(void)
{

if((f_load = fopen("data.txt","r"))== 0){
printf("ファイルを開けません!\n");
exit(0);
}


fscanf(f_load,"%s",syainn[0].id);
fscanf(f_load,"%s",syainn[0].name);
fscanf(f_load,"%s",syainn[0].yomi);

fclose(f_load);

/*ここまでファイルの読み込み

以下、画面への出力です。
*/

printf("%s\n", syainn[0].id);
printf("%s\n", syainn[0].name);
printf("%s\n", syainn[0].yomi);

return 0;

}

25名無しさん:2003/06/17(火) 08:01
>>25簡易版じゃないほうをおしえてください

26名無しさん:2003/06/18(水) 20:52
>>20
なんでstruct meibo syainn[1]はグローバル変数なの?
ちゅーか、なんで要素一つなのに配列にするの?

2726:2003/06/18(水) 20:55
>>26は間違えた。
(誤)>>20  →  (正)>>24

28名無しさん:2003/06/18(水) 20:56
>>26
テキストファイルにはデータ(ID,姓名,読み)がたくさんあります

2926:2003/06/18(水) 21:11
>>28
理由になってないよ。
ローカル変数の(配列でない)単独の変数で
読み込み可能でっせ。ちゅーか普通そうする。

30名無しさん:2003/06/19(木) 18:05
>>20の(1)をやってください

31名無しさん:2003/06/19(木) 18:22
どなたか「自己参照構造体」「ファイル入出力」を使用していて、

・テキストファイルがある.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.

といったもの以外のプログラムを与えていただけませんか?
自由課題で上記2つを用いて何か作成しなければならないのですが…

32名無しさん:2003/06/19(木) 20:08
>>31
テキストファイルを読み込み、出現した単語を辞書順に並べ、出現した回数を表示せよ。

33名無しさん:2003/06/19(木) 20:36
「自己参照構造体」「ファイル入出力」を使用していて、

・テキストファイルがある.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.

34名無しさん:2003/06/19(木) 20:38
木とはなにか.また,2分木とはなにか.説明せよ.

3531:2003/06/19(木) 20:45
>>32
thx。
ちょうど現在の授業の進行具合にマッチしてます。
早速取り掛かろうと思います。

36名無しさん:2003/06/19(木) 22:30
>>32
ちょっと面白そうだったのでつくってみました。ちなみにASCII専用。
#include&nbsp;<stdio.h>
#include&nbsp;<ctype.h>&nbsp;/*&nbsp;isprint&nbsp;*/

#define&nbsp;CHARCOUNTSIZE&nbsp;&nbsp;&nbsp;('~'&nbsp;-&nbsp;'&nbsp;'&nbsp;+&nbsp;1)
#define&nbsp;BUFFSIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;256
#define&nbsp;SP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;'

char&nbsp;&nbsp;&nbsp;&nbsp;line_s[BUFFSIZE];
size_t&nbsp;&nbsp;charcnt[CHARCOUNTSIZE];

void&nbsp;Judgchar(size_t);&nbsp;
void&nbsp;ShowCount();
void&nbsp;ZeroClear();

void&nbsp;ZeroClear()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;初期化必要ないかもしれんけど&nbsp;*/
{
&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;
&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i<CHARCOUNTSIZE;&nbsp;++i){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;charcnt[i]&nbsp;=&nbsp;0;
&nbsp;&nbsp;&nbsp;&nbsp;}
}

void&nbsp;ShowCount()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;見ての通り表示&nbsp;*/
{
&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;
&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i<CHARCOUNTSIZE;&nbsp;++i){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i&nbsp;%&nbsp;10&nbsp;==&nbsp;0&nbsp;&&&nbsp;i&nbsp;!=&nbsp;0)&nbsp;&nbsp;putchar('\n');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%c:[%03d]&nbsp;",(char)(i+SP),charcnt[i]);
&nbsp;&nbsp;&nbsp;&nbsp;}
}

void&nbsp;Judgchar(size_t&nbsp;c)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;文字判定&nbsp;Judg?ん!&nbsp;あ!&nbsp;eがない&nbsp;*/&nbsp;
{
&nbsp;&nbsp;&nbsp;&nbsp;if(!isprint(c))&nbsp;return&nbsp;;
&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;charcnt[c&nbsp;-&nbsp;SP]&nbsp;+=1;
}

int&nbsp;main()
{
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*p;
&nbsp;&nbsp;&nbsp;&nbsp;ZeroClear();
&nbsp;&nbsp;&nbsp;&nbsp;while(gets(line_s)){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(p=line_s;&nbsp;*p;&nbsp;++p){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Judgchar(*p);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line_s[0]&nbsp;=&nbsp;0;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;ShowCount();
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;
}

37名無しさん:2003/06/19(木) 22:34
関数が全部voidじゃんてなつっこみはなしね。
それと、実行結果が合っているかなんて確かめてないから。8文字でのテストでは
あっていたけど。

38名無しさん:2003/06/19(木) 22:42
グローバル変数に初期化は必要ないよ。
あと、全て0で初期化する場合はmemset()を使えば一発。

39名無しさん:2003/06/19(木) 22:47
そうなんすか?
memset()ですか。どうやって記述するんでしょうか。

40名無しさん:2003/06/19(木) 22:52
ここの http://www9.plala.or.jp/sgwr-t/
これの http://www9.plala.or.jp/sgwr-t/lib/libtop.html
これなどご参考に http://www9.plala.or.jp/sgwr-t/lib/memset.html

41名無しさん:2003/06/19(木) 22:59
>>38
なるほどグローバルは必要ないんですね。

42名無しさん:2003/06/19(木) 23:05
>>38
初期化の意味わかってる?
グローバル変数を-1で初期化したかったらどうするんだよ。

43名無しさん:2003/06/19(木) 23:13
はいはい、そうですね。
グローバル変数は0で初期化されます。
なので今回のような場合は0で初期化しなくていい、ということです。

44名無しさん:2003/06/19(木) 23:30
>>43
不正確な発言しといて居直りか。
あと、グローバルのdouble型変数は0初期化されるんか?

45名無しさん:2003/06/19(木) 23:44
感じ悪い人ですね。

4644:2003/06/19(木) 23:50
まぁな。

47名無しさん:2003/06/20(金) 04:16
>>44
double d;としたらdouble d=0;と書いたものだと見なすから0.0に初期化される。
ポインタの場合も同様。
http://www.catnet.ne.jp/kouno/c_faq/c1.html#30

48名無しさん:2003/09/01(月) 18:43



新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板