トップページ⇒tech
1001コメント441KB

C/C++の宿題を片付けます 65代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/05/18(木) 08:24:25
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
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
>>152
前スレにあったやつ
#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
>>153
ありがとうございます。一度試してみます。
0155532006/05/22(月) 17:59:05
>>55
Thanks
0156デフォルトの名無しさん2006/05/22(月) 19:17:24
>>139
105じゃないけど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:52
>>153
f*1000のところでエラーがでてしまったんですけど、他に方法あります?
引数を取り込む関数には評価されません。と出ました
0159デフォルトの名無しさん2006/05/22(月) 20:54:57
.net2003と2005で試したけど、エラー出ない…
0160billy2006/05/22(月) 21:18:22
問題文(含コード&リンク): 第1引数のファイルに含まれる文字列をカンマを区切りとして
単語に分けた上で、第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:33
>>160
73 名前:>>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
1] 授業単元:プログラミング演習
[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:26
多分>>152と同じ大学だと思うが、void input(void)なんて習って無いんじゃないかな?
0164デフォルトの名無しさん2006/05/22(月) 22:27:55
[1] 授業単元: プログラミング
[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
>>162
#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
[1] 授業単元:プログラミング
[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
>>166
#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
>>165
ありがとうございます。
小文字出力したいときはどのようにプログラムを変えたらいいのですか?
例えば、red blackなどで実行したいのですが。
0169デフォルトの名無しさん2006/05/22(月) 23:11:16
すればいいじゃん
0170>>1652006/05/22(月) 23:13:28
>>165
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1924.txt
遅かったか。
01711702006/05/22(月) 23:14:34
リンクミスった162の間違い。
0172デフォルトの名無しさん2006/05/22(月) 23:24:37
1] 授業単元: 上級プログラミング
[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] その他の制限: 問題文に従うこと

途中まで書いたのですが、長さに混乱してしまいにっちのさっちも行かない状態になってしまいました。
どなたかご教示お願いいたします。
01731662006/05/22(月) 23:25:37
>>167
なるほど!やってみます。ありがとうございました。
0174デフォルトの名無しさん2006/05/22(月) 23:27:11
>>170さん
できました!!ありがとうございます。
01751342006/05/22(月) 23:50:02
>>134です。

どなたか教えて貰えないでしょうか。
宜しくお願いします・・・
0176デフォルトの名無しさん2006/05/22(月) 23:54:54
前進消去のとこ抜けがあるみたいだけどそれ以外はエラー修正でいけるみたいよ。
つーかテストプログラムのコンパイルもしてないってどうよ。
0177デフォルトの名無しさん2006/05/22(月) 23:57:07
個人的にはポインタを配列にしてるのが気持ち悪い。
01781342006/05/22(月) 23:58:39
>>176
家のPCではコンパイル出来ないので申し訳ありません。
明日の朝一で大学にいってやる予定でしたので。。。
0179デフォルトの名無しさん2006/05/22(月) 23:58:43
どこのこと?
0180デフォルトの名無しさん2006/05/23(火) 00:25:57
>>172
class Setの宣言部分は全部教師が書いたのか?
なんか間違いが散見されるが・・・
しかも明らかにヘッダとして記述するファイルにusing namespace std;書いてるし。
つうかね、学生でこれキッチリ書ける人いたら授業いらんと思う。
0181デフォルトの名無しさん2006/05/23(火) 01:35:24
c++にそろそろ乗り換えようと思って
>>172のをやってみたけど思ったように動かNEEEE
0182デフォルトの名無しさん2006/05/23(火) 02:19:42
内容:
1,授業単元 基礎プログラミング
2,問題文
(1)キーボードで二つの整数を入力し、それらの和と差を求め、表示するプログラムを作成せよ。
和と差を計算する部分をvoid keisan()のように関数にし、計算した結果をmain関数で表示せよ。
ただし、関数keisan()の型名がvoidであることと、引数をもたないことに注意せよ。
ヒント:外部変数を使う。
0183デフォルトの名無しさん2006/05/23(火) 02:20:57
(2)次のプログラムを実行すると、10×10の行列が出力される。
実行結果を参照の上、関数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:03
>>156
GTKか。名前は聞いたことあるが細かいことは知らなかったな
ちょっと見てみる、わざわざサンクス
0185デフォルトの名無しさん2006/05/23(火) 03:06:29
>183
for(j=0;i<max;j++) //ナイス引っかけ
0186デフォルトの名無しさん2006/05/23(火) 04:17:46
>>172
ろだの使い方がわからなくて向こうにコメントつけてしもた
0187デフォルトの名無しさん2006/05/23(火) 05:11:51
>>182
#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:05
>>183
void printTable(int m,int n)
{
    printf("%2d ",m*n);
    if (n==max-1)
        printf("\n");
}
01891722006/05/23(火) 12:16:53
>>180
クラス宣言の部分は全部書いてありました。
問い合わせたところ、間違いがあった場合直してもかまわないとのことです。
01901722006/05/23(火) 12:21:13
>>186
ありがとうございます。
授業3回ごとに教師が変わるんですが、2人目の先生はちょっとアバウトみたいです。
授業以外の予備知識がまったく無いので困ってました。
01911862006/05/23(火) 15:19:35
>>190
ごめん出力のとこ間違ってた。
coutを全部foutに置換して。ってもう提出しちゃった?
0192デフォルトの名無しさん2006/05/23(火) 16:21:52
[1] 授業単元:プログラミング実習
[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
>>192
# 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
>>193
素早いレスありがとうございます
あとは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
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):再帰関数を利用して、フィボナッチ数列を生成するプログラムを作成せよ。
ただし、生成するフィボナッチ数列の要素数をキーボードから入力する。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:どちらでも可
[4] 期限:明日まで
[5] その他の制限:

初心者で 全く分からないので、お願いします!
0199billy2006/05/23(火) 17:49:14
[1] 授業単元: 演習
[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
>>195
俺は空白を入れないほうがよっぽど気になる。
0201デフォルトの名無しさん2006/05/23(火) 18:09:12
>>198
#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
[1] 授業単元:プログラミング入門

[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
[1] 授業単元: 演習
[2] 問題文:
最初に
1:sinwt
2:coswt
という画面を表示させて選んだ番号の三角関数の計算をさせるプログラムを
作りなさい
OS:WindowsXP
期限:明日まで

三角関数の計算はさせることができるので、
1:sinwt
2:coswt
という画面を表示させて、選んだ番号の計算をさせるところまでをお願いします
0204デフォルトの名無しさん2006/05/23(火) 18:20:50
>>203
#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
>>204
ありがとうございます
なんとか、頑張ってみます
0206デフォルトの名無しさん2006/05/23(火) 18:51:58
getcharでいいのか。
getsでstrcmpでもいいんじゃないのかなとか思ったり
0207デフォルトの名無しさん2006/05/23(火) 18:52:47
>>199
#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
[1]授業単元:演習
[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
10進数を2進数(16bit)に量子化せよ。
ただし小数の場合も含む。

↑この難問解けるやつはいるか?無理だろぉ!?
0210デフォルトの名無しさん2006/05/23(火) 19:23:06
#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);
}
0211210です2006/05/23(火) 19:24:01
>>210と同じ結果に出力するにはどうすればいいですか?
#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:51
この?には何が入るんですか?
0213210です2006/05/23(火) 19:40:30
?には何かしらのプログラムをいれるのですが…
0214デフォルトの名無しさん2006/05/23(火) 19:46:15
#include <stdio.h>

int 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);
}
02152092006/05/23(火) 19:56:15
小数クリアー出来てないし、量子化の意味間違えてませんか?
0216デフォルトの名無しさん2006/05/23(火) 19:58:17
[1]授業単元:演習
[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
初めて2chに入ってみました。ここは女の子も来ていいんでしょうか?
学校で出された問題なんですが、全然分かりません。
C言語を習ってまだ1週間なのでドドド素人です。
助けてくださいm(_ _)m


入力ファイルから100個のデータを取り込み、その平均、分散、標準偏差を
求めよ。
さらにその結果を出力ファイルに格納するプログラムを作成せよ。
0218デフォルトの名無しさん2006/05/23(火) 20:04:29
■授業:プログラミング C
■提出日: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
>>217
女だろうが爺だろうが>>1も読まない奴には答えが出ない
0220デフォルトの名無しさん2006/05/23(火) 20:07:50
>>216
int 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
[1] 授業:プログラミング
[2] 問題文(含コード&リンク):
入力ファイルから100個のデータを取り込み、その平均、分散、標準偏差を
求めよ。
さらにその結果を出力ファイルに格納するプログラムを作成せよ。

[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ:gcc (詳しいことは分かりません)
 [3.3] 言語:C言語
[4] 期限:無期限ですが早い方が...
[5] その他の制限:全くの素人です

すいませんでした
0222デフォルトの名無しさん2006/05/23(火) 20:30:09
>>220
エラーがでまくるんですが・・・
0223デフォルトの名無しさん2006/05/23(火) 20:30:44
>>221
#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
>>222
どうせ、#include <stdio.h>してないってオチだろ
0225デフォルトの名無しさん2006/05/23(火) 20:33:40
>>224
いやそれしても
9行目ここでは宣言できない関数ってでる
0226デフォルトの名無しさん2006/05/23(火) 20:36:36
どっから数えて9行目w
double stdPercen;
をintの下にでも加えて
double stdPercen = (double)(lot - substandard) / lot * 100.0;
を
stdPercen = (double)(lot - substandard) / lot * 100.0;
って書き直せばできるんじゃね
0227デフォルトの名無しさん2006/05/23(火) 20:37:13
>>202
たぶんあってると思う。。。
#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
>>226
できました。サンクスコ
0229デフォルトの名無しさん2006/05/23(火) 20:53:28
[1]授業単元:演習
[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
[1]授業単元:演習
[2]問題文(含コード&リンク):
正の実数値を読み込んで、その値の少数第1位を四捨五入した整数値を求め、
表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0231デフォルトの名無しさん2006/05/23(火) 21:09:11
>>230
#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
[1]授業単元:演習
[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
>>232
#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
0以上1以下の10進数を2進数にするプログラムを作ってみました。
理論的におかしなところはありますか?

#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
[1]授業単元:演習
[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
[1]授業単元:演習
[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:15
>>229 こんなん?
0238デフォルトの名無しさん2006/05/23(火) 21:36:56
>>236
消費税額ってなんだよ。
02392372006/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:32
>>234
10進小数から2進小数の変換は確か倍々ゲームするんだっけか
まあどっちにしろ>>1を読まない奴は氏ねばいいし
そもそもここはお前の添削スレじゃない
0241デフォルトの名無しさん2006/05/23(火) 21:59:43
>>239
#include<math.h>
はまだ習ってないので使えないと思います。すいません。
0242デフォルトの名無しさん2006/05/23(火) 22:00:48
>>238
[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
>>218 です。
プログラムだけでは分かりにくいと思ったので、
Visual Stdio.NET2003で作られるプロジェクトフォルダをUPしました。
(Prog33)この中に、プログラムなどが入っています。
http://www.uploda.org/uporg398554.zip.html

よろしくお願いします。
0244デフォルトの名無しさん2006/05/23(火) 22:05:29
>>229
#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
>>242
#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
>>241
ちょくちょくそういうの見るが、そもそもヘッダで習うとか習わないとかって物じゃないと思うがな
0247デフォルトの名無しさん2006/05/23(火) 22:13:13
>>245
#include <limits.h>とかは習ってないので使えないっぽいです。
int_MAX+1とかのあたりもおそらく
そこらへん最初に制限書けなくてすいませんです。
0248デフォルトの名無しさん2006/05/23(火) 22:14:25
>>247
あint maxは短くしただけだからおkだ。
ヘッダとか用語がまず解らないし
0249デフォルトの名無しさん2006/05/23(火) 22:23:15
[1]授業単元:演習
[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
>>249
#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:51
この時期の問題は面白くないのばかりじゃのう
0252デフォルトの名無しさん2006/05/23(火) 22:35:49
[1]授業単元:演習
[2]問題文(含コード&リンク):
月(month)を読み込み、範囲チェックをして下さい。月が1〜12の範囲なら、"正しい月"
、1〜12意外なら"誤った月"と表示してください。
論理演算子を使ってください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
■ このスレッドは過去ログ倉庫に格納されています