ページ 11

自作関数について

Posted: 2008年4月05日(土) 02:25
by 北欧マニア
課題が出ておりまして自分でできるとこまでやったんですが、もう限界です。。
どなたか助けて下さい。
OSはウィンドウズ、コンパイラはボーランドを使っています。
作っている関数は、データを保存する配列の関数を作っています。
一応エラーは出ないんですが、画面には何も表示されません。

今はdata_set0,1,2 と関数を分けていますが、data_set関数だけで、変数を使って、1024個のデータを
格納したいと考えています。格納したデータを表示出来るようにしたいです。
期限がもうギリギリなので、宜しくお願いします。

#include <stdio.h>

int data[4];
int data_set0(void);
int data_set1(void);
int data_set2(void);
int data_set3(void);


int data_set0()
{
data[0] = 100;

return data[0];
}

int data_set1()
{
data[1] = 101;

return data[1];
}

int data_set2()
{
data[2] = 102;

return data[2];
}

int data_set3()
{
data[3] = 103;

return data[3];
}



int main()
{
data_set0();
data_set1();
data_set2();
data_set3();

return 0 ;
}

Re:自作関数について

Posted: 2008年4月05日(土) 03:16
by 名無し
1024個のデータはどこにあるのですか?
何をしたいのかよくわかりません・・・
表示するだけでよいのなら
#include <stdio.h>

int data[4]; 

int data_set0() 
{ 
	data[0] = 100; 

         return data[0]; 
} 

int data_set1() 
{ 
	data[1] = 101; 

         return data[1]; 
} 

int data_set2() 
{ 
	data[2] = 102; 

         return data[2]; 
} 

int data_set3() 
{ 
	data[3] = 103; 

         return data[3]; 
} 



int main() 
{ 
	printf("data[0]=%d\n",data_set0()); 
	printf("data[1]=%d\n",data_set1()); 
	printf("data[2]=%d\n",data_set2()); 
	printf("data[3]=%d\n",data_set3()); 

         return 0 ; 
}

Re:自作関数について

Posted: 2008年4月05日(土) 04:41
by 通りすがり
まず、何をしたいのかさっぱりわかりませんし、1024個のデータに何を入れるのかもわかりません。
仕様がわからなければ答えようが無いですし、出来る事はやったと言っていますが、
画面に文字を表示するのは、プログラムで一番最初に習うべきハローワールドでも有名なprintf。
これを使わないと画面に文字が表示されない事はC言語歴1時間の入門者でもわかるでしょう。


家に書籍が無いのなら、ネットで勉強しましょう。
ググればいくらでも出てきます。
http://www.google.co.jp/search?hl=ja&q= ... %96%80&lr=

Re:自作関数について

Posted: 2008年4月05日(土) 08:14
by バグ
こちらで勝手に深読みしたのと同じ内容であれば、配列、ループ…がキーワードになりそうですね(^O^)

Re:自作関数について

Posted: 2008年4月05日(土) 13:08
by toyo
4つの関数を1個で済ませるならこんな関数になります
int data_set(int n)
{
    data[n] = 100 + n;
    return data[n];
}

Re:自作関数について

Posted: 2008年4月05日(土) 13:27
by 管理人
期限がギリギリと言う事なんですが、課題でしょうか?
課題の内容はどんなものなのでしょうか?

Re:自作関数について

Posted: 2008年4月05日(土) 15:29
by 北欧マニア
皆様、アドバイスありがとうございます。 課題の内容なんですが、1024個を数字を格納する配列を作ること、またその個数をデファインで変えられるようにすること。 そのなかで、関数を用いて、どこに何の数字を格納しているか わかるようにする事。出来たらそれをPRINTF以外の関数で表示したいと考えています。わかりずらくて申し訳ありません、

Re:自作関数について

Posted: 2008年4月05日(土) 15:49
by lbfuvab
#include<stdio.h>
#include<string.h>
#define SIZE 1024

int buf[SIZE];

int ShowData(int n){
    if(n<0 || n>=SIZE)
        return 0;
    return buf[n];
}
int main(){
    int i,data;
    char szData[7];
    
    do{
        printf("何個目のデータを見ますか?(0~%4d)\n",SIZE);
        scanf("%d",&i);
        data=ShowData(i);
        sprintf(szData,"%d",data);
        puts(szData);
        puts("続けますか?(0-No,1-Yes)");
        scanf("%d",&i);
    }while(i);
    return 0;
}
こんな感じですか?(データを入れてないので全て0が表示されます

Re:自作関数について

Posted: 2008年4月06日(日) 00:59
by オプーナを買う権利を授けよう
>1024個を数字を格納する配列を作ること、またその個数をデファインで変えられるようにすること。
あまり得意ではないのでほかの方に解説していただきたいのですがmalloc関数のことじゃないんですかね?

Re:自作関数について

Posted: 2008年4月06日(日) 01:27
by 北欧マニア
<ぴよぴよさん

コードありがとうございます。
コードはほぼ自分がイメージしていたものでした。
ちょっと欲を言うとデータをscanfとかで入力したものを表示できたらいいな…と
あとここから自分で追加してみようと思ったんですが、古いデータから上書きとかも考えています。
時間がおありでいたら宜しくお願いします。


<オプーナを買う権利を授けよう さん

自分も一番最初にmallocで作ろうかとしたら、mallocは使わないようにと言われました。

Re:自作関数について

Posted: 2008年4月06日(日) 02:21
by 管理人
>オプーナを買う権利を授けようさん

defineで定義すると言う事は、定数で配列の要素数が変動しないので、mallocは使う必要が無いと思います。
配列要素数を変数で指定する時にmallocを使えばいいと思います。
まぁ色んな定数を利用すると言うなら話は別ですが・・。

>北欧マニアさん

いまいちやりたいことがわからないのですが、scanfで何を入力したいのでしょう?
具体的に何をしたいかがわからないと答えられないので、その辺を最初から明確にしてもらえると皆さんの回答も早く得られると思います。

もう代入の仕方はわかったんですよね?
それなら単に
scanfで取り込んだ変数の値を代入したらいいだけです。

int d,hairetu[1000];
scanf("%d",&d);
hairetu[0]=d;
printf("%d",d);

これだけでも出来てますが、それだけの量の配列を用意する意味がよくわかりません。
printfは使わないという仕様なのでしょうか?
printf以外なら何でもいいのでしょうか?

Re:自作関数について

Posted: 2008年4月07日(月) 08:16
by 北欧マニア
←管理人さん      配列に入力したいのは数字です。代入の仕方はわかりました。表示の仕方ですが、PRINTFは出来るだけ使わないで、別のやり方でやるように言われました。

Re:自作関数について

Posted: 2008年4月07日(月) 09:45
by tk-xleader
printfを使うなということであれば、

fprintf(stdout,/*printfの第一引数*/,/*第二引数以降*/);

とか…

char buffer[1024];
sprintf(buffer,,/*printfの第一引数*/,/*第二引数以降*/);
fputs(buffer,stdout);

printf系関数を使わないようにということならば、

http://www.play21.jp/board/formz.cgi?ac ... &rln=12373

が参考になると思います。

Re:自作関数について

Posted: 2008年4月08日(火) 01:45
by 北欧マニア
< tkmakwins15 さん

大変参考になりました。ありがとうございます。
あと余談なのですが、登録データがMAXになったら古いデータから上書きを考えていて、
for文で現在作成中なのですが、もっと良いやり方はあるでしょうか?