C/C++の宿題を片付けます 115代目at TECH
C/C++の宿題を片付けます 115代目 - 暇つぶし2ch960:946
08/09/30 19:32:07
>>947

習ってるのは
#include<stdio.h>
main()

みたいな感じで、main()をいじる方法はならってないです。
int main(~)じゃない方法で出来ないでしょうか?

後最後のreturn 0;というのもまだ習っていません。

>>958みたいな感じではこのプログラムは作れないんでしょうか?

連レス失礼しました。

961:デフォルトの名無しさん
08/09/30 19:37:28
>>960
#include <stdio.h>
#include <string.h>
main()
{
char buf[1600];
int i;

printf("入力文字列:"); gets(buf);
i= strlen(buf);
printf("逆転文字列:");
while (i-- > 0) {
printf("%c", buf[i]);
}
printf("\n");
}

説明するのもめんどくさいからこれで

962:デフォルトの名無しさん
08/09/30 19:39:56
>>937
>>932ですが、わかりにくかったみたいですみません。
例えば、キーボードから0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9
と、入力したとき、実行結果が
histo[0]=**
histo[1]=**
histo[2]=**
histo[3]=**
histo[4]=**
histo[5]=**
histo[6]=*
histo[7]=*
histo[8]=*
histo[9]=*
のように表示するプログラムをつくるという意味です(ヒストグラム)
ポインタは使用してもかまいません。必ず配列の受け渡しを行っていることが前提です。
どなたかお願いします。

963:デフォルトの名無しさん
08/09/30 20:12:11
int histo[10] = {0};

while(適当に) histo[input_value]++;

と、詰めて、
for (i=0; i<10; i++) {
while(histo[i] != 0) {
printf("*");
histo[i]--;
}
printf("\n");
}
という感じに出力すればよいのではないかな。

964:デフォルトの名無しさん
08/09/30 20:20:03
>>953さん
ありがとうございます。すごく助かりました

965:デフォルトの名無しさん
08/09/30 21:05:31
>>953
すいません下のランダムの方がうまくいかないのですが

966:デフォルトの名無しさん
08/09/30 21:35:57
>>965
どううまくいかないんだろう。
永久ループに見せかけていつかそのうち見つかるってアレじゃないのかな。

967:デフォルトの名無しさん
08/09/30 21:36:36
>>965
rand() / ~ じゃなくて rand() % (~) の間違いだと思う

968:デフォルトの名無しさん
08/09/30 21:42:38
できました。ありがとうございます


969: 株主【tech:0/6602=0(%)】 誰か次スレ立てて
08/09/30 21:47:24
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
【C 関数検索 man on WWW】 URLリンク(www.linux.or.jp)
【過去ログ検索】        URLリンク(chomework.sakura.ne.jp)
【wiki】               URLリンク(www23.atwiki.jp)

前スレ
C/C++の宿題を片付けます 115代目
スレリンク(tech板)

970:デフォルトの名無しさん
08/09/30 22:24:22
>>963
ありがとうございます。配列の受け渡しはどのようにすればよいのでしょうか。

971:デフォルトの名無しさん
08/09/30 22:34:48
>>970
何に渡すの?別にmainだけでいいのでは。
というか内部関数作って配列渡そうとするとポインタ使うことになっちゃうよ

諸々を検討して、ああ、void main ってことなんだなって理解してたのに。

972:971
08/09/30 22:36:19
と思ったら配列渡す前提となっていた。
どこを関数化するんですか?

973:デフォルトの名無しさん
08/09/30 23:06:32
>>972
入力した0~9までの個数を*で表示する部分を関数化です。

974:デフォルトの名無しさん
08/09/30 23:21:26
>>973
mainで
show_histogram(histo);
として、

void show_histogram(int *data) {
/* 出力処理 */
}

という関数を作ればよいのではないかな。

975:デフォルトの名無しさん
08/10/01 00:05:23
ポインタを習っていない段階でも

void xxxxx(int data[10]) {
/* 中身 */
}

は習った気がする。

976:デフォルトの名無しさん
08/10/01 00:11:27
>>974
void histogram(int *data){
int histo[10]={0};
int i;
for(i=0;i<10;i++){
while(histo[i]!=0){
printf("*");
histo[i]--;
}
printf("\n");
}
}
int main(void){
int j, a[16];
for(j=0;j<16;j++){
scanf("%d",&a[j]);
}
histogram(a);
return 0;
}
という感じにすればよいのでしょうか。







977:952
08/10/01 00:43:26
>>952の1番目の問題を解いてもらって2番目のsinx + x = 1 のほうの問題をやっていたのですがうまくいきませんでした
for文でまわしても結果がでてこないのとsinxのxはラジアンで扱ったほうがいいのかどうか(どっちでやってもうまくいかなかったんですが)わかりません
どなたかできる方いたら教えていただけないでしょうか?よろしくお願いします
 

978:デフォルトの名無しさん
08/10/01 00:45:22
>>977
double f(double x){
return sin(x)+x-1;
}
として、あとはニュートン法でも二分法でも

979:952
08/10/01 01:19:08
アドバイスありがとうございます。頭悪くて申し訳ないんですが以下のプログラムは何がいけないんでしょうか?全部おかしいですか?
#include <stdio.h>
#include<math.h>

double f(double x){
return sin(x)+x-1;
}

void main(void)
{
double x,z;
for(x=0;x<5;x++){
if(f(x)==0)z=1;
if(z!=0)printf("%d",x);
}
}

980:952
08/10/01 01:22:12
すいませんこっちでした

#include <stdio.h>
#include<math.h>

double f(double x){
return sin(x)+x-1;
}

void main(void)
{
double x,z;
z=0;
for(x=0;x<5;x++){
if(f(x)==0)z=1;
if(z!=0)
{printf("x=%d\n",x);
z=0;
}

}
}

981:デフォルトの名無しさん
08/10/01 01:30:50
>>952

#include <stdio.h>
#include <math.h>


int
main(void)
{
double x = 0.0;

for ( x = 1.0; 1.0E-8 < x; x -= 0.01 ) {
if ( (sin(x)+x-1.0) < 1.0E-8 ) {
printf("x == %f\n", x);
break;
}
}

return 0;
}

982:デフォルトの名無しさん
08/10/01 01:39:01
>>976
>>963 には入力データを配列に詰める処理と、表示処理を書いているんだけど
なぜ >>937 のエッセンスを微妙に混ぜてしまったの?

分からないままとりあえず組み合わせて
> という感じにすればよいのでしょうか。
と締めくくるのは、クマーAAを生むのに必要な技術であって、プログラムを組むには必要ないよ。

983:デフォルトの名無しさん
08/10/01 01:56:40
懐かしいネタがw

void show_histogram(int *data){
int i;
for(i=0;i<10;i++){
while(data[i]!=0){
printf("*");
data[i]--;
}
printf("\n");
}
}
int main(void){
int i, input_value, a[10] = {0};
for(i=0;i<16;i++){
scanf("%d",&input_value);
a[input_value]++;
}
show_histogram(a);
return 0;
}

こうですか!?わかりません!教えてください!
if禁止なので入力チェックは本当にわかりません><

984:デフォルトの名無しさん
08/10/01 07:29:23
次スレ立てました
C/C++の宿題を片付けます 116代目
スレリンク(tech板)

985:946
08/10/01 10:48:55
>>961
ありがとうございました。

986:デフォルトの名無しさん
08/10/01 13:51:59
[1] 授業単元: c++
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
・「年(西暦)」「月」を入力したら,その月のカレンダーを表示するプログラムを作成しなさい。ただし,下記の条件を満たすものとする。

【条件】
(1)カレンダークラスを作成し,main関数でカレンダークラスの実体を生成し,カレンダークラス内のメンバ関数(show関数)を呼び出してカレンダーを表示する。
(2)カレンダークラスはカプセル化されていること。
(3)カレンダー表示には,年,月および曜日,日を表示すること。
(4)上記以外については自由に作成してよい。


[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: VS2008
 [3.3] 言語:C++
[4] 期限: ([2008年10月5日まで]

987:986
08/10/01 13:56:34
もしよければ閏年の表示もお願いします。

988:デフォルトの名無しさん
08/10/01 13:56:54
>>986
>>715-719とかにあった気がする

989:デフォルトの名無しさん
08/10/01 14:39:25
[1] 授業単元: 数理科学C
[2] 問題文: 二分法を用いて√2の近似値を求めるプログラム
[3] 環境
 [3.1] OS: Windows/
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2008年10月2日まで]
[5] その他の制限:特になし

990:デフォルトの名無しさん
08/10/01 15:10:20
>>984
乙!

>>989
#include<stdio.h>
#include<math.h>

double f(double x){
return x*x-2;
}

int main(void){
double a=0.0, b=2.0, x;

while(f(a)*f(b)<0.0){
x=(a+b)/2;
if(f(a)*f(x)<0) b=x;
else a=x;
printf("x=%f f(x)=%f\n", x, f(x));
if(fabs(f(x))<1e-7) break;
}

return 0;
}

>>980
これの関数 f(x) の中身を書き換えればおk

991:デフォルトの名無しさん
08/10/02 16:03:28
質問なのですが、プログラム中に別のプログラムを呼び出す場合は
データをコマンドライン上で受け渡しはできないのでしょうか?
それともtxtデータなどで外部出力したものを読み取るしかないのでしょうか。


992:デフォルトの名無しさん
08/10/02 16:11:49
>>991
LinuxでもWindowsでも引数つきでプログラム起動は出来るだろう


993:デフォルトの名無しさん
08/10/02 16:15:07
引数か標準入力に書き込むか

994:991
08/10/02 16:30:53
調べてみたら標準出力のパイプ処理でうけわたしできるみたいですね。
ありがとうございました。

995:デフォルトの名無しさん
08/10/02 20:05:42
埋めるぜ

996:デフォルトの名無しさん
08/10/02 20:06:28
次スレは >>984

997:デフォルトの名無しさん
08/10/02 20:10:55
オレにとって手ごろな宿題が無くなってきてるな
ストライクゾーンが狭いからしょうがないけど

998:デフォルトの名無しさん
08/10/02 20:23:24
1000取っちゃうぜ?

999:デフォルトの名無しさん
08/10/02 20:24:43
どうぞどうぞ

1000:デフォルトの名無しさん
08/10/02 20:26:11
では遠慮なく

1000ならオレ様勝手にレベルアップ

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


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