C/C++の宿題を片付けます 65代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/05/18(木) 08:24:25【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
C/C++の宿題を片付けます 64代目
http://pc8.2ch.net/test/read.cgi/tech/1146323457/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0153デフォルトの名無しさん
2006/05/22(月) 17:42:58前スレにあったやつ
#include <stdio.h>
char name[256] = {0};
int amount = 0;
void input(void){
float f;
printf("%sさん\n現在の貯金額は,%d円です. \n今回はいくら貯金しますか?(単位:千円):",name,amount);
scanf("%f",&f);
amount += (int)(f*1000);
}
int main(){
printf("名前を入力してください:");
scanf("%s",name);
input();
input();
input();
printf("%sさん.\n全部で%d円貯まりました.\nよくがんばりました.\n",name,amount);
return 0;
}
応用のほうは
printf("%d,%04d\n", amount/10000, amount%10000);
な感じでうまくいくんじゃない、試してないけど
0154デフォルトの名無しさん
2006/05/22(月) 17:58:25ありがとうございます。一度試してみます。
0156デフォルトの名無しさん
2006/05/22(月) 19:17:24105じゃないけどGTKとかどうよ
http://www.gnome.gr.jp/docs/gtk+-2.0.x-tut/gtk-tut.html
0157デフォルトの名無しさん
2006/05/22(月) 20:21:56>>143
テンポラリ変数を二つ使って、成績をキーにして、
番号と成績を同時にひっくり返せばいいだよ。単純なことアル。
for(i=0; i<N-1; i++){
for(j=i+1; j<N; j++)
if(d[4][i]<d[4][j]){
temp1=d[4][i];
temp2 = d[0][i];
d[4][i]=d[4][j];
d[0][i] = d[0][j];
d[4][j]=temp1;
d[0][j] = temp2;
}
}
こんな感じでどうよ?
それにしてもいろいろ問題あるソースじゃな。
0158デフォルトの名無しさん
2006/05/22(月) 20:36:52f*1000のところでエラーがでてしまったんですけど、他に方法あります?
引数を取り込む関数には評価されません。と出ました
0159デフォルトの名無しさん
2006/05/22(月) 20:54:570160billy
2006/05/22(月) 21:18:22単語に分けた上で、第2引数と第3引数のフィールドを入れ替えて出力するプログラムを作成する。
ただし、入れ替えるように指定されたフィールドの一方もしくは両方が存在しなかった場合は
入れ替えを行わないようにする。
実行例:
%cat source
This,is,source.
file,end.
%gcc -o fieldswap kadai.c
%./fieldswap source 2 3
-- Line 1 --
Field 1: This
Field 2: source.
Field 3: is
-- Line 2 --
Field 1: file
Field 2: end.
環境
OS:Linux
コンパイラ名とバージョン:gcc
言語:C
期限: 5/25
0161デフォルトの名無しさん
2006/05/22(月) 21:36:3373 名前:>>22[] 投稿日:2006/05/21(日) 11:43:09
>>22
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1921.txt
1ラインあたりの最大文字数は BUFFER_SIZE-1 な。
74 名前:>>42[sage] 投稿日:2006/05/21(日) 11:46:31
>>71
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1921.txt
1ラインあたりの最大文字数は BUFFER_SIZE-1 な。
0162デフォルトの名無しさん
2006/05/22(月) 22:02:40[2] 問題文(含コード&リンク):電気回路に使われる抵抗の抵抗値は、色と数字が表1のように対応付けられたカラーコード3つで表示されている。
表1
黒 black 0
茶 brown 1
赤 red 2
橙 orange 3
黄 yellow 4
緑 green 5
青 blue 6
紫 purple 7
灰 gray 8
白 white 9
1番めと2番目の色で2桁の数字を表し、3番目の色で10の何乗倍かを表している。例えば、赤(1)黒(0)橙(3)の順に並んでいれば、20×10^3=20000オームを表している。抵抗の3つのカラーコードから抵抗値を計算するプログラムを作りなさい。
*キーボードから3つのカラーコードを入れるとそのコードに対応する抵抗値を出力すること
*キーボードの入力は、表1にまとめられたような色を意味する英単語の文字列が入力されると期待してよい
*出力は整数で表示し、最後に単位「ohm」をつけること。表1に上げられる文字列以外の入力があったときは「Error!」を表示する。
ヒント
*べき乗を求める場合、プログラムの1番上に「#include&Itmath.h>」を入れる。そうするとpow(n,m)を使うことができる。返り値はn^mである
*コンパイルをするとき、-lmをつける。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 明日の午前3時頃まで
手の付けようがなくて困っています。どなたかよろしくお願いします。
0163デフォルトの名無しさん
2006/05/22(月) 22:21:260164デフォルトの名無しさん
2006/05/22(月) 22:27:55[2] 問題文(含コード&リンク):ファイルを読み込ませ文中の文字の数がそれぞれ何個あるか表示するプログラム。
a:○個、あ:○個のように。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 5/23
よろしくお願いします
0165デフォルトの名無しさん
2006/05/22(月) 22:38:55#include <stdio.h>
#include <string.h>
#include <math.h>
enum clr { BLK, BRN, RED, ORG, YLW, GRN, BLU, PRP, GRY, WHT };
struct _ClrList{
char *s;
enum clr c;
};
struct _ClrList clrlist[]={
{"black", BLK},{"brown", BRN},{"red", RED},{"orange", ORG},{"yellow", YLW},
{"green", GRN},{"blue", BLU},{"purple", PRP},{"gray", GRY},{"white", WHT}
};
int searchC(char *s){
int i;
for(i = 0;i < (sizeof(clrlist) / sizeof(clrlist[0])); i++)
if(strcmp(s, clrlist[i].s) == 0)return ((int)clrlist[i].c);
return -1;
}
int main(){
int a[3], d, i;
char buf[255], c[3][10];
fgets(buf, sizeof(buf) - 1, stdin);
sscanf(buf, "%s %s %s", c[0], c[1], c[2]);
for(i = 0;i < 3; i++)if((a[i] = searchC(c[i])) == -1){puts("Error!");return 1;}
printf("%d ohm\n", (a[0] * 10 + a[1]) * (int)pow(10.0, a[2]));
return 0;
}
こんなのしか思いつかんかった
0166デフォルトの名無しさん
2006/05/22(月) 22:42:25[2] 問題文(含コード&リンク):シーザー暗号のプログラムで、平文と何文字ずらすかキーボードから入力すると暗号文を表示する。
変換する文字はアルファベット大文字だけで、ずらす文字数は0〜25字が入力されると仮定する。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 明日朝7時まで
どなたか教えてください。お願いします。
0167デフォルトの名無しさん
2006/05/22(月) 22:57:46#include <stdio.h>
int main()
{
int i, n;
char buf[255];
puts("平文");
scanf("%s", buf);
puts("ずらす");
scanf("%d", &n);
for(i = 0; buf[i] != NULL; i++)if((buf[i] += n) > 'Z')buf[i] = buf[i] - 'Z' + 'A' - 1;
puts("暗号文");
puts(buf);
return 0;
}
至極、適当
0168デフォルトの名無しさん
2006/05/22(月) 23:01:36ありがとうございます。
小文字出力したいときはどのようにプログラムを変えたらいいのですか?
例えば、red blackなどで実行したいのですが。
0169デフォルトの名無しさん
2006/05/22(月) 23:11:160170>>165
2006/05/22(月) 23:13:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1924.txt
遅かったか。
0171170
2006/05/22(月) 23:14:340172デフォルトの名無しさん
2006/05/22(月) 23:24:37[2] 問題文(含コード&リンク):
長くなってしまったので以下にアップロードさせていただきました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1927.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Cygwin
[3.3] 言語: C++
[4] 期限: [2006年5月24日10:00まで]
[5] その他の制限: 問題文に従うこと
途中まで書いたのですが、長さに混乱してしまいにっちのさっちも行かない状態になってしまいました。
どなたかご教示お願いいたします。
0173166
2006/05/22(月) 23:25:37なるほど!やってみます。ありがとうございました。
0174デフォルトの名無しさん
2006/05/22(月) 23:27:11できました!!ありがとうございます。
0176デフォルトの名無しさん
2006/05/22(月) 23:54:54つーかテストプログラムのコンパイルもしてないってどうよ。
0177デフォルトの名無しさん
2006/05/22(月) 23:57:070179デフォルトの名無しさん
2006/05/22(月) 23:58:430180デフォルトの名無しさん
2006/05/23(火) 00:25:57class Setの宣言部分は全部教師が書いたのか?
なんか間違いが散見されるが・・・
しかも明らかにヘッダとして記述するファイルにusing namespace std;書いてるし。
つうかね、学生でこれキッチリ書ける人いたら授業いらんと思う。
0181デフォルトの名無しさん
2006/05/23(火) 01:35:24>>172のをやってみたけど思ったように動かNEEEE
0182デフォルトの名無しさん
2006/05/23(火) 02:19:421,授業単元 基礎プログラミング
2,問題文
(1)キーボードで二つの整数を入力し、それらの和と差を求め、表示するプログラムを作成せよ。
和と差を計算する部分をvoid keisan()のように関数にし、計算した結果をmain関数で表示せよ。
ただし、関数keisan()の型名がvoidであることと、引数をもたないことに注意せよ。
ヒント:外部変数を使う。
0183デフォルトの名無しさん
2006/05/23(火) 02:20:57実行結果を参照の上、関数void printTable()を補足せよ。
#include<stdio.h>
int max=10;
void printTable(int m,int n)
{
/*この部分を補足せよ*/
}
int main(void)
{
int i,j;
for(i=0;i<max;i++)
for(j=0;i<max;j++)
printTable(i,j);
return 0;
}
[実行結果]
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
0 2 4 6 8 10 12 14 16 18
0 3 6 9 12 15 18 21 24 27
0 4 8 12 16 20 24 28 32 36
0 5 10 15 20 25 30 35 40 45
0 6 12 18 24 30 36 42 48 54
0 7 14 21 28 35 42 49 56 63
0 8 16 24 32 40 48 56 64 72
0 9 18 27 36 45 54 63 72 81
よろしくお願いします
0184デフォルトの名無しさん
2006/05/23(火) 02:26:03GTKか。名前は聞いたことあるが細かいことは知らなかったな
ちょっと見てみる、わざわざサンクス
0185デフォルトの名無しさん
2006/05/23(火) 03:06:29for(j=0;i<max;j++) //ナイス引っかけ
0186デフォルトの名無しさん
2006/05/23(火) 04:17:46ろだの使い方がわからなくて向こうにコメントつけてしもた
0187デフォルトの名無しさん
2006/05/23(火) 05:11:51#include <stdio.h>
int a,b,wa,sa;
void keisan()
{
wa=a+b;
sa=a-b;
}
int main()
{
scanf("%d",&a);
scanf("%d",&b);
keisan();
printf("%d\n%d\n",wa,sa);
return 0;
}
0188デフォルトの名無しさん
2006/05/23(火) 05:17:05void printTable(int m,int n)
{
printf("%2d ",m*n);
if (n==max-1)
printf("\n");
}
0189172
2006/05/23(火) 12:16:53クラス宣言の部分は全部書いてありました。
問い合わせたところ、間違いがあった場合直してもかまわないとのことです。
0190172
2006/05/23(火) 12:21:13ありがとうございます。
授業3回ごとに教師が変わるんですが、2人目の先生はちょっとアバウトみたいです。
授業以外の予備知識がまったく無いので困ってました。
0192デフォルトの名無しさん
2006/05/23(火) 16:21:52[2] 問題文(含コード&リンク):条件分岐(出力の制御)
西暦(1926年以降)を入力すると年号を表示するプログラミングを作成しなさい(例えば2000と入力すると平成12年と表示する)
西暦と年号の対応は次のとおり
平成:1989- 昭和:1926-1989
なお、1989年は平成1年とする(昭和63年としない)
[3] 環境
[3.1] OS: WinXPhome
[3.2] コンパイラ名とバージョン: 分かりません、lcc.batなるものを使ってコンパイルしてます
[3.3] 言語: 多分C?
[4] 期限: あと90分でできたら…
[5] その他の制限: 授業開始してまだ3〜4回目程度なので高度なことはしないと思いますが…
intとscanとかいうのを使うとは思うんですが、いまいち分からなくて
0193デフォルトの名無しさん
2006/05/23(火) 16:38:46# include <stdio.h>
int main(void)
{
int year;
scanf("%d", &year);
if(year >= 1989)
printf("平成%d年\n", year - 1988);
else
printf("昭和%d年\n", year - 1925);
return 0;
}
0194デフォルトの名無しさん
2006/05/23(火) 16:43:51素早いレスありがとうございます
あとはprintfでちょこちょこっといじってみます
0195デフォルトの名無しさん
2006/05/23(火) 16:49:04漏れはどうしても気になってしまう
0196デフォルトの名無しさん
2006/05/23(火) 17:17:39そんな流れでも無しに、更にお前の意見は誰も聞いてないよ。
0197デフォルトの名無しさん
2006/05/23(火) 17:22:59逝っておくがな、今まで俺に喧嘩を売ってきた香具師はな・・・
みな自信を付けて帰ってったぜ?
0198デフォルトの名無しさん
2006/05/23(火) 17:27:39[2] 問題文(含コード&リンク):再帰関数を利用して、フィボナッチ数列を生成するプログラムを作成せよ。
ただし、生成するフィボナッチ数列の要素数をキーボードから入力する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語:どちらでも可
[4] 期限:明日まで
[5] その他の制限:
初心者で 全く分からないので、お願いします!
0199billy
2006/05/23(火) 17:49:14[2] 問題文(含コード&リンク):
145614,Koichi Fujita,MUSIC
145615,Hitoshi Mori,READING
145616,Yutaka Mizuta,PROGRAMMING
というCSVファイルを作っておき
実行例:
%gcc -o retrieval retriveal.c
%./retrieval student.csv
Enter your question :
> 145615 name
The name of No. 145615 is "Hitoshi Mori".
Enter your question:
>
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年5月24日
[5] その他の制限: 構造体を使う
0200デフォルトの名無しさん
2006/05/23(火) 17:59:05俺は空白を入れないほうがよっぽど気になる。
0201デフォルトの名無しさん
2006/05/23(火) 18:09:12#include <stdio.h>
int f(int n){
int x;
if(n == 0) x = 0;
else if(n == 1) x = 1;
else x = f(n - 1) + f(n - 2);
return x;
}
int main(){
int n;
printf("要素数 = ");
scanf("%d", &n);
printf("%d : %d\n", n, f(n));
return 0;
}
0202緊急です!
2006/05/23(火) 18:12:27[2] 問題文:実数x、整数nを入力し、項数nの級数展開によりcosxを求めよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ 6.0
[3.3] 言語: C言語で
[4] 期限: 2006年5月24日11:30まで(明日の昼前までです・・)
[5] その他の制限: (まだ4回目で基本的なことしかやっていません。for文while文などでお願いします。。
0203デフォルトの名無しさん
2006/05/23(火) 18:15:31[2] 問題文:
最初に
1:sinwt
2:coswt
という画面を表示させて選んだ番号の三角関数の計算をさせるプログラムを
作りなさい
OS:WindowsXP
期限:明日まで
三角関数の計算はさせることができるので、
1:sinwt
2:coswt
という画面を表示させて、選んだ番号の計算をさせるところまでをお願いします
0204デフォルトの名無しさん
2006/05/23(火) 18:20:50#include <stdio.h>
int main()
{
char ch;
puts("1:sinwt");
puts("2:coswt");
ch = getchar();
switch(ch){
case '1':
//sinwt
break;
case '2':
//coswt
break;
}
return 0;
}
こんな感じ?
0205デフォルトの名無しさん
2006/05/23(火) 18:47:02ありがとうございます
なんとか、頑張ってみます
0206デフォルトの名無しさん
2006/05/23(火) 18:51:58getsでstrcmpでもいいんじゃないのかなとか思ったり
0207デフォルトの名無しさん
2006/05/23(火) 18:52:47#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct _data{int _no;char _name[20];char _hobby[20];};
int main(int argc, char *argv[]){
int i = 0, no, busy = 1;char buf[0xff], com[10];char *p;FILE *fp;struct _data data[10];
if((fp = fopen(argv[1], "r")) == NULL)return 1;
while(fgets(buf, sizeof(buf) - 1, fp) != NULL){
p = strtok( buf, "," );data[i]._no = atoi(p);
p = strtok(NULL,",");strcpy(data[i]._name, p);
p = strtok(NULL,",");strcpy(data[i]._hobby, p);
i++;
}
while(1){
puts("Enter your question :");fgets(buf, sizeof(buf) - 1, stdin);sscanf(buf, "%d %s", &no, com);
switch(com[0]){
case 'n':
if(strcmp(com, "name") != 0)break;
for(int j = 0; j < i; j++)if(no == data[j]._no)printf("the name of %d is \"%s\"\n", data[j]._no, data[j]._name);
break;
case 'h':
if(strcmp(com, "hobby") != 0)break;
for(int j = 0; j < i; j++)if(no == data[j]._no)printf("the hobby of %d is \"%s\"\n", data[j]._no, data[j]._hobby);
break;
}
}
fclose(fp);return 0;
}
0208デフォルトの名無しさん
2006/05/23(火) 19:03:59[2]問題文(含コード&リンク):
e=a+b*c+d;とe=(a+b)*c+d;は異なる。
前の式に演算子の優先順位や結合規則を考えて、あえてカッコをつけると
(e=((a+(b*c))+d));となる。
式e=d=a-b+c+b*(a+c)/a;
を実行した後のd,eの値を表示するプログラムを作成してください。
変数は全てint型で、a,b,cの初期値は、それぞれ10、20、30とする。
演算子の優先順位や結合規則を考えて、計算する順に全部あえてカッコをつけて下さい。
そしてカッコをつけないときと結果が同じになることを確認して下さい。
(注)カッコが多いと見づらくなるので、普通は必要のないカッコは書きません。
次のようにする。
a,b,cの初期値を設定してから
e=d=a-b+c+b*(a+c)/a;
printf("d=%d", "e=%d\n", d, e); ・・・�@
e=d=a-b+c+b*(a+c)/a; ・・・左の式に全部カッコをつける
printf("d=%d", "e=%d\n", d,e); ・・・�A
�@と�Aの結果が同じになることを確認してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0209デフォルトの名無しさん
2006/05/23(火) 19:13:40ただし小数の場合も含む。
↑この難問解けるやつはいるか?無理だろぉ!?
0210デフォルトの名無しさん
2006/05/23(火) 19:23:06int main(void){
int a,b,?;
for(a=1;a<=?;?){
for(b=1;b<=?;?){
d = a*b;
printf("%4d",?);
}
printf("?");
}
return(0);
}
0211210です
2006/05/23(火) 19:24:01#include <stdio.h>
int main(void){
int a,b,?;
for(a=1;a<=?;?){
for(b=1;b<=?;?){
d = a*b;
printf("%4d",?);
}
printf("?");
}
return(0);
}
0212若葉マーク
2006/05/23(火) 19:38:510213210です
2006/05/23(火) 19:40:300214デフォルトの名無しさん
2006/05/23(火) 19:46:15int main(void){
int a,b,d;
for(a=1;a<=9;a++){
for(b=1;b<=9;b++){
d = a*b;
printf("%4d",d);
}
printf("\n");
}
return(0);
}
0215209
2006/05/23(火) 19:56:150216デフォルトの名無しさん
2006/05/23(火) 19:58:17[2]問題文(含コード&リンク):
製品数(lot)と、そのうちの不良品数(substandard)を読み込み、良品が製品全体の何パーセント
(stdPercent)か計算し、表示して下さい。製品数(lot)と、その不良品数(substandard)はint型で、パーセント
(stdPercent)はdouble型で、表示は小数部2桁までとして下さい。
(double型の値を、少数第2位まで表示するには、printfの変換書式で、%.2fとする。)
(注)定数で、0はint型、0,0はdouble型になります。
この課題ではパーセント計算で100.0を使ってください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0217デフォルトの名無しさん
2006/05/23(火) 20:04:11学校で出された問題なんですが、全然分かりません。
C言語を習ってまだ1週間なのでドドド素人です。
助けてくださいm(_ _)m
入力ファイルから100個のデータを取り込み、その平均、分散、標準偏差を
求めよ。
さらにその結果を出力ファイルに格納するプログラムを作成せよ。
0218デフォルトの名無しさん
2006/05/23(火) 20:04:29■提出日:5月24日0時0分
■プログラム作成及びコンパイラ:Visual Stdio.NET2003
■OS:Windows XP
■課題内容:
Prog33.c を、stat を使わずに、メモリに全てのレコードを読み込んでからソートして
保存するように変更せよ。
※ソースが長いのでUPしました。
【プログラム】
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1930.txt
よろしくお願いいたします。
0219デフォルトの名無しさん
2006/05/23(火) 20:06:59女だろうが爺だろうが>>1も読まない奴には答えが出ない
0220デフォルトの名無しさん
2006/05/23(火) 20:07:50int main(void){
int lot, substandard;
puts("製品数");
scanf("%d", &lot);
puts("不良品数");
scanf("%d", &substandard);
double stdPercen = (double)(lot - substandard) / lot * 100.0;
printf("良品は全体の%.2f%%\n", stdPercen);
return 0;
}
0221 ◆4xnaa3pj4A
2006/05/23(火) 20:13:30[2] 問題文(含コード&リンク):
入力ファイルから100個のデータを取り込み、その平均、分散、標準偏差を
求めよ。
さらにその結果を出力ファイルに格納するプログラムを作成せよ。
[3] 環境
[3.1] OS:Unix
[3.2] コンパイラ:gcc (詳しいことは分かりません)
[3.3] 言語:C言語
[4] 期限:無期限ですが早い方が...
[5] その他の制限:全くの素人です
すいませんでした
0222デフォルトの名無しさん
2006/05/23(火) 20:30:09エラーがでまくるんですが・・・
0223デフォルトの名無しさん
2006/05/23(火) 20:30:44#include <stdio.h>
#include <math.h>
int main(void){
double a, s= 0.0, s2 = 0.0, v, o;
FILE *fp;
if((fp = fopen("in.txt", "r")) == NULL)return 1;
for(int i = 0; i < 100; i++){
fscanf(fp, "%lf", &a);
s += a;
s2 += a * a;
}
s /= 100;
s2 /= 100;
v = s2 - s;
o = sqrt(v);
fclose(fp);
if((fp = fopen("out.txt", "w")) == NULL)return 1;
fprintf(fp, "平均%f\n", s);
fprintf(fp, "分散%f\n", v);
fprintf(fp, "標準偏差%f\n", o);
fclose(fp);
return 0;
}
分散求めるのが多少怪しいけど…
0224デフォルトの名無しさん
2006/05/23(火) 20:31:50どうせ、#include <stdio.h>してないってオチだろ
0225デフォルトの名無しさん
2006/05/23(火) 20:33:40いやそれしても
9行目ここでは宣言できない関数ってでる
0226デフォルトの名無しさん
2006/05/23(火) 20:36:36double stdPercen;
をintの下にでも加えて
double stdPercen = (double)(lot - substandard) / lot * 100.0;
を
stdPercen = (double)(lot - substandard) / lot * 100.0;
って書き直せばできるんじゃね
0227デフォルトの名無しさん
2006/05/23(火) 20:37:13たぶんあってると思う。。。
#include <stdio.h>
int main(void){
double x,xx,y,m;
int i,n;
scanf("%lf %d",&x ,&n);
xx = m = y = 1;
for(i = 1; i < n; i++){
xx *= (-1) * x * x;
m *= (double) (2 * i) * (2 * i - 1);
y += xx / m;
}
printf("%.15f\n",y);
return 0;
}
0228デフォルトの名無しさん
2006/05/23(火) 20:48:11できました。サンクスコ
0229デフォルトの名無しさん
2006/05/23(火) 20:53:28[2]問題文(含コード&リンク):
2つの正の実数値(a,b)を読み込み、その商(div)を整数値で求め、余り
(mod)を実数値で求め、表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0230デフォルトの名無しさん
2006/05/23(火) 20:56:32[2]問題文(含コード&リンク):
正の実数値を読み込んで、その値の少数第1位を四捨五入した整数値を求め、
表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0231デフォルトの名無しさん
2006/05/23(火) 21:09:11#include <stdio.h>
int main(void){
double x;
scanf("%lf", &x);
printf("%d\n", (int)(x+0.5));
return 0;
}
こんなんでおkだったきがする
0232デフォルトの名無しさん
2006/05/23(火) 21:15:31[2]問題文(含コード&リンク):
金額(price)を整数値で読み込み、その金額に対する消費税額(tax)を整数値で求め、
消費税額と消費税込み金額を表示してください。消費税率は5%とする。
(消費税額は、0,05を掛けて求める。)
消費税額は、少数第1位を四捨五入するものとする。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0233デフォルトの名無しさん
2006/05/23(火) 21:21:46#include<stdio.h>
int main(){
int price,tax;
printf("price? ");scanf("%d",&price);
tax = price / 20;
printf("price = %d\ntax = %d\ntotal = %d\n",price,tax,price+tax);
}
0234デフォルトの名無しさん
2006/05/23(火) 21:25:54理論的におかしなところはありますか?
#include<stdio.h>
#include<math.h>
int main(){
doubled, ans, divide;
int i, j = 0;
char s[256];
scanf("%lf", &d);
for (i = -1; i > -10; i--) {
divide = pow(2, i);
ans = d / divide;
if (ans >= 1) {
s[j] = '1';
d = d - divide;
}
else {
s[j] = '0';
}
j++;
}
s[j] = '\0';
printf("%s\n", s);
return 0;
}
0235デフォルトの名無しさん
2006/05/23(火) 21:28:32[2]問題文(含コード&リンク):
整数値を2つ(a,b)読み込み、a,bが格納している値を交換して、結果を表示してください。
例:input a b:10 20
交換前a:10, b:20
交換後a:20, b:10
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0236デフォルトの名無しさん
2006/05/23(火) 21:31:44[2]問題文(含コード&リンク):
int 型の値の最大値と、それに1を足した値を10進数と16進数で表示してください。
-2147483648を初期値としたとき、waring(警告)メッセージがでた場合は、
n = -2147483648 -1などとしてください
消費税額は、少数第1位を四捨五入するものとする。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0237デフォルトの名無しさん
2006/05/23(火) 21:36:150238デフォルトの名無しさん
2006/05/23(火) 21:36:56消費税額ってなんだよ。
0239237
2006/05/23(火) 21:37:50>>229 こんなんでどうですか?
#include <stdio.h>
#include<math.h>
int main(void){
double a, b, mod;
int div;
scanf("%lf", &a);
scanf("%lf", &b);
mod = fmod(a, b);
div = (int)(a / b);
printf("div:%d, mod:%lf\n", div, mod);
return 0;
}
0240デフォルトの名無しさん
2006/05/23(火) 21:38:3210進小数から2進小数の変換は確か倍々ゲームするんだっけか
まあどっちにしろ>>1を読まない奴は氏ねばいいし
そもそもここはお前の添削スレじゃない
0241デフォルトの名無しさん
2006/05/23(火) 21:59:43#include<math.h>
はまだ習ってないので使えないと思います。すいません。
0242デフォルトの名無しさん
2006/05/23(火) 22:00:48[1]授業単元:演習
[2]問題文(含コード&リンク):
int 型の値の最大値と、それに1を足した値を10進数と16進数で表示してください。
-2147483648を初期値としたとき、waring(警告)メッセージがでた場合は、
n = -2147483648 -1などとしてください
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
消し忘れた。
0243デフォルトの名無しさん
2006/05/23(火) 22:04:04プログラムだけでは分かりにくいと思ったので、
Visual Stdio.NET2003で作られるプロジェクトフォルダをUPしました。
(Prog33)この中に、プログラムなどが入っています。
http://www.uploda.org/uporg398554.zip.html
よろしくお願いします。
0244デフォルトの名無しさん
2006/05/23(火) 22:05:29#include <stdio.h>
int main(void){
double a, b;
puts("a=");
scanf("%lf", &a);
puts("b=");
scanf("%lf", &b);
printf("a = %f, b = %f\n", a, b);
printf("b div a = %d\n", (int)(b / a));
printf("b mod a = %f\n", b - (int)(b / a) * a);
return 0;
}
0245デフォルトの名無しさん
2006/05/23(火) 22:09:51#include <stdio.h>
#include <limits.h>
int main(void){
puts("int型の最大");
printf("%d\n", INT_MAX);
printf("%x\n", INT_MAX);
puts("+1");
printf("%d\n", INT_MAX + 1);
printf("%x\n", INT_MAX + 1);
}
0246デフォルトの名無しさん
2006/05/23(火) 22:13:11ちょくちょくそういうの見るが、そもそもヘッダで習うとか習わないとかって物じゃないと思うがな
0247デフォルトの名無しさん
2006/05/23(火) 22:13:13#include <limits.h>とかは習ってないので使えないっぽいです。
int_MAX+1とかのあたりもおそらく
そこらへん最初に制限書けなくてすいませんです。
0248デフォルトの名無しさん
2006/05/23(火) 22:14:25あint maxは短くしただけだからおkだ。
ヘッダとか用語がまず解らないし
0249デフォルトの名無しさん
2006/05/23(火) 22:23:15[2]問題文(含コード&リンク):
月(month)を読み込み、範囲チェックをして下さい。月が1〜12の範囲なら、"正しい月"
、1〜12意外なら"誤った月"と表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:論理積演算子(&&)、
論理和演算子(||)を使わないで下さい。
0250デフォルトの名無しさん
2006/05/23(火) 22:30:41#include <stdio.h>
int main(){
int month;
puts("何月?");
scanf("%d", &month);
switch(month){
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
puts("正しい月");
break;
default:
puts("誤った月");
}
}
0251デフォルトの名無しさん
2006/05/23(火) 22:32:510252デフォルトの名無しさん
2006/05/23(火) 22:35:49[2]問題文(含コード&リンク):
月(month)を読み込み、範囲チェックをして下さい。月が1〜12の範囲なら、"正しい月"
、1〜12意外なら"誤った月"と表示してください。
論理演算子を使ってください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
■ このスレッドは過去ログ倉庫に格納されています