C/C++の宿題片付けま ..
133:デフォルトの名無しさん
09/06/28 10:36:59
>>132
こんな感じでよいか?
#include<stdio.h>
void yakubun(int*a,int*b){
int x=*a,y=*b,z;
while(y){z=x%y;x=y;y=z;}
*a/=x;*b/=x;
if(*a<0)*a=-*a,*b=-*b;
}
void bunnsuwa(int*a,int*b,int*c,int*d){
*b=*b**c+*a**d;*a*=*c;
}
int main(){
int a=!0,b=0,c,d,i;
for(i=1;i<4;i++){
for(;;puts("やりなおせ")){
printf("%dつ目の 分子 分母 = ",i);scanf("%d%d",&d,&c);
if(c)break;
}
bunnsuwa(&a,&b,&c,&d);
yakubun(&a,&b);
printf("合計 = %d",b);
if(a>1&&b!=0)printf(" / %d",a);
puts("");
}
return 0;
}
134:デフォルトの名無しさん
09/06/28 10:37:30
[1] 授業単元: C言語
[2] 問題文:
(1) 整数と4つの演算子(+, -, *, /)とカッコ ( ) から
成る計算式の文字列から計算木を作成する関数を作れ。
ただし、再帰は使ってはならない。
(2) 整数と4つの演算子(+, -, *, /)から成る計算木から
計算式の文字列を作成する関数を作れ。優先順位に注意
して、必要な箇所をカッコ ( ) でくくれ。ただし、
再帰は使ってはならない。
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] C言語
[4] 期限:6/30
お願いします。
135:93
09/06/28 11:15:59
>>129
本当にわからなくて>>95のが与えられてもよくわかりませんでした。
すいませんがせめて>>95のどれを見たらわかるかだけでも教えていただけないでしょうか?
136:デフォルトの名無しさん
09/06/28 11:41:43
>>132
一応やってみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
137:デフォルトの名無しさん
09/06/28 13:36:16
[1] 授業単元:数理物理
[2] 問題文(含コード&リンク):URLリンク(www.mns.kyutech.ac.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:どちらでも可
[4] 期限:6/30まで
[5] ヒントのプログラムから最後のprintfのところのxのあたいがよくわからないのでよろしくお願いします。
138: ◆/91kCCQXBo
09/06/28 13:41:47
>>132 >>136のGCDを参考にした。
3個の分数の和は、分数の和+1個の分数の和が題意だと解釈してみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
139:デフォルトの名無しさん
09/06/28 14:02:12
>>133 >>136 >>138
ありがとうございました!とても参考になりました。
140:デフォルトの名無しさん
09/06/28 14:15:05
>>87
答えてくださってありがとうございます。しかし、これを実行してみたら、フォネティックコード
化はちゃんとなっているんですけど、入力→フォネティックコード化→入力・・・・とずっと続
いてしまいます。
ポインタとファイルだけは何がどうなっているのかさっぱりわからないので自分で修正する
こともできなくて・・・。修正よろしくおねがいします。
141:デフォルトの名無しさん
09/06/28 14:48:24
>>96
遅くなりましたが、ありがとうございます。
142:デフォルトの名無しさん
09/06/28 15:16:05
>>137
xは微分方程式を解いたときのx(t)の値だと思う
double func(double x, double v, double t) {
return (-x-v*v*v+1+cos(t));
}
に変えるだけでいいんじゃないかな
143:デフォルトの名無しさん
09/06/28 15:23:56
>>140
こうかな?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
144:143
09/06/28 15:30:17
while((moji=getchar())!=EOF){
if(isalpha(moji)){
printf("%s", code[tolower(moji)-'a']);
}else{
if (moji == ']')
break;
putchar(moji);
}
}
前のだと無駄に ] を出力しちゃうのでこっちの方で。
145:デフォルトの名無しさん
09/06/28 16:04:07
>>144
if (moji == '\n') // 改行で終わる(笑!)
break;
146:デフォルトの名無しさん
09/06/28 16:13:13
[1] 授業単元: C言語
[2] 問題文:f(x)=xe^x-6を2分法とニュートン法で解きなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
「4」期限:6/28
[5] その他の制限: 配列が終わった程度しかやってません
147:デフォルトの名無しさん
09/06/28 17:17:34
>>142
助かりました。
プログラムは一応完成しました。
感謝します。
148:デフォルトの名無しさん
09/06/28 17:41:06
>>146
#include <stdio.h>
#include <math.h>
double f(double x) { return x * exp(x) - 6; }
double fd(double x) { return (1 + x) * exp(x); }
/* 繰り返し回数、初期値は任意 */
int main(void) {
// 二分法
{
int i, n = 10;
double a = 0, b = 5, x;
for (i = 0; i < n; i++) {
x = (a + b) / 2;
if (f(x) < 0 && f(a) < 0) {
a = x;
} else {
b = x;
}
}
printf("%f\n", x);
}
// ニュートン法
{
int i, n = 10;
double x = 0;
for (i = 0; i < n; i++) {
x = x - f(x) / fd(x);
}
printf("%f\n", x);
}
return 0;
}
149:デフォルトの名無しさん
09/06/28 18:00:11
>>148
即レスthxです
参考にさせてもらいます
150:デフォルトの名無しさん
09/06/28 18:05:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
@URLリンク(kansai2channeler.hp.infoseek.co.jp)
AURLリンク(www.dotup.org)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C
[4] 期限:7/2
[5] その他の制限:
お手数かけますが宜しくお願いします
151:145
09/06/28 18:09:36
>>140 Ctrl+D をキーボードから入れれば終了する。Windowsなら Ctrl+Z。
152:デフォルトの名無しさん
09/06/28 20:10:58
>>150
課題1
153:デフォルトの名無しさん
09/06/28 20:12:41
URI張り忘れたorz
URLリンク(kansai2channeler.hp.infoseek.co.jp)
154:デフォルトの名無しさん
09/06/28 20:41:45
>>153
有難うございます。
助かりましたm(_ _)m
課題2の方どなたかお願いします。
155:デフォルトの名無しさん
09/06/28 20:58:21
すみません、アセンブラの問題なんですが、どこで質問したらいいのか分らないので
ここでさせて頂きますm(_ _)m
もしアセンブリプログラムの方が無理でしたらC言語の方で構いません。
[1] 授業単元: アセンブリプログラミング
[2] 問題文(含コード&リンク): 1からN(N≦3)までの正整数の順列を作成せよ。すなわち、
N=1を与えた場合には1を、N=2を与えた場合には12,21、N=3を与えた場合には123,132,...を生成する。
[3] 環境
[3.1] OS:Windows
[3.3] 言語: アセンブリ言語、無理でしたらC++
[4] 期限: 7月1日
[5] その他の制限: 特にないです。
ちゃんとした質問になってるかも分かりませんが、すみませんが
よろしくお願いします。
156:デフォルトの名無しさん
09/06/28 21:02:26
>>150
課題2
URLリンク(kansai2channeler.hp.infoseek.co.jp)
157:デフォルトの名無しさん
09/06/28 21:23:33
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン: VC 2008
[3.3] 言語: C
[4] 期限: 6月29日 15時
[5] その他の制限: 配列やif文などは使わない。(使わなくてもできるみたいです。
printf,繰り返し処理を使う。
148を参考にやってみたのですが、実行結果の出し方が違うみたいなのでいまいちわからなかったので
質問しました。 お手数ですがよろしくおねがいします。
158:デフォルトの名無しさん
09/06/28 21:32:00
>>156
迅速なレス感謝します
本当に助かりました。
159:デフォルトの名無しさん
09/06/28 22:02:20
>>155
C言語でアセンブラ出力する。
160:デフォルトの名無しさん
09/06/28 22:35:48
どなたか>>126お願いします
161:145
09/06/28 22:44:53
>>087 scanf("%s\n", filename); // \nでは、<Enter>で入力が終わらない。
これか、 scanf("%s%*c", filename);
または、 scanf("%[^\n]%*c", filename);
これか、 fgets(filename, FILENAME_MAX, stdin); filename[strlen(filename) - 1] = '\0';
162:デフォルトの名無しさん
09/06/28 22:50:03
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):の連立1次方程式の解をガウスの消去法用いて解くプログラムを作成しなさい。
(この行列を使用してください
{{10,-9,0,0,0,0,0,0},
{-9,17,-8,0,0,0,0,0},
{0,-8,17,-9,0,0,0,0},
{0,0-9,13,-4,0,0,0},
{0,0,0,-4,12,-8,0,0},
{0,0,0,0,-8,10,-2,0},
{0,0,0,0,0,-2,2,7}})
[3] 環境
[3.1] OS: Windows Vista
[3.2] Visual Studio 2008
[3.3] 言語: C++
[4] 期限: 2009年7月1日まで]
[5] その他の制限:特にありませんがなるべく簡単なものでお願いします
163:デフォルトの名無しさん
09/06/28 23:05:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS Linux
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C
[4] 期限:7/3
[5] その他の制限:ポインタ配列を利用すること
お願いします
164:デフォルトの名無しさん
09/06/28 23:05:32
[1] 授業単元:文字列
[2] 問題文(含コード&リンク):
#include<stdio.h>
int chrlen(int n,char a[]);
void cap2sml(char a[],char b[]);
void strinv(int n,char a[],char b[]);
int main(void)
{
char a[100],b[100];
int i,n;
n=0;
/*from CAPITAL to small*/
void cap2sml(char a[],char b[])
{
int i;
for(i=0;a[i]!='\0';i++){
b[i]=a[i]+0x20;
}
if("A"<=a)&&(a<="Z")
b[i]='\0';
}
↑入力データが英大文字のときのみ小文字変換して表示するようにせよ
[3] 環境
[3.1] OS: Windows vista
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2009年6月29日AM07:00
[5] その他の制限: 特になし
165: ◆/91kCCQXBo
09/06/28 23:21:26
>>155 N=3までの順列
#include <iostream>
using namespace std;
int main(void) {
int i,j,k,n;
cout<<"n="; cin>>n;
cout.width(1);
switch(n) {
case 1:
for(i=1;i<=1;i++) {
cout<<i<<endl;
}
break;
case 2:
for(i=1;i<=2;i++) {
for(j=1;j<=2;j++) {
if(i==j) continue;
cout<<i<<j<<endl;
}}
break;
case 3:
for(i=1;i<=3;i++) {
for(j=1;j<=3;j++) {
if(i==j) continue;
for(k=1;k<=3;k++) {
if(i==k || j==k) continue;
cout<<i<<j<<k<<endl;
}}}
default:
break;
}
}
166:デフォルトの名無しさん
09/06/28 23:31:15
>>163
入力はポインタでなくていいのかな。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
167:デフォルトの名無しさん
09/06/28 23:40:54
>>164
もうちょっと何がしたいのか
具体的に書いてくれると嬉しい。
#include <stdio.h>
#include <ctype.h>
void cap2sml(char a[],char b[]){
int i;
for(i=0;a[i];i++) b[i] = tolower(a[i]);
}
int main(void){
char a[100] = "I have a friend whose name is Bob.";
char b[100];
cap2sml(a,b);
puts(a);
puts(b);
return 0;
}
168:デフォルトの名無しさん
09/06/28 23:53:41
>>166
早速の回答ありがとうございます
入力は指定がないのでポインタでなくてもいいです
169:155
09/06/29 00:24:46
>>165
ありがとうございます!
>>159
すみません、それはどういうことでしょう?
170:デフォルトの名無しさん
09/06/29 00:27:46
回答してもらえるとうれしいです。>>162
171:デフォルトの名無しさん
09/06/29 00:42:50
>>170
みんな暇なときにやってんだからさ
そうせかすなよw
締め切りまだ近いわけじゃないしw
172:デフォルトの名無しさん
09/06/29 00:44:38
[1] 授業単元:計算機システム
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 6月30日まで
[5] その他の制限:
ボスケテ
173:デフォルトの名無しさん
09/06/29 01:07:25
>>171
そうですね。つい焦っちゃって。
ごめんなさい。。
174:デフォルトの名無しさん
09/06/29 02:00:36
>>173
昔作ったのでよければあげる。
データ変える程度ならちょっといじれば動くようになるはず。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
175:デフォルトの名無しさん
09/06/29 02:26:03
>>169
gcc と objdump が使えるなら
$ gcc a.c -c
$ objdump -d a.o > a.s
とかすればよかったとおもう
176:デフォルトの名無しさん
09/06/29 02:33:49
gccならgcc -S foo.cで良くないか
わざわざディスアセンブルせんでも
177:デフォルトの名無しさん
09/06/29 02:43:03
>>170
>>174さんのプログラムを使って作ってみたけどコアを吐く
URLリンク(kansai2channeler.hp.infoseek.co.jp)
行列式ゼロなのか、それともピボット選択の必要があるのか
178:デフォルトの名無しさん
09/06/29 03:02:55
>>162 {0,-9
179:デフォルトの名無しさん
09/06/29 03:15:45
>>178
すみませんコピペミスしてました
でも、そこを直してもやっぱりコアダンプです
180:デフォルトの名無しさん
09/06/29 03:18:17
行列が潰れている(行列式がゼロ)なんじゃないでしょうか?
それともやっぱりピボット選択した方がいいのかなあ?
デバッガ掛けてみたらやっぱり tmp がゼロになる時があり
Division by Zero という事でした
181:デフォルトの名無しさん
09/06/29 03:37:11
>>162 #define N 8
182:デフォルトの名無しさん
09/06/29 09:09:12
>>181
あら本当だありがとう
でもこれじゃ未知数8、数式は7しかない
これじゃ解けませんぜ旦那
>>170
どうする?元の行列もう一列足りないよ
183:デフォルトの名無しさん
09/06/29 09:11:56
と思ったら
#define N 7
でOKなのねシクシク
という事で上げ直し
>>170
URLリンク(kansai2channeler.hp.infoseek.co.jp)
学校行ってくる
184:デフォルトの名無しさん
09/06/29 12:39:00
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: c++6.0
[3.3] 言語:C
[4] 期限:6/29
[5] その他の制限:
よろしくお願いします。
185:デフォルトの名無しさん
09/06/29 12:45:43
>>184
> B入出力例 こうならなければ修正する
これって授業中に「こうならなければ〜になるように修正する」って言われてるとおもうんだけど
「こうならなければ、こうなるようにプログラムを修正する」って話?
186:デフォルトの名無しさん
09/06/29 12:49:58
1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ヒントから表を並び替えて、
1) 総点順に並び換えよ。
2) 各科目別成績順に並びかえよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: C++
[3.3] 言語:C 言語
[4] 期限:6/29
[5] その他の制限: 並び替えはdo,for,if,whileで習いました。
お手数ですがよろしくお願いします。
187:デフォルトの名無しさん
09/06/29 13:01:28
for(i=0;i<1800;i++)
{
fprintf(fpw,"[09x%4d]",i);
}
のようにやると
[09x@@@0]
[09x@@@1]
[09x@@@2]
…のようになってしまいます(@はスペ−ス)。
[09x0000]
[09x0001]
[09x0003]
…にしたいのですがやり方が分かりません。
教えてください
188:デフォルトの名無しさん
09/06/29 13:02:48
%04d
189:デフォルトの名無しさん
09/06/29 13:32:39
>>186(9584.c) >>113(9568.jpg) 問題 >>131(CODE) 解答
190:デフォルトの名無しさん
09/06/29 14:05:06
>>186
名前さんは全部0点のわけだ。CSVファイル経由なんかだとよくあることだけどね。
191:デフォルトの名無しさん
09/06/29 14:13:04
確実にデータ管理方法がおかしいことによる弊害ですねわかります
192:デフォルトの名無しさん
09/06/29 15:42:04
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):http:
//kansai2channeler.hp.infoseek.co.jp/cgi- bin/joyful/img/9587.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日 06月30日20:00まで
[5] その他の制限: 特にありません。
5問ありますが、5問目は必須ではないのでスルーして下さってもかまいません。
193:192
09/06/29 15:46:26
リンク先の貼り付け失敗しました…
URLリンク(kansai2channeler.hp.infoseek.co.jp) bin/joyful/img/9587.txt
194:46
09/06/29 16:55:11
>>48
レスさんくす。
それでやってみたのですが、2とか4とか2のn乗の数の場合うまくいかないのですが。
195:デフォルトの名無しさん
09/06/29 17:16:57
>>192
とりあえず、1問目だけ。
テキストの整形なんかは、適当に直して。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
2問目以降は、
クイックソート, シェルソート, 挿入ソート, 選択ソート、マージソート
の、ベースになるソースとかない?
自前で書くと、細部の実装が授業の内容と合わなくなりそうだけど。
196:デフォルトの名無しさん
09/06/29 17:17:23
>>189さん
>>131(CODE) 解答の中のseito,returnなど
ならってないものが多くてわかりません。
授業でならったdo,for,if,whileを使っていただけると
とてもありがたいのですが。
197:デフォルトの名無しさん
09/06/29 17:21:55
>>194
while(n < x){ n *= 2; k++;} nが2のk剰「より大きい」
while(n <= x){ n *= 2; k++;} nが2のk剰「以上」
198: ◆/91kCCQXBo
09/06/29 17:53:49
>>186 >>196 教室で習ったソート(並び替え)のCソースをくれると、参考にする、かも。
#include <stdio.h>
#include <stdlib.h>
#define n 9 /* 生徒の数+1 */
#define m 7 /* 科目の数+2 */
int cmp(const int *a, const int *b) {
int t = a[1] - b[1];
return (t==0)?0:(t>0?1:-1);
}
int main()
{
int k;
int index[n][2];
/* ここからは変更無し */ //char namae[n][5]
/* ここまでは変更無し */ //printf("%6.0f\n",goukei[i]); }
for(k=m-2; k>=0; k--) { /* 科目数のループ */
printf("\n%sの点数で並び替え\n", kamoku[k+1]);
if(k == m-2)
for(i=1; i<n; i++) index[i][0] = i, index[i][1] = goukei[i];
else
for(i=1; i<n; i++) index[i][0] = i, index[i][1] = seiseki[i][k];
qsort(&index[1][0], n-1, sizeof(int)*2, (int (*)(const void*, const void*))cmp );
for(i=1; i<n; i++) { /* 生徒数のループ */
printf("%s", namae[index[i][0]]);
for(j=0; j<m-2; j++){ /* 科目数のループ */
printf("%6.0f",seiseki[index[i][0]][j]);
}
printf("%6.0f\n",goukei[index[i][0]]);
}
}
return 0;
}
199:デフォルトの名無しさん
09/06/29 18:02:17
>>186
URLリンク(kansai2channeler.hp.infoseek.co.jp)
できる限り、簡単に書いてみた。
200:デフォルトの名無しさん
09/06/29 18:23:20
>>198さん >>199さん
ありがとうございます。
一応、授業でならった並び換えのCソースをはっときます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
201:デフォルトの名無しさん
09/06/29 18:38:01
[1] 授業単元:計算機言語T
[2] 問題文(含コード&リンク)
キーボードから自然数nを1個ずつ入力する。入力を終える場合は0以下を入力する。
入力終了後、入力した自然数の内、偶数と奇数がそれぞれ何個であったかを表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: (提出準備のため[2009年06月30日AM2:45まで] )
[5] その他の制限
習った範囲は
・if文(if else文を含む)
・switch文
・for文(無限ループ含む)
偶数と奇数がそれぞれ何個あったか数える部分のプログラムが???です。
お願いします。
202:デフォルトの名無しさん
09/06/29 19:03:51
>>201
こんなんでどうでしょ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
203:デフォルトの名無しさん
09/06/29 19:10:42
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(u9.getuploader.com)
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:7月1日まで
[5] その他の制限: 2問あります
204:デフォルトの名無しさん
09/06/29 19:21:00
[1] 授業単元:
コンパイラの構成
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
7月7日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
よろしくお願いします。
205:デフォルトの名無しさん
09/06/29 19:37:21
>>195 ありがとうございます。
ソースはないですねぇ…
何と言うか、出来れば何でもいいような感じなので特に気にしなくて良いかと思います。
206:184
09/06/29 19:42:50
>>185そういうことです。ヒントのプ口グラムをから作る感じです。よろしくお願いします
207:デフォルトの名無しさん
09/06/29 19:46:38
シェルと挿入は前スレ807の使えば?
208: ◆YtFiiqjbeo
09/06/29 19:49:27
【質問テンプレ】
[1] 授業単元:プログラミング言語c
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
[3.1] OS:Windows
[3.2] vc++
[3.3] 言語: C
[4] 期限: 06月29日23:59時まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
名前と偏差値(最大10科目まで対応可)が書かれたファイル(最大5000人対応可)を読み込み、
各人の名前、学籍番号、平均偏差値などを出力ファイルに書き込むとともに、
平均偏差値上位5名を抽出してDOS窓表示するプログラムを作りなさい。
1、入力と出力のはおよび科目数はキーボード入力
2、ファイルからの読み込みは一度のみ、名前は二次元文字配列、偏差値は二次元数値配列に読み込むこと
実行例URLリンク(www.dotup.org)
お願いします
209:201
09/06/29 19:56:02
>>202
有難う御座います。
ズバリですね。
210:デフォルトの名無しさん
09/06/29 22:25:23
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows Vista
[3.2] Visual Studio 2008
[3.3] 言語: C++
[4] 期限:7月2日まで
[5] その他の制限:できるだけ元のソースを弄らずにお願いします。
211:デフォルトの名無しさん
09/06/29 22:34:52
次の条件判断文を使うケースをフローチャートにせよ
変数aの値がbより小さい場合には、『aはbより小さいです』と表示させ、大きい場合には"a=a+b"を計算させる
文字変数mの中身が'a'ならば、『aが格納されています』と表示させて、'a'でないならば『'a'でない文字が格納されています』と表示させたあと、変数bとcを使った『b=b+c』を計算する。
変数aが、変数bより小さい場合には、『aはbより小さいです』と表示し、変数bより大きい場合には、『aはbより大きいです』と表示し、変数bと等しい場合には、『aとbは等しいです』と表示する
#include<iosteam>
using namespace std;
int main{
return 0;
}
は多分いいと思いますが
212:デフォルトの名無しさん
09/06/29 22:35:17
>>210
goukei += kata[i]; → goukei += ninzuu[i];
213:デフォルトの名無しさん
09/06/29 22:47:57
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク)
アルゴリズムの異なる2つのプログラムを作成し、処理時間の違いを比較せよ。
できるだけ処理時間の違いが顕著なもの。
例:マージソートとバブルソート
[3] 環境
[3.1] OS:Windows
[3.2] Visualstudio2008
[3.3] 言語:C++
[4] 期限:2009年7/7
[5] その他の制限:
214: ◆/91kCCQXBo
09/06/29 23:20:13
>>186 >>200 成績一覧(バブルソート)
#include <stdio.h>
#define n 9 /* 生徒の数+1 */
#define m 7 /* 科目の数+2 */
int main()
{
int k, S;
int index[n][2];
/* ここからは変更無し */ //char namae[n][5]
/* ここまでは変更無し */ //printf("%6.0f\n",goukei[i]); }
for(k=m-2; k>=0; k--) { /* 科目数のループ */
printf("\n%sの点数で並び替え\n", kamoku[k+1]);
if(k == m-2) for(i=1; i<n; i++) index[i][0] = i, index[i][1] = goukei[i];
else for(i=1; i<n; i++) index[i][0] = i, index[i][1] = seiseki[i][k];
/* 作業用の配列を並び替える(バブルソート) */
for(i=1;i<n-1;++i)
for(j=2;j<n+1-i;++j)
if(index[j-1][1] < index[j][1]){
S = index[j][1], index[j][1] = index[j-1][1], index[j-1][1] = S;
S = index[j][0], index[j][0] = index[j-1][0], index[j-1][0] = S;
}
for(i=1; i<n; i++) { /* 生徒数のループ */
printf("%s", namae[index[i][0]]);
for(j=0; j<m-2; j++){ /* 科目数のループ */
printf("%6.0f",seiseki[index[i][0]][j]);
}
printf("%6.0f\n",goukei[index[i][0]]);
}
}
return 0;
}
215:デフォルトの名無しさん
09/06/29 23:35:04
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] gcc 3.4
[3.3] 言語:C
[4] 期限:2009年6月30日正午まで
[5] その他の制限: なし
216:デフォルトの名無しさん
09/06/29 23:40:08
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C
[4] 期限: 6月30日23:59
[5] その他の制限: 特になし
よろしくお願いします
217:デフォルトの名無しさん
09/06/29 23:45:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:6/30
[5] その他の制限: なし
218:デフォルトの名無しさん
09/06/30 00:02:18
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):入力した数字(最大8行)を,
「*」を用いて花文字で表示するプログラムを作成しなさい.
なお,花文字の形状は各自自由に考えてください(可読できれば問題ありません).
例:数字を入力してください:56
**** *****
* *
**** *****
* * *
**** *****
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月3日
[5] その他の制限:柴田望洋 明解C言語入門編4章まで
お願いします
219:211
09/06/30 00:16:01
if(a < b)
{
__cout("aはbより小さいです\n");
}
else
{
__a = a + b;
}
if(m == 'a')
__cout("aが格納されています\n");
}
else
{
__printf("\'a\'でない文字が格納されています\n");
}
if(a < b)
{
__cout("aはbより小さいです\n");
}
else if(a == b)
{
__cout("aとbは等しいです\n");
}
else
{
__cout("aはbより大きいです\n");
}
じゃあこれをフロートチャートにしてくれませんか?誰でもいいので。
220:デフォルトの名無しさん
09/06/30 00:40:35
>>219
フローチャートを書くためのツールをください
221:デフォルトの名無しさん
09/06/30 00:56:03
>>203
ライブラリうp記念にやってみた
問1 URLリンク(kansai2channeler.hp.infoseek.co.jp)
問2 URLリンク(kansai2channeler.hp.infoseek.co.jp)
222:デフォルトの名無しさん
09/06/30 00:56:04
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: ?
[3.3] 言語: C言語
[4] 期限: 7月2日9時
[5] その他の制限: ポインタと配列まで習いました
223:デフォルトの名無しさん
09/06/30 01:02:23
>>218
こんなんでどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
224:デフォルトの名無しさん
09/06/30 01:20:28
>>222
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int **p, n, i, j;
printf("何段表示しますか?: ");
scanf("%d", &n);
p = calloc(n, sizeof(int*));
for(i=0; i<n; i++) p[i] = calloc(i+1, sizeof(int));
for(i=0; i<n; i++) {
for(j=n-1; j>i; j--) printf(" ");
p[i][0] = p[i][i] = 1;
for(j=1; j<i; j++) p[i][j] = p[i-1][j-1] + p[i-1][j];
for(j=0; j<=i; j++) printf("%3d ", p[i][j]);
putchar('\n');
}
for(i=0; i<n; i++) free(p[i]);
free(p);
return 0;
}
225:222
09/06/30 01:50:15
>>224の通りに打ち込んでもうまく出来ませんでした><
どうしてなんでしょう?
226:デフォルトの名無しさん
09/06/30 02:20:14
>>225
エラーの内容をコピペしてみて。
227:デフォルトの名無しさん
09/06/30 02:20:22
>>225
>>224さんではないですがどんなエラーが出たんでしょうか?
私もコンパイルしてみましたがunknown escape sequence:'\216'と言うエラーが出たので、そこだけ修正してちゃんと動作しました
>>224さんの空白文字を修正をしたものを張っておくのでもしよければどうぞURLリンク(ja.pastebin.ca)
228:デフォルトの名無しさん
09/06/30 02:31:44
>>225
codepadで確認したけど、エラーでなかったよ
URLリンク(codepad.org)
(入力部分だけ変更してあるので注意
ついでに35段目でオーバーフローすることを確認したw
229:デフォルトの名無しさん
09/06/30 02:57:33
半角スペース省略回避の&nbsp;が悪さしてんのか?
230:デフォルトの名無しさん
09/06/30 06:50:57
>>223
ありがとうございます。
まだ習ってない部分もありますが
解読してみようと思います
231:デフォルトの名無しさん
09/06/30 07:12:58
>>208お願いします。
232:222
09/06/30 08:33:36
正しくコンパイルできてエラーは出ませんでしたが
数字を入力したあとになにも表示されませんでした。
今教えてもらったプログラムを解読しているとこです。
233:デフォルトの名無しさん
09/06/30 09:47:26
>>227
sjisだと漢字の`表'は0x955cになるが、0x5cはASCIIでは`\'だから、
その次の文字`示'(0x8ea6)の0x8e(\216)がエスケープシーケンスにされちゃうんだよ。
$ od -tx1z -Ax foosjis.c | grep -1 '5c 8e'
000050 0a 0d 0a 70 72 69 6e 74 66 28 22 89 bd 92 69 95 >...printf("...i.<
000060 5c 8e a6 82 b5 82 dc 82 b7 82 a9 3f 3a 20 22 29 >\..........?: ")<
000070 3b 0d 0a 73 63 61 6e 66 28 22 25 64 22 2c 20 26 >;..scanf("%d", &<
`表'意外にもこうした問題を起こす文字がsjisにはあるから、ほんと困ったもんだ。
さっさと文字コード統一してくれ。
234:デフォルトの名無しさん
09/06/30 09:51:03
[1] 授業単元:確率論
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2009年7月5日12:00まで]
[5] その他の制限: 既存のRAND関数使用不可
1.合同式法による一様乱数を生成する関数
2.ボックスミュラー法による正規乱数を生成する関数
3.平均値を求める関数
4.標準偏差を求める関数
5.ヒストグラムを作成する関数
の5個の関数から構成されるのは分かるのですが、その後どうすれば作れるのか見当もつきません。
宜しくお願い致します。
235:デフォルトの名無しさん
09/06/30 09:53:05
>>233
--input-charset=cp932
とかでググってはどうだろうか
236:デフォルトの名無しさん
09/06/30 10:02:10
>>215
誰か助けてm(__;)m
237:デフォルトの名無しさん
09/06/30 10:02:27
いや、sjisとかcp932とか使わないからどうでもいいんだよ。
ただ変換するコードを書くのが面倒だし毎度変換するだけの無駄なクロックが使われていると思うとね。
さっさと文字コード統一してくれ、といいたくなる。
238:デフォルトの名無しさん
09/06/30 10:21:12
>>199さん
合計と科目別すべて一緒に表示したいときは
どうすればいいですか?
239:デフォルトの名無しさん
09/06/30 10:39:15
文字コードは、英語のAtoZしか使わないから関係ない人へ。
SPACE-> 置換お疲れ。
240:239 ◆/91kCCQXBo
09/06/30 12:02:47
>>186 >>238 成績一覧(選択ソート) 199が選択ソートなので再UP
#include <stdio.h>
#define n 9 /* 生徒の数+1 */
#define m 7 /* 科目の数+2 */
int main()
{
int k, p, S;
int index[n][2];
/* ここからは変更無し */ //char namae[n][5]
/* ここまでは変更無し */ //printf("%6.0f\n",goukei[i]); }
for(k=m-2; k>=0; k--) { /* 科目数のループ */
printf("\n%sの点数で並び替え\n", kamoku[k+1]);
if(k == m-2) for(i=1; i<n; i++) index[i][0] = i, index[i][1] = goukei[i];
else for(i=1; i<n; i++) index[i][0] = i, index[i][1] = seiseki[i][k];
/* 作業用の配列を並び替える(選択ソート) */
for(i=1; i<n-1; i++){
p = i;
for(j=i; j<n; j++)
if(index[p][1] < index[j][1]) p = j;
S = index[i][1], index[i][1] = index[p][1], index[p][1] = S;
S = index[i][0], index[i][0] = index[p][0], index[p][0] = S;
}
for(i=1; i<n; i++) { /* 生徒数のループ */
printf("%s", namae[index[i][0]]);
for(j=0; j<m-2; j++){ /* 科目数のループ */
printf("%6.0f",seiseki[index[i][0]][j]);
}
printf("%6.0f\n",goukei[index[i][0]]);
}
}
return 0;
}
241:デフォルトの名無しさん
09/06/30 13:02:41
>>239
何かを皮肉っているように読めるけど、何を指してるのかよくわからんや
242:デフォルトの名無しさん
09/06/30 13:46:46
>>238
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一番簡単なのは、もう1つ外側でループしてやることかな・・・と。
243:デフォルトの名無しさん
09/06/30 14:37:33
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: g++
[3.3] 言語: C++
[4] 期限: 7月1日12:00
[5] その他の制限:特になし
よろしくお願いします
244:デフォルトの名無しさん
09/06/30 14:51:32
〔1〕授業単元:C言語
〔2〕問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
〔4〕期限:7月6日
〔5〕ポインタ配列
お願いします
245:デフォルトの名無しさん
09/06/30 15:14:36
>>208
手遅れ感がすごいけど一応。
こんなんでどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
スタックに配列取ってるのはそうした方が主旨に沿いそうな気がしたから。
246:デフォルトの名無しさん
09/06/30 15:37:05
>222
>>224の通りに打ち込んでもうまく出来ませんでした><
>どうしてなんでしょう?
何がうまくないんでしょう?
Answer1:パスカルの三角形が気に入らない
Answer2:パソコンが壊れてる。電源が入らない。パソコンを持ってない。
Answer3:コンパイル環境が無い
Answer4:コンパイルエラーが出る!
Answer5:実行はするが変な文字が出る
Ans 5.ならコンパイラの名前を : ( )
...テンプレ...
[3.2] コンパイラ名とバージョン: (gcc 3.4/VC 6.0等)
...テッパン...
gcc --input-charset=cp932 --exec-charset=cp932 file.c
247:デフォルトの名無しさん
09/06/30 15:38:04
ググってわからなかったので、質問させてください。
%eを使って表示したいのですが、
表示させたときにeの左側の小数部分の表示桁数を指定するにはどうすればいいですか?
248:デフォルトの名無しさん
09/06/30 15:40:48
printf("%XXX.XXXe", f); // Xは0-9の数字
249:デフォルトの名無しさん
09/06/30 15:41:38
その辺は書式といいます。
c言語 書式 などでぐぐるといろいろでてくると思います。
少数を扱う場合は
%1.5e
などと書きます
250:デフォルトの名無しさん
09/06/30 15:46:35
ありがとうございます。
書式でググればよかったんですね。
251:デフォルトの名無しさん
09/06/30 15:48:50
>>234
とりあえず、中心極限定理の場合
URLリンク(kansai2channeler.hp.infoseek.co.jp)
正規乱数に変換する部分を書き換えれば、ボックスミュラーの方にも使えるっしょ。
ヒストグラムはカウントだけしておいて、EXCELで処理ってことで。
252:デフォルトの名無しさん
09/06/30 15:51:31
>>244
全部まとめて、こんな感じで。動作は保障しない。ソースの整形はご自分で!
#include <stdio.h>
#include <stdlib.h>
void swap(int* a,int* b){int T=*a; *a = *b *b = T;}
void InitCard(int* Card,int N){int i=0; for(i=0;i<N;i++) Card[i]=i+1;}
void Shuffle(int* Card,int N){int i=0; for(i=0;i<N;i++) swap(&Card[i],&Card[rand()%N]);}
int main(){
int Card[52];
int i=0;
char* Number="A23456789TJQK";
char* Mark="shdc";
srand(0);
InitCard(Card,52);
/****************No.1**********************/
Shuffle(Card,52);
for(i=0;i<52;i++) printf("%d ",Card[i]);
printf("\n\n");
/****************No.2**********************/
InitCard(Card,52);
for(i=0;i<52;i++) printf("%d:%c ",i,Number[(Card[i]-1)%13]);
printf("\n\n");
/****************No.3**********************/
InitCard(Card,52);
for(i=0;i<52;i++) printf("%c%c ",Number[(Card[i]-1)%13],Mark[(Card[i]-1)/13]);
printf("\n\n");
return 0;
}
253:デフォルトの名無しさん
09/06/30 15:52:01
すみません。
もう1つ質問なのですが、
無限ループでとある計算を行い、
xが10の-10乗より小さくなったときに無限ループを脱出するプログラムを作りたいのですが、
if(x < 1.0e-10)
break;
では、コンパイルエラーが出ました。
ここは、やはり
if(x < 0.0000000001)
と、書くしか方法はないのでしょうか?
254:デフォルトの名無しさん
09/06/30 15:53:48
>>253
無限ループは何で実現してるの?
255:デフォルトの名無しさん
09/06/30 15:56:24
>>525
ソース詰めてるときにセミコロン消しちゃった。申し訳ない。
正しくは以下。
void swap(int* a,int* b){int T=*a; *a = *b; *b = T;}
256:デフォルトの名無しさん
09/06/30 15:56:51
すみません。
While(1)
です
257:デフォルトの名無しさん
09/06/30 16:02:36
>>252
上が駄目で下がOKならそういうことではないかと
ただなぜかといわれると規格とかの話になりそうなので詳しくはわかりませんが。
制御文には指数は使えないのかも
258:デフォルトの名無しさん
09/06/30 16:10:54
>>192 お願いします。
259:デフォルトの名無しさん
09/06/30 16:16:22
>>253
これをコピペしてもダメ?(必ずコピペで)
コンパイラは何使ってるの?
#include<stdio.h>
int main(void){
double x=1;
while(1){
if(x < 1.0e-10) break;
x/=10;
}
printf("%.15f\n", x);
return 0;
}
260:デフォルトの名無しさん
09/06/30 16:45:24
#include <stdio.h>
int main()
{
int a;
int b = 1, c = 0;
scanf("%d",&a);
while(b <= a){
b *= 2;
c++;
}
printf("2の%d乗より小\n", c);
return 0;
}
で"5"や"6"なら"2の3乗より小"など正しい答えが出るのですが、
2の乗数である"4"や"8"を入れると"4"で"2の2乗より小"、"8"で"2の3乗より小"と出てしまいます。
どうすればいいでしょうか。
261:デフォルトの名無しさん
09/06/30 16:49:19
>>260
printf("2の%d乗より小\n", c);
↓
if(b == a)
{
printf("2の%d乗と同じ\n", c);
}
else
{
printf("2の%d乗より小\n", c);
}
262:デフォルトの名無しさん
09/06/30 16:54:44
while (b < a)
なら a = 4 の時 c = 2 だけど
while (b <= a)
だと a = 4 の時 c = 3 にならない?
printf の文意も 与えた値よりも必ず大きい2の累乗数 を求めてるっぽいし
263: ◆/91kCCQXBo
09/06/30 17:13:56
#include <stdio.h>
int main()
{
int a;
int b = 1, c = 0;
scanf("%d",&a);
// while(b <= a)
while(b < a)
{
b *= 2;
c++;
}
printf("%d は 2の%d乗 か、若しくは 2の%d乗 以下の数値である\n", a, c, c);
return 0;
}
264:デフォルトの名無しさん
09/06/30 17:31:27
>>244
ポインタ配列にこだわってみた。
こんなんもどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
265:--
09/06/30 17:43:08
>>172 >>93 >>前930
>プロンプトを現在の”mysh[9]”といったものから”ユーザ名@mysh[9]”
URLリンク(kansai2channeler.hp.infoseek.co.jp)
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4967日前に更新/375 KB
担当:undef