10/05/26 07:45:28 BE:94671825-S★(522522)
あなたが解けない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++の宿題片付けます 135代目
スレリンク(tech板)
2:デフォルトの名無しさん
10/05/26 12:04:44
[1] 授業単元:プログラミング演習
[2] 問題文:単価と数量を入力するごとに金額を表示し、データ入力終了後合計金額と、千円札のみで払う場合の枚数と釣り銭を表示しなさい。なお、入力データのの終わりは単価0とする。
実行例
300 2 <ーーデータ入力
300*2=600円 <ー表示
250 5
250*5=1250円
100 1
100*1=100円
1500 2
1500*2=3000円
350 4
350*4=1400円
0 0 <ーーデータの終わり
合計金額 6350円 <ーー合計表示
1000円札 7枚 <ーー1000円札の枚数表示
釣り銭 650円 <ーー釣り銭の金額表示
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4]期限:26日PM10:00
[5]その他制限: printf int while scanf float for
今まで習ったのはコレくらいです。今回もよろしくお願いします。
3:デフォルトの名無しさん
10/05/26 12:40:38
>>2
前スレまだ残っているが。0 0の時の出力はない方がいいなら、
if ( tanka != 0 )
を、小計出力の前に置けばいい。
int main()
{
int tanka, kosu, shokei; // 単価 個数 小計
int maisu, gokei = 0; // お札枚数, 合計
do {
scanf("%d", &tanka);
scanf("%d", &kosu);
shokei = tanka * kosu;
gokei += shokei;
printf("%d * %d = %d 円\n", tanka, kosu, shokei);
} while ( tanka != 0 );
printf("合計金額 %d円\n", gokei);
maisu = gokei/1000 + 1;
printf("1000円札 %d枚\n", maisu);
printf("お釣り %d円", maisu*1000 - gokei);
}
4:デフォルトの名無しさん
10/05/26 22:48:48
>>3
ありがとうございます!!
新レスについ、スレしてしまいました;;
5:デフォルトの名無しさん
10/05/26 23:39:12
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
以下の実行結果になるようおねがいします
文字列を入力してください
adlkjgeiakdalf
確認したい文字を入力してください
a
文字(a)の数は3文字です
[3] 環境
[3.1] OS: Windows
[3.2] gcc 3.4
[3.3] 言語:C
[4] 期限:できる限り早くおねがいしますorz
[5] その他の制限: 一次元二次元配列まで習いました
6:デフォルトの名無しさん
10/05/27 00:21:54
>>5
URLリンク(ideone.com)
7:デフォルトの名無しさん
10/05/27 00:37:35
前スレで同じ質問したのですが
行列の積を計算するプログラムのコードを提出という課題が学校で出たのですが
前スレでは初期化していない事と添え字がずれていると指摘されたのですが、それを直しても下の実行結果でした
n (n<=10) の値を入力して下さい。
2
行列aの1行1列の値を入力して下さい。
1
行列aの1行2列の値を入力して下さい。
2
行列aの2行1列の値を入力して下さい。
3
行列aの2行2列の値を入力して下さい。
4
行列bの1行1列の値を入力して下さい。
1
行列bの1行2列の値を入力して下さい。
2
行列bの2行1列の値を入力して下さい。
3
行列bの2行2列の値を入力して下さい。
4
c[0][0] = 10551303
c[0][1] = 4106
c[1][0] = 15
c[1][1] = 29
8:デフォルトの名無しさん
10/05/27 00:52:18
>>7
ちゃんと↓のまま試した?
URLリンク(codepad.org)
そのまま試していれば、この添え字にはならないと思うんだけど
c[0][0] = 10551303
c[0][1] = 4106
c[1][0] = 15
c[1][1] = 29
9:デフォルトの名無しさん
10/05/27 11:31:31
質問中に大変申し訳ありません。
ここに気付かずに重複スレ立ててしまいました。すみません。
スレリンク(tech板)
前スレの消化速度はおおよそ2ヶ月でしたが、削除依頼すべきか、再利用するのか。
これまでのケースを知りませんので、ご意見を伺いたく思います。
10:デフォルトの名無しさん
10/05/27 12:05:08
>>008
#include<stdio.h>
int main (void)
{
int i,j,k,n;
int a[10][10],b[10][10],c[10][10];
printf("n (n<=10) の値を入力して下さい。\n");
scanf("%d",&n);
for(i=1;i<=n;i++) { for(j=1;j<=n;j++) {
printf("行列aの%d行%d列の値を入力して下さい。\n",i,j);scanf("%d",&a[i-1][j-1]);}}
for(i=1;i<=n;i++) { for(j=1;j<=n;j++) {
printf("行列bの%d行%d列の値を入力して下さい。\n",i,j);scanf("%d",&b[i-1][j-1]);} }
// for(i=0;i<=n;i++) { for(j=0;j<=n;j++) { for(k=0;k<=n;k++){
for(i=0;i<n;i++) { for(j=0;j<n;j++) { c[i][j] = 0; for(k=0;k<n;k++){
c[i][j] += a[i][k] * b[k][j];}}}
// for(i=0;i<=n;i++){for(j=0;j<=n;j++){
for(i=0;i<n;i++){for(j=0;j<n;j++){
printf("c[%d][%d] = %d\n",i,j,c[i][j]);}}
return 0;
}
>>009 が、おせっかいな人=あわて者
982 が焦ったということで。
11:デフォルトの名無しさん
10/05/27 15:24:48
>>9
落ちてなければ次スレとして使えばいいさ
検索で飛んでくる人はどっちにいくか知らないけどw
12:デフォルトの名無しさん
10/05/27 18:16:43
RGBで虹色のグラデーションを作るプログラムを3行以内で教えてくだしあ><
13:デフォルトの名無しさん
10/05/27 19:16:30
虹色の7色っていうのは何らかの規則性があるのでしょうか
自分で1つ1つ色を指定していなかくてはいけないのですか??
14:デフォルトの名無しさん
10/05/27 19:18:36
国によって虹の色の考え方は違う
15:デフォルトの名無しさん
10/05/27 19:43:46
>>12
なんとか三行になったぞw
int f(int x){int y;x%=1024;y=x/256;z=x%256;if(y==0)return 0;if(y==1)return z;
if(y==2)return 255;return 255-z;}
long col(int x){if(x<0||896<x)return 0;return f(x+512)<<16+f(x+256)<<8+f(x);}
16: ◆/91kCCQXBo
10/05/27 20:11:37
>>015 1/30 でバンドになるから、30*30で表示してみた。いいぞ。
#include <stdio.h>
int f(int x){
int y, z;
x%=1024;y=x/256;z=x%256;
if(y==0)return 0;
if(y==1)return z;
if(y==2)return 255;
return 255-z;
}
long col(int x){
if(x<0||896<x)return 0;
return (f(x+512)<<16) + (f(x+256)<<8) + f(x);
}
int main(void){
int i, j;
printf("Content-type: text/html\n\n");
/* ここから3行 */
printf("<html><body><table width=200 height=200>\n"); for(i=0;i<30;i++){ printf("<tr>\n");
for(j=0;j<30;j++) printf("<td bgcolor=\"#%06LX\"></td>", col(i*30+j));
printf("</tr>\n");} printf("</table></body></html>\n");
/* ここまで */
}
17:デフォルトの名無しさん
10/05/27 20:33:16
>>16
そりゃ三日三晩考え抜いたからな
18:デフォルトの名無しさん
10/05/27 22:51:06
7行プログラムスレでやれw
19:デフォルトの名無しさん
10/05/27 23:28:09
>>6
ありがとうございます!!助かりました
20:9
10/05/28 07:33:53
先日のうっかり者です。
ここはスレ立てに関していい意味で緩いようですので、再利用不可の単発でもないので残すことにいたします。
もしも落ちていなければ、次スレにでも隔離スレにでも何なりと使ってください。以上です。
質問メインのスレでお騒がせしいたしました。それでは失礼いたします。
21:デフォルトの名無しさん
10/05/28 11:21:43
いいってことよ
22:デフォルトの名無しさん
10/05/28 11:52:21
↑自演
23:デフォルトの名無しさん
10/05/28 12:00:29
スレタイって主以外でも変えられるのかな。できないとすると使い物にならないけど。
24:デフォルトの名無しさん
10/05/28 12:06:23
主が立てた人って意味なら主でも変えられないよ
25:デフォルトの名無しさん
10/05/28 17:23:50
なんかインターネット創成期みたいな会話だな
26:デフォルトの名無しさん
10/05/28 18:19:59
インターネット創成期にこんな高度な会話してる人がいたらびっくりするね
27:デフォルトの名無しさん
10/05/28 19:11:17
>>23
馬鹿?
28:デフォルトの名無しさん
10/05/29 08:34:07
猫、以下の話だが↓この結果が
#include<stdio.h>
main(){
int i;
for(i=1;i<6;i++)
printf("%*d\n",i,i);
}
↓こうなるように誰かお願いします。
@
@
@
@
@
@
@
@
@
29:デフォルトの名無しさん
10/05/29 09:43:46
// 描画
#include <stdio.h>
#define N 6
int main(void){
int i;
for(i=1; i<N; i++)
printf("%*d\n", i, i);
for(i-=2; i>0; i--)
printf("%*d\n", i, i);
return 0;
}
30:デフォルトの名無しさん
10/05/29 11:58:25
無駄にループを一つにしてみた。
#include <stdio.h>
int main(void)
{
int i, j = 1;
for(i=1; i > 0; i += j) {
if(i==5) j = -1;
printf("%*d\n", i, i);
}
return 0;
}
31:デフォルトの名無しさん
10/05/29 12:35:17
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2010年6月2日まで
[5] その他の制限:なし
2問ありますが、よろしくお願いします。
32:デフォルトの名無しさん
10/05/29 13:06:45
>29 >30
ありがとうございます。数字が@に変身すると、もっとありがとうなんですが。
がんばって立派な大学生になります。
33:デフォルトの名無しさん
10/05/29 13:09:27
>>31
【1】
(1) print_g(&t);
(2) x = (t->a.x + t->b.x + t->c.x) / 3;
(3) y = (t->a.y + t->b.y + t->c.y) / 3;
【2】
(1) return 1;
(2) return car(head) * fact(cdr(head));
34:デフォルトの名無しさん
10/05/29 13:16:32
>>32
printf("%*d\n", i, i) → printf("%*c", i, '@');
35:デフォルトの名無しさん
10/05/29 13:52:28
>34
まじ、ありがとうございました。
36:デフォルトの名無しさん
10/05/29 14:06:54
[1]授業単元:プログラミング演習
[2]問題文:たしてちょうど15になる7個の自然数の組合せをすべて列挙し、、
すべての組合せを表示し終えた後にそれらの組合せが全部でいくつあるの
かも出力するプログラムを作れ。
[3]
[3.1]OS:windows7
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C++
[4]期限:2010年6月1日まで
[5]できればfor文orwhile文(他の文が一部混ぜっていてもいい)
お願いします。
37:デフォルトの名無しさん
10/05/29 14:08:59
元のスレの答えで十分だろ
38:デフォルトの名無しさん
10/05/29 14:14:27
test
39:デフォルトの名無しさん
10/05/29 14:22:22
URLリンク(qb5.2ch.net)
テストするな
40:デフォルトの名無しさん
10/05/29 14:47:34
>>36 for文も使ってある
#include <stdio.h>
void hoge(int *count, int result[], int left_num, int min_num, int rest){
int i;
if(rest<=1)
{
result[0]=left_num;
for(i=0;i<7;i++) printf(" %d", result[i]);
printf("\n");
*count+=1;
return;
}
for(i=min_num;i<=left_num/rest;i++)
{
result[rest-1]=i;
hoge(count, result, left_num-i, i, rest-1);
}
}
int huga(void){
int count=0, result[7];
hoge(&count, result, 15, 1, 7);
return count;
}
int main(void){
printf("%d\n", huga());
}
41:デフォルトの名無しさん
10/05/29 15:01:03
>>40
ありがとうございます。
42:デフォルトの名無しさん
10/05/29 23:48:19
>>33
ありがとうございました。
43:デフォルトの名無しさん
10/05/30 00:27:48
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2010年5月31日8:30まで
[5] その他の制限:step通りに作成
よろしくお願いします。
44:デフォルトの名無しさん
10/05/30 11:39:25
>>43
5目並べなのか10目並べなのかはっきりしてほしい
45:デフォルトの名無しさん
10/05/30 11:43:18
どこをどう読んだら10目並べなんてものが出てくるのかw
46:デフォルトの名無しさん
10/05/30 11:44:56
>>45
これ
[step1]'十','-’,'|’などの文字を使って五目並べをするための10行10列の格子枠をキャラク
タモードで表示する。関数化(関数名waku)しておく。(注意:この格子枠を表示するのが
難しければ、列を表す最上端の数字1~1Oと、各行の左端に行を現す数字1~10を表示
すること)
1 2 ・・・・・10
+---+---+・・・
1 |
+
2 |
47:デフォルトの名無しさん
10/05/30 11:53:38
五目並べをする盤のサイズが10*10なだけにしか読めないが。
48:デフォルトの名無しさん
10/05/30 12:00:06
そうだな、ルールを勘違いしてた
49:デフォルトの名無しさん
10/05/30 15:56:54
>>43
URLリンク(kansai2channeler.hp.infoseek.co.jp)
50:デフォルトの名無しさん
10/05/30 16:03:12
AとBとでループ2つってのは微妙
51:デフォルトの名無しさん
10/05/30 16:08:01
>>49
ありがとうございました。
52:デフォルトの名無しさん
10/05/30 16:26:57
>>49
斜めの判定の実装で悪戦苦闘しているうちに先越された!
くやしい! でも感じちゃう。
53:デフォルトの名無しさん
10/05/30 16:34:29
>>49
そう思ったなら自分で改造してみるのがプログラマってもんでしょう!
…負け惜しみじゃないですよ^q^
54:デフォルトの名無しさん
10/05/30 16:35:13
アンカミス…
>>53は>>50宛です
55:デフォルトの名無しさん
10/05/30 16:45:00
案外すぐ直せたので直しました
void main() {
int x, y, player = 1;
char buf[32];
waku(0, 0, 0);
for (;;) {
do {
printf("%sさん次の手を入力しなさい\n", koma[player]);
fgets(buf, MAX_BUF, stdin);
} while (inputToVector(buf, &x, &y));
waku(x, y, player);
if (narabi(x, y, player)) {
printf("%sさんの勝ち\n", koma[player]);
break;
}
player = 3 - player;
}
}
56:デフォルトの名無しさん
10/05/30 16:53:04
質問1に答えやすくしてるのかと思ったけどそうじゃなかったのか
57:デフォルトの名無しさん
10/05/30 17:08:08
最初はそのつもりだったけど>>50に指摘された時点ではすっかり忘れてたw
58:デフォルトの名無しさん
10/05/31 16:59:42
[1] 授業単元:C言語プログラミング
[2] 問題文:10進数を2進数に変換するプログラムをC言語でつくれ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日の昼
[5] その他の制限: 制限はありませんが基本的な構造でお願いします
59:デフォルトの名無しさん
10/05/31 17:19:47
>>58
URLリンク(codepad.org)
60:デフォルトの名無しさん
10/05/31 17:27:04
>>59
ありがとうございます。
制限に書き忘れましたができればビット演算子は無しでお願いします。
61:デフォルトの名無しさん
10/05/31 17:34:16
どこにビット演算子が
62:デフォルトの名無しさん
10/05/31 17:55:43
>>59
短くしてみたw
URLリンク(codepad.org)
再帰でリバースを排除
これで提出はしない方がいいと思うけど
63:デフォルトの名無しさん
10/05/31 18:19:35
>>62
さらに
負号で負数にも対応
URLリンク(codepad.org)
むしろ
ビット演算子を使った場合(この環境では負数は2の補数表現であることがわかる)
URLリンク(codepad.org)
64:デフォルトの名無しさん
10/05/31 18:41:54
簡単な問題だとレスがたくさん付くなw
65:デフォルトの名無しさん
10/05/31 18:49:24
たくさんも何も一人しか答えてないんじゃ?
66:デフォルトの名無しさん
10/05/31 18:51:42
>>62
再帰呼び出しの必要のない時は使わないのが吉
67:デフォルトの名無しさん
10/05/31 19:00:42
>>64
そうそう、これが「4元1次方程式を解け」とか「ルンゲ・クッタ法で」とかだったら、とたんに放置されてしまうんですよね。
68:デフォルトの名無しさん
10/05/31 19:01:39
放置+void main()議論でごまかす
69:デフォルトの名無しさん
10/05/31 19:06:22
>>68
void main() 議論は宿題がでなかった時期に燃えたのでは?
70:デフォルトの名無しさん
10/05/31 19:21:35
>>69
よく見るとそうだな
でも、数独議論でごまかすはあったようなきがする
71:デフォルトの名無しさん
10/05/31 19:42:49
数独は英語が読めないバカだったかバブルソートも知らないアホだったかが
スレを流そうとしてたんじゃねーの?w
72:デフォルトの名無しさん
10/05/31 20:43:55
C++の宿題出してくれ
73:デフォルトの名無しさん
10/05/31 21:02:19
自分自身を出力するソースコードをお願いします
74:デフォルトの名無しさん
10/05/31 21:06:26
ググればみつかるだろ
75:デフォルトの名無しさん
10/05/31 21:44:04
[1] 授業単元:C言語プログラミング
[2] 問題文:コマンドライン引数に指定された文字列それぞれが
16進数表記で表された0以上100万以下の整数であ
るをことをチェックした後、それを12進数に
変換したものを表示するプログラムをつくれ
16進数表記の先頭の0xはなくても良いがあってもエラーに
してはならない。16進数表記になっていない、あるいは
指定された範囲に無い場合はその旨表示する。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual C++.NET 2008
[3.3] 言語: C
[4] 期限: 明日の夕方
[5] その他の制限:
stdio.hをincludeできる。
そこで定義されている関数のみ標準関数として使用できる
標準関数以外で定義して使用できるものは1個に限るものとする。
グローバル変数は使用してはならない
各関数のローカル変数は2個まで使用できる。配列は使えない。
構造体、共用体 else文を使ってはならない。
76:デフォルトの名無しさん
10/05/31 21:48:53
制限めんどくさくてやる気しないw
77:デフォルトの名無しさん
10/05/31 21:49:14
やってみようと思ったが制限が厳しすぎて一気にやる気がなくなった
まぁ、可能なんだろうけど
78:デフォルトの名無しさん
10/05/31 21:50:59
意訳すると
「やる気がない」=「できない」
79:デフォルトの名無しさん
10/05/31 21:54:24
>標準関数以外で定義して使用できるものは1個に限るものとする。
これって自作関数1個しか作っちゃいけないってことか?
メイン一つと自作関数一つ、それぞれローカル変数2個だけってかなり厳しくないか?
80:デフォルトの名無しさん
10/05/31 21:55:38
main定義したら終わりじゃね
81:デフォルトの名無しさん
10/05/31 21:57:20
仮引数ってローカル変数扱いだから、メインで他の変数宣言しちゃだめじゃんw
82:デフォルトの名無しさん
10/05/31 22:01:55
>>058
URLリンク(kansai2channeler.hp.infoseek.co.jp)
83:デフォルトの名無しさん
10/05/31 22:05:12
>>80
暗黙のうちに、main関数以外で自作できるのは1つだけ
でいいんぢゃね?
あと引数は、C言語教室的にはローカル変数とは区別されるだろ?
{}の中で定義される変数のことなんだろから
84:デフォルトの名無しさん
10/05/31 22:07:34
#include<stdio.h>
int main(int argc, char *argv[]){
long x, y=0;
if(argc<2){
printf("\nエラー:コマンドライン引数を指定してください\n");
return 1;
}
if(sscanf(argv[1], "0x%lx", &x)!=1){
if(sscanf(argv[1], "%lx", &x)!=1){
printf("\nエラー:十六進数ではありません\n");
return 2;
}
}
if(x<0 || 1000000<x){
printf("\nエラー:値が範囲外です\n");
return 3;
}
y+=(x/(1*12*12*12*12*12))%12<<20;
y+=(x/(1*12*12*12*12))%12<<16;
y+=(x/(1*12*12*12))%12<<12;
y+=(x/(1*12*12))%12<<8;
y+=(x/(1*12))%12<<4;
y+=(x/(1))%12;
printf("%lx\n", y);
return 0;
}
85:デフォルトの名無しさん
10/05/31 22:07:45
ずいぶん厳しい制限だなぁこれ。
86:デフォルトの名無しさん
10/05/31 22:11:41
>>84
文字列は一つじゃないみたいだけど
87:デフォルトの名無しさん
10/05/31 22:12:36
strtolってstdlibか
まんどくせ
88:デフォルトの名無しさん
10/05/31 22:18:31
>>86
y使い回せばよくね
89:デフォルトの名無しさん
10/05/31 22:19:04
#include<stdio.h>
long func(long x){
long y=0;
y+=(x/(1*12*12*12*12*12))%12<<20;
y+=(x/(1*12*12*12*12))%12<<16;
y+=(x/(1*12*12*12))%12<<12;
y+=(x/(1*12*12))%12<<8;
y+=(x/(1*12))%12<<4;
y+=(x/(1))%12;
return y;
}
int main(int argc, char *argv[]){
long i, x;
for(i=1;i<argc;i++){
if(sscanf(argv[i], "0x%lx", &x)!=1){
if(sscanf(argv[i], "%lx", &x)!=1){
printf("\nエラー:十六進数ではありません. %s\n", argv[i]);
continue;
}
}
if(x<0 || 1000000<x){
printf("\nエラー:値が範囲外です. %ld\n", x);
continue;
}
printf("%s -> %lx\n", argv[i], func(x));
}
return 0;
}
90:デフォルトの名無しさん
10/05/31 22:20:47
sscanf()って前の一部が条件満たすと読み込めちゃうんだよな。
91:デフォルトの名無しさん
10/05/31 23:11:12
>>75
URLリンク(codepad.org)
>>90の問題にも対応したぞ
92:デフォルトの名無しさん
10/05/31 23:17:17
[1] 授業単元:応用プログラム~C言語講座
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限: 2010年6月1日15時まで
よろしくお願いします
93:デフォルトの名無しさん
10/05/31 23:45:53
これが12進数じゃなくて8進数とか6進数とかだったら
お手上げだな
94:デフォルトの名無しさん
10/05/31 23:49:53
>>93
なんでそう思うの?
95:デフォルトの名無しさん
10/05/31 23:54:04
>>092
URLリンク(kansai2channeler.hp.infoseek.co.jp)
96:デフォルトの名無しさん
10/05/31 23:54:44
先程はありがとうございました。
たびたび申し訳ありません。
[1] 授業単元:C言語プログラミング
[2] 問題文:引数に与えられた10進数を2進数に変換し表示するするプログラムをC言語でつくれ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日の昼
[5] その他の制限: 制限はありませんが基本的な構造でお願いします
97:デフォルトの名無しさん
10/05/31 23:59:32
>>96
ありがとうございます
98:デフォルトの名無しさん
10/06/01 00:02:17
安価ミスです
>>95
ありがとうございます
99:デフォルトの名無しさん
10/06/01 00:03:50
>>096
URLリンク(kansai2channeler.hp.infoseek.co.jp)
100:デフォルトの名無しさん
10/06/01 00:06:54
>>96
URLリンク(codepad.org)
101:デフォルトの名無しさん
10/06/01 00:15:44
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
n元連立1次方程式を解き,掃き出し法により求まる係数マトリクスの逆行列と解ベクトルを表示するプログラムを作れ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: Visual C++
[3.3] 言語:C++
[4] 期限: 2010年6月3日15:00頃まで
[5] その他の制限: 出来るだけ基本的な方法でお願いします。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
時間がなくなってきたので質問させていただきました。
自分なりにC++を扱うホームページの逆行列のプログラムを参考に、あまり分からないながら作ったのが下のプログラムです。
メモリやn次元の定義等は講義中で習っていないので良くわからないのですが、解を代入して求める未知数ベクトルを算出する作業が思うようにいきません。
URLのプログラムをうまい具合に変えて問題文の条件を満たすプログラムにして頂けると助かります。
またinclude<iostream>やcout、cinは授業の方では扱っていないので
include<stdio.h>の形でprintfやscanfを用いて作って頂けたら幸いです。
102:デフォルトの名無しさん
10/06/01 00:21:46
C++の授業でiostreamでなくstdio.hを使わせるってのはどうなんだろう
せめてstdio.hでなくcstdioじゃないかいな
103:デフォルトの名無しさん
10/06/01 01:56:27
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):整数を一つ入力してその数以下の素数をすべて出力するプログラムを作れ
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:Microsoft visual c++
[3.3] 言語:C
[4] 期限:2010年6月3日
[5] その他の制限:基本的な構造でお願いします
URLリンク(kansai2channeler.hp.infoseek.co.jp)
こう書いてみたらノートン先生が怒るんですけど
どうすればいいんですか?
104:デフォルトの名無しさん
10/06/01 03:14:20
>>103
ノートン先生のSONARが怒っているんだろ?
だったら自分のコンパイル環境に問題がないと信じているのなら、
それが吐いた実行ファイルも信頼してやれ。
最近のSONARは過剰反応しすぎだ。
105:デフォルトの名無しさん
10/06/01 03:23:16
>>103
URLリンク(kansai2channeler.hp.infoseek.co.jp)
修正点は、
・mを初期化
・2も素数
106:デフォルトの名無しさん
10/06/01 03:25:15
>>104
最近じゃなく昔からだw
>>103
nに2以上が代入されたときにiのループの最初(i=2)はjのループを一回も回らない(j<i不成立)から
初期化されていないmと0とを比較しようとするので2が出力されるかどうかは運次第
107:デフォルトの名無しさん
10/06/01 09:45:38
[1] 授業単元:応用プログラム~C言語講座
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限: 2010年6月1日まで
よろしくお願いします
108:デフォルトの名無しさん
10/06/01 11:34:57
>>101
URLリンク(kansai2channeler.hp.infoseek.co.jp)
もし問題があったら早めに知らせて下さい。
ちなみに演算結果は行列の教科書で検算して正しいことを確かめています。
逆行列が潰れる時(行列式が0の時)のチェックはしていません。
109:デフォルトの名無しさん
10/06/01 13:23:09
>>107
やってみたけど俺には制限が厳し過ぎて㍉
URLリンク(ideone.com)
110:デフォルトの名無しさん
10/06/01 17:03:02
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):(1)x^2*cosx の0~π/2までの積分 (2)(logx)^2
の1~eまでの積分
[3] 環境
[3.1] OS: Windows
[3.2] visual c++
[3.3] 言語: c++
[5] シンプソンの公式と台形公式を使っての数値積分をするプログラム
111:デフォルトの名無しさん
10/06/01 17:34:42
>>110
URLリンク(kansai2channeler.hp.infoseek.co.jp)
112:デフォルトの名無しさん
10/06/01 18:02:28
>>111
ありがとうございます
113:デフォルトの名無しさん
10/06/01 18:19:04
[1] 授業単元: 情報システム学演習
[2] 問題文(含コード&リンク): URLリンク(uproda11.2ch-library.com)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: わからないのですが、
gcc -o というコマンドを使っています。
[3.3] 言語: C
[4] 期限:2010年6月3日13:00まで
[5] その他の制限:制限というか、ヒント文みたいなのです。>>1のろだは容量オーバーで使えなかったので、別ろだです。
URLリンク(uproda11.2ch-library.com)
切実に困っています。
よろしくお願いします。
114:デフォルトの名無しさん
10/06/01 18:36:34
>>113
x-y 平面に展開せよ、とのことであるが、 x軸、y軸になにをわりあてるか、情報をください。
1) x: 時間t, y:θ(t)
2) x: 時間t, y:θ'(t)
3) x: θ(t), y:θ'(t)
どれもありそうです。
115:デフォルトの名無しさん
10/06/01 19:52:00
宿題っていうかプログラム作成依頼スレみたいなのって無い?
116:デフォルトの名無しさん
10/06/01 19:58:37
>>115
岡ちゃん乙
117:デフォルトの名無しさん
10/06/01 21:09:26
>>115
ちゃんと払ってくれるのか?
118:デフォルトの名無しさん
10/06/02 00:08:32
>>114
>>113です。
3つのデータを作って、そのあとgnuplotで2つ選んでレポートを書くという課題です。
なので、3つのデータをファイルで書き出せるようにしたいです…。
説明不足ですいません…
119:デフォルトの名無しさん
10/06/02 00:18:35
それ、答えになってんの?
120:デフォルトの名無しさん
10/06/02 00:22:37
[1] 授業単元:プログラミング演習
[2] 問題文:整数nを入力し、以下のようになサイズnの”Z型の図形”を”*”で表示するプログラムを作成しなさい。
ただし、図形を表示するためのnの値は3以上とし、2以下の値が入力された場合は処理を終了する様にしなさい。
[実行例]
3 <-n入力
n=3
***
*
***
4 <-n入力
n=4
****
*
*
****
8 <-n入力
n=8
********
*
*
*
*
*
*
********
2
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4]期限:6/2日PM10:00
[5]その他制限: printf int while scanf float for のみ使用、2重ループ必
121:デフォルトの名無しさん
10/06/02 00:34:47
#include <stdio.h>
int main(void)
{
int i, j, n;
while(1) {
scanf("%d", &n);
if(n <= 2) break;
printf("n = %d\n", n);
for(i=1; i<=n; i++) {
for(j=0; j<n; j++) printf("%c", i==1||i==n||i+j==n ? '*' : ' ');
printf("\n");
}}
return 0;
}
122:デフォルトの名無しさん
10/06/02 08:46:34
厳密にはcの宿題と言えないかもしれないんですが、宜しくお願いします。
cをコンパイルしてできたexeを起動して、プログラムの中で起きてる割り込みを調べるには
どのようなコマンドや方法で調べればいいのでしょうか?
123:デフォルトの名無しさん
10/06/02 15:58:49
[1] 授業単元: デバイス情報処理
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語:C++
124:デフォルトの名無しさん
10/06/02 16:02:24
>>123
字が小さすぎて区別できない
125:デフォルトの名無しさん
10/06/02 16:04:27
>>124
すみません、もっと大きな画像を貼れるアップローダを探してきます。
126:デフォルトの名無しさん
10/06/02 16:14:22
>>124
URLリンク(www1.axfc.net)
多少大きなサイズにできたと思います。
127:デフォルトの名無しさん
10/06/02 17:53:56
>>121
書いていただきありがたいのですが
制限がprintf int while scanf float for のみ使用、2重ループ必
なので、breakは使用できません。
説明が曖昧でスミマソ
128:デフォルトの名無しさん
10/06/02 17:57:13
ちょっと条件はっきりしないんだけど、nは入力するごとにプログラムが終了するのか、
>>121みたいに2以下が入力するまで繰り返し入力するのか、どっち?
129:デフォルトの名無しさん
10/06/02 18:07:56
>>127
- if(n <= 2) break;
+ if(n <= 2) return 0;
130:デフォルトの名無しさん
10/06/02 18:11:25
2以下を入力するまで繰り返しです
何度もすっ見ません;
131:デフォルトの名無しさん
10/06/02 18:14:36
#include <stdio.h>
int main(void)
{
int i, j, n;
while(scanf("%d", &n)==1 && n > 2) for(i=1; i<=n; i++) for(j=0; j<=n; j++) printf("%c", j==n?'\n':i==1||i==n||i+j==n?'*':' ');
return 0;
}
132:デフォルトの名無しさん
10/06/02 18:16:17
printf("n=%d\n", n)忘れたw
#include <stdio.h>
int main(void)
{
int i, j, n;
while(scanf("%d", &n)==1 && n > 2){
printf("n=%d\n", n);
for(i=1; i<=n; i++) for(j=0; j<=n; j++) printf("%c", j==n?'\n':i==1||i==n||i+j==n?'*':' ');}
return 0;
}
133:デフォルトの名無しさん
10/06/02 18:20:45
>>132
ありがとうございます。!!
134:デフォルトの名無しさん
10/06/02 18:28:02
いえいえ
135:デフォルトの名無しさん
10/06/02 18:37:25
またお前か
136:デフォルトの名無しさん
10/06/02 18:50:38
>>135-136
くだらん書き込みでスレを汚さんでくれ
137:デフォルトの名無しさん
10/06/02 18:56:08
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:Microsoft visual c++
[3.3] 言語:C
[4] 期限:2010年6月3日8:00まで
[5] その他の制限:基本的な構造でお願いします
138:デフォルトの名無しさん
10/06/02 19:04:11
>>137
「ポインタ配列」ってなんですか?
”配列へのポインタ”ですか?
というあたりを出題者に問うてください。
139:デフォルトの名無しさん
10/06/02 19:06:28
ポインタの配列でしょう
140:デフォルトの名無しさん
10/06/02 19:10:51
>>139
それだと話があわない。
141:デフォルトの名無しさん
10/06/02 19:11:26
>>137
[1]
#include <stdio.h>
int main(void)
{
int i, a[5] = {1,2,3,4,5}, b[5] = {6,7,8,9,10}, *p[2];
p[0] = a;
p[1] = b;
for(i=0; i<5; i++) printf("%f ", (p[0][i] + p[1][i]) / 2.0);
return 0;
}
142:デフォルトの名無しさん
10/06/02 19:15:25
void print(char **string, int n) { while(n--) puts(*string++); }
143: ◆QZaw55cn4c
10/06/02 19:23:15
>>137
URLリンク(codepad.org)
URLリンク(codepad.org)
144:デフォルトの名無しさん
10/06/02 19:25:03
初期化は代入とは区別されるのが普通
145:デフォルトの名無しさん
10/06/02 19:33:44
>>138=140は問題をどう解釈したのか気になる
146:デフォルトの名無しさん
10/06/02 20:17:05
>>138
配列はANSI Cでもまとめて扱うことはできない。
だから”配列へのポインタ”と言うのは存在しない。
”配列の先頭要素へのポインタ”なら存在する。
147:デフォルトの名無しさん
10/06/02 20:39:37
>>135
俺じゃないから別の人だよ。
148:デフォルトの名無しさん
10/06/02 20:40:01
int (*p)[N];
pは要素数Nの配列へのポインタ
149:デフォルトの名無しさん
10/06/02 20:40:56
>>146
またそういう物議をかもすレスをする。いいんだけどさ。
150:デフォルトの名無しさん
10/06/02 20:48:56
>>102
やはり授業の延長だけでは難しいんですかね。
cstdioについて自分でも少し勉強してみます。
>>108
ありがとうございます。
動作に不具合はありませんでした。
こちらの要望にも沿ってお答え頂き大変助かりました。
151:デフォルトの名無しさん
10/06/02 20:54:01
>>144
ん、古いC ならば理解できますが、auto な変数への初期化が OK となっている現在では差異がわかりません。
でも C++ の話はなしね。
152:138 ◆QZaw55cn4c
10/06/02 20:57:27
>>145
いや、間違って解釈していました。
ごめんなさい。
153:デフォルトの名無しさん
10/06/02 20:59:24
ほんと毎回毎回日本語読めない低脳だなw
154:デフォルトの名無しさん
10/06/02 21:18:40
ちゃんと謝ったら謝ったでこの扱いか。厳しいスレだなあ。同情する。
155:デフォルトの名無しさん
10/06/02 21:22:25
ささいなミスでも厳しく追求されるのがこのスレだぜ?w
156:デフォルトの名無しさん
10/06/02 21:24:22
なに、馴れてます。どうせ自分では宿題のひとつもとけない人でしょうし。
157:デフォルトの名無しさん
10/06/02 21:25:37
慣れる前に問題を正しく読めるようになってくれw
158:デフォルトの名無しさん
10/06/02 21:26:57
ん、精進します。
159:デフォルトの名無しさん
10/06/02 21:27:34
>>156
>>123=>>126 を解いてくれ
若干情報が落ちてるから半導体の勉強して無いと調べるのが面倒だけど
公式にあてはめるだけの問題だ
160:デフォルトの名無しさん
10/06/02 21:28:37
トリつけるんならレス全部につけてくれないかな。
NGしやすくなるし。
161:デフォルトの名無しさん
10/06/02 21:30:43
物性は専門ではないので、どう公式にあてはめればいいかわからないのです。ごめんなさい。
162:デフォルトの名無しさん
10/06/02 21:34:18
ん
163:デフォルトの名無しさん
10/06/02 21:39:22
一行以上の文章が読めない人なのかもしれない
164:デフォルトの名無しさん
10/06/02 21:56:47
[1] 授業単元:応用プログラム~C言語講座
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限: 2010年6月2日まで
できなくて困っております よろしくお願いします
165:デフォルトの名無しさん
10/06/02 22:01:50
>>164
>>109
166:デフォルトの名無しさん
10/06/02 22:06:39
>>165
>>109
ありがとうございます
167:デフォルトの名無しさん
10/06/02 22:13:15
学校の先生ってやっぱバカがやってんだな。。
scanfとか平気で使わせるし、第一曖昧すぎる。
mainから呼び出すだけならwhileも使えないしどうやってやれっての。
168:デフォルトの名無しさん
10/06/02 22:17:14
燕雀いずくんぞ鴻鵠の志を知らんや
169:デフォルトの名無しさん
10/06/02 22:17:24
>>167
sanf() はよく批判されていますが、危険性のない使い方であればいいと思います。
170:デフォルトの名無しさん
10/06/02 22:19:09
sed -e 's/sanf/scanf/'
171:デフォルトの名無しさん
10/06/02 22:20:17
>>167
グローバル変数使いまくれば出来るんだけど
引数や戻り値を持つ意味がなくなる
172:デフォルトの名無しさん
10/06/02 22:31:20
>>171
まったく。
なまじ分かる学生の方が悩むだろうな
173:デフォルトの名無しさん
10/06/02 22:35:42
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
1、x[6]を宣言して、x[0]に5、x[1]に8、x[2]に6、x[3]に4、x[4]に1、x[5]に3を代入した後、ポインタを使って、x[0], x[2], x[4]の和と、x[1], x[3], x[5]の積を求めるプログラムを作成せよ。
2、与えられた文字数分だけ文字を一文字ずつ順に表示するprint関数を作成せよ。引数として文字列配列stringと整数nを用いること。ここで、stringは文字型配列の先頭アドレスを、nは表示する文字を意味する。
3、以下のmain分に従い、2つの文字列配列の中身を交換する関数exchangeを完成させよ。
int main(void){
char string1[] = "abcdefg";
char string2[] = "hijklmn";
printf("string1 = %s string2 = %s\n", string1, string2);
printf("exchange(string1, string2)");
exchange(string1, string2);
printf("string1 = %s string2 = %s\n", string1, string2);
return 0;
}
[3] 環境
[3.1] OS:Win Vista
[3.2] コンパイラ名とバージョン:VS 2008
[3.3] 言語:C
[4] 期限:[2010年6月3日12:00まで]
[5] その他の制限:問題文で指定されていること以外は無し
よろしくお願いします
174:デフォルトの名無しさん
10/06/02 23:12:28
>>173 [1]
#include <stdio.h>
int main(void){
int x[6];
x[0]=5, x[1]=8, x[2]=6, x[3]=4, x[4]=1, x[5]=3;
printf("wa=%d\n", *(x) + *(x+2) + *(x+4) );
printf("seki=%d\n", *(x+1) * *(x+3) * *(x+5) );
return 0;
}
175:デフォルトの名無しさん
10/06/02 23:15:55
>>173
1
int main(int argc, char ** argv)
{
int x[6]={5,8,6,4,1,3};
int *p = x;
printf("sum = %d, mul =%d\n", (*p) + *(p + 2) + *(p + 4), *(p + 1) * (*(p + 3)) * (*(p + 5)));
return 0;
}
2は意味がまったく分からない。
文字列配列ってのは文字配列の事か?普通に考えるとchar**になるが、それだともっと意味が分からない。
void myprintf(int n, char * string)
{
int len = strlen(string);
while(len--)putc(n);
}
ほい。(ほんとか?)
3.
void exchange(char *str1, char *str2)
{
char buff[7];
memcpy(buff, str1, 7);
memcpy(str1, str2, 7);
memcpy(str2, buff, 7);
}
176: ◆QZaw55cn4c
10/06/02 23:22:05
>>173
URLリンク(codepad.org)
URLリンク(codepad.org)
URLリンク(codepad.org)
177:デフォルトの名無しさん
10/06/02 23:22:41
>>174-176
ありがとうございます
178: ◆QZaw55cn4c
10/06/02 23:33:14
訂正一問目
URLリンク(codepad.org)
179:デフォルトの名無しさん
10/06/03 00:14:50
>>143
おいそれC++じゃないとコンパイルエラーになるぞ
>>137の[3.3]にはCと書いてあるんだが
180:デフォルトの名無しさん
10/06/03 00:38:27
>>179
コンパイラは何をお使いで?
181:デフォルトの名無しさん
10/06/03 00:46:26
>>180
コンパイラは関係ない
int *p[2] = {a, b};
これがC++でしか通らない
Cなら
int *p[2];
p[0] = a;
p[1] = b;
と書かなければならない
182:デフォルトの名無しさん
10/06/03 00:48:00
>>180
gccの拡張を当てにすんなよ
183:デフォルトの名無しさん
10/06/03 03:48:39
>>180
VC2.0で通りますかね
184: ◆QZaw55cn4c
10/06/03 04:17:55
>>179
おかしいですね。
gcc でも bcc32 でも cl でも駄目押しの lsi-c でも、コンパイルできましたが。
auto な配列への初期化は、最近の規格では OK ではないでしょうか。
185:デフォルトの名無しさん
10/06/03 05:38:31
gccをつかって細かいこと気にしすぎな人用のコンパイルオプションつけてコンパイルできたらそれでいいよ
186:デフォルトの名無しさん
10/06/03 08:22:26
>>184
cppじゃなくてcにしてみるとか。
187:184
10/06/03 08:41:46
はい、拡張子は .c です。どのコンパイラでも問題なくコンパイルできます。
188:デフォルトの名無しさん
10/06/03 09:53:13
>>181
勘違いしてるぞ
Cは初期化の時はもう値が決まっている定数ならば何でもよい
関数の戻り値だけがC++で拡張された
189:デフォルトの名無しさん
10/06/03 13:32:44
>>188
なるほど、元のコードでは
static int a[] = { 0 };
static int b[] = { 0 };
int p[] = {a, b};
としてあり、 a, b, はコンパイル時には確定しているので auto な p への初期化は可能なんですね。
これを
int a[] = { 0 ];
int b[] = { 0 };
int p[] = {a, b};
とすると、a, b は実行するまではわからないから、コンパイルできないようですね。
190:デフォルトの名無しさん
10/06/03 13:58:50
> int a[] = { 0 ];
> int b[] = { 0 };
> int p[] = {a, b};
・・・。
int *p[] = {a, b}; じゃないのか?
191:デフォルトの名無しさん
10/06/03 14:44:11
>>190
なんで神妙な感じでそこにつっこみいれたんだろ。
流れ見てたらそれはtypoだと予想できる
192:デフォルトの名無しさん
10/06/03 14:49:07
どうせなら]にも突っ込もうぜw
193:デフォルトの名無しさん
10/06/03 15:26:06
>>189
そんな感じだね
C++ではコンパイルできてしまうから、Cでも出来ると思いがちだが
実は無理だという。
特に俺の場合staticは関数の呼び出し毎に値が変わって欲しくない
変数にしか付けないので、余計にエラーが出やすい。
194:デフォルトの名無しさん
10/06/03 16:40:46
で、今回の場合はaとbがstaticであり、この場合にpをabで初期化することを咎めるのはありやなしや
195:デフォルトの名無しさん
10/06/03 18:26:30
>>194
標準のCでは問題ない、ということですね。
196:デフォルトの名無しさん
10/06/03 18:32:19
>>182
脊髄反射乙
付和雷同乙
197:デフォルトの名無しさん
10/06/03 21:28:40
覚えたての格言や四字熟語を並べ立てて越に浸ってるやつなんなの
198:デフォルトの名無しさん
10/06/03 21:30:27
「悦に浸る」だった。Google IMEって誤用とかも変換候補にあるから使いづらい。
199:デフォルトの名無しさん
10/06/03 21:36:02
書き込み前に確認しなかった過失を棚に上げてGoogleIMEのせいにするやつってなんなの
使いづらいならやめればいいじゃん
200:デフォルトの名無しさん
10/06/03 21:53:06
これがゆとりの実態です
経験値を得ることでモンペへと進化します
201:デフォルトの名無しさん
10/06/03 22:01:05
GoogleでもIMEでもとにかく外人の作るソフトはウザイのがおおいな。
テキストボックスの中の文字列に編集を加えようとすると必ず全部選択する。
オレは神経をつかってカレットが狙ったところに来るようにクリックしてるんだがな!
202:デフォルトの名無しさん
10/06/03 22:39:35
>>201
コピーしたいのに全選択がめんどくさいというゆとりのための仕様だよ
っていうか、業務系だと日本でも多々ある、というか、そういう要望がでてくるよ
言われたことない?
203:デフォルトの名無しさん
10/06/03 23:39:04
#include<stdio.h>
int main(void)
{
int array[5][4];
int i,j;
for(i=0;i<4;i++){
for(j=0;j<3;j++){
printf("%d行%d列の要素を入力してください: ", i+1, j+1);
scanf("%d", &array[i][j]);
array[i][3] += array[i][j];
array[4][j] += array[i][j];
}
}
204:デフォルトの名無しさん
10/06/03 23:42:10
for(i=0; i<5; ++i){
for(j=0; j<4; ++j){
printf( "%5d ", array[i][j] );
while(i==5){
printf( "%5d ", array[i][3] );
i++;
while(j==4){
printf( "%5d ", array[4][j]);
j++;
}
}
}
printf( "\n" );
}
「4行3列の配列をキーボードから読み込み、
各行、各列の和、及び配列全体の総和を求め、表示する
プログラムを作成しなさい。」という問題です。
途中まで作りましたが、出力が↓のようになってしまいます。どうすればいいんでしょうか?
1 3 2 -858993454
4 5 6 -858993445
2 4 7 -858993447
11 13 15 -858993421
858993442 -858993435 -858993430 -858993460
205:デフォルトの名無しさん
10/06/03 23:47:25
言語はC++
環境はvisual C++ です。
あさってまでに提出しなければなりません。
206:デフォルトの名無しさん
10/06/03 23:48:13
配列範囲外
207:デフォルトの名無しさん
10/06/03 23:50:57
>>206
配列範囲外とはどういうことでしょうか?
208:デフォルトの名無しさん
10/06/03 23:59:35
配列範囲内だが未初期化、というか、過大な領域を作っている
209:デフォルトの名無しさん
10/06/04 00:02:17
>>208
どこが悪いんですか?修正の仕方を教えてもらえるとありがたいです。
210:デフォルトの名無しさん
10/06/04 00:09:59
配列の範囲だっつってんだろ
211:デフォルトの名無しさん
10/06/04 00:11:50
>>209
int array[5][4]={{0}};
212:デフォルトの名無しさん
10/06/04 00:27:30
>>211
ありがとうございます。
おかげで総和以外は出力できました。
もう一つ、総和の計算と出力はどうすればいいんでしょうか?
213:デフォルトの名無しさん
10/06/04 00:31:09
>>209
自分で作ってないからわかんないんだよ
文字列のクセで1個余分に、ってしたのかもしれないけどさ。
214:デフォルトの名無しさん
10/06/04 00:33:57
あと一息だね ↓これが何してるのか知ってたらピンとくる
array[4][j] += array[i][j];
215:デフォルトの名無しさん
10/06/04 06:37:13
ここって、プログラムができなくて授業についていけてない奴を、さらについていけなくさせるために
プログラムを全部作ってあげるスレだと思ってたけど、意外とみんな優しいんだね
216:デフォルトの名無しさん
10/06/04 07:01:02
>>215
若い芽を摘むかのごとく、
全部教えて上げて、自分たちの食い扶持を維持するためのスレでもある。
217:デフォルトの名無しさん
10/06/04 08:40:05
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
下記のアップロードされたファイル(数字の羅列)を読み込み、並び替え方法(昇順/降順)で指定されたファイル(out.txt)
へ出力するプログラムを作成せよ
URLリンク(www1.axfc.net)
以下実行結果
並び替え方法をしていしてください(1:昇順、2:降順)
1
並び替えたファイルへ出力しました。
cat out.txt ←catコマンドで中身確認
1
3
3
3
[3] 環境
[3.1] OS:Win Vista
[3.2] コンパイラ名とバージョン:GCC
[3.3] 言語:C
[4] 期限:本日中
急で申し訳ないですがよろしくお願いします。
218:デフォルトの名無しさん
10/06/04 09:34:27
授業すらついていけない奴は競争相手にもならんが
死ぬほど足を引っ張ってくれるので成敗しておく
219:デフォルトの名無しさん
10/06/04 10:06:58
>>217
URLリンク(codepad.org)
ソートはしないけど、入力例に限定的な解法。
入力が、非負でかつ1000未満の整数のみを仮定。
tableでカウントするとき、nのチェックしてなかった。
220:デフォルトの名無しさん
10/06/04 10:09:56
そもそもからして、C言語記述課題に対して「解答」という
用語が適切か?
221:デフォルトの名無しさん
10/06/04 10:11:44
>>220
頭を使わなくても解ける問題なら質問には来ない
すくなくとも回答ではない
222:デフォルトの名無しさん
10/06/04 10:17:20
>>220
もとい文法やライブラリなどの制限があるから完全に自由ではない
のだがそれでも結果が殆ど同一(例えば数字だけとかキーワードだけ
とか)というわけではないんで解答とは言わないほうが良いよな...
だから>>221の言う通り回答というのもおかしい。
強いて言えば模範文例ってところなんだろな
223: ◆/91kCCQXBo
10/06/04 10:25:56
>>203
URLリンク(pastebin.com)
224:デフォルトの名無しさん
10/06/04 10:43:33
>>219
これはひどいw
225:デフォルトの名無しさん
10/06/04 10:46:47
せっかく上げてくれた模範文例を貶すのはやはりマナー違反
226:デフォルトの名無しさん
10/06/04 11:00:03
間違ってても?
227:デフォルトの名無しさん
10/06/04 11:22:22
コンパイラが文法違反とかはチェックしてくれるんで
「間違っている」という文章があがることはあまりない
文法以外の明示的暗黙的問わず存在する構文制限や
課題の意図に沿った文章になっているかどうかについては
100%そうであるとも言えないのは当然だが
228:デフォルトの名無しさん
10/06/04 11:27:21
219を昇順・降順で実行して見てから言えよw
>>219はコンパイルできるけど、「間違った」プログラムだぞ
229:デフォルトの名無しさん
10/06/04 12:18:36
[1] 授業単元:データベース論
[2] 問題文(含コード&リンク):サンプルデータから情報を取りだしその情報をstudents.txtとして出力するプログラムを組め
Students.txtの例は以下の通り
1 tanaka A
2 sano B
3 hori C
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン: Visual C++
[3.3] 言語:C++
[4] 期限: 2010年6月6日24:00
[5] その他の制限:
サンプルデータの形式はSqlite3、名前はstudents.sqlite3です。studentsテーブルを持ちそのテーブルはID(id)、学生の名前(name)、学生のクラス(class)を持っています。よろしくお願いします。
230: ◆/91kCCQXBo
10/06/04 13:20:49
e-mail >>217
URLリンク(pastebin.com)
231:デフォルトの名無しさん
10/06/04 13:28:51
SQLite3 DataBase
232:デフォルトの名無しさん
10/06/04 16:53:18
>>225
模範とならないものなら?
参考文例とでも読み替えておけばよいのかなー
233: ◆QZaw55cn4c
10/06/04 19:34:51
>>217
URLリンク(codepad.org)
>>225
そんなマナーがあるのですか?本当ですか?
間違っていたら、あるいは、間違っていなくても(>>143 に対する >>179, 結論は >>188)ネガティブな反応がありうることは覚悟しておくべきでしょう。
そのようなリスクが怖い弱虫なら回答しなければいいのです。
234:デフォルトの名無しさん
10/06/04 19:43:18
リスクを気にせず間違えまくるアホはできれば回答しないで欲しいけどな
235:デフォルトの名無しさん
10/06/04 19:45:09
>>214
返答できなくてすいませんでした。
おかげで完成させることができました。
ありがとうございます。
236:デフォルトの名無しさん
10/06/04 19:49:10
間違った回答は叩けということでよろしいか
237:デフォルトの名無しさん
10/06/04 19:52:31
>>236
いいと思います。
>>234
ほう、どこがまちがっているのですか?
238:デフォルトの名無しさん
10/06/04 19:54:16
指摘が具体的ならいいんじゃないか
239:デフォルトの名無しさん
10/06/04 19:54:24
>>234
あんたは一生解答でけへんくせに、口だけは達者やなあ
240:デフォルトの名無しさん
10/06/04 20:23:47
>>237
お前は今まで何回間違えたか覚えてないの?
241:デフォルトの名無しさん
10/06/04 20:28:20
>>235です。何度もすいません。
↓のように出力するにはどうすればいいでしょうか
1 4 5 10
4 5 6 15
5 8 7 20
10 10 10 30
20 27 28 75
242:デフォルトの名無しさん
10/06/04 20:30:07
歪んでしまったので、文章で書きます。
「行和、列和の前は少し空けるようにせよ」と書いてあります。
243:デフォルトの名無しさん
10/06/04 20:33:03
>>241
for(i=0; i<5; ++i) {
if(i==4) printf("\n");
for(j=0; j<4; ++j) printf("%*d", j==3 ? 10 : 5, array[i][j]);
}
244:デフォルトの名無しさん
10/06/04 20:36:19
ミスった
for(i=0; i<5; i++) {
if(i==4) printf("\n");
for(j=0; j<4; j++) printf("%*d", j==3 ? 10 : 5, array[i][j]);
printf("\n");
}
245:デフォルトの名無しさん
10/06/04 20:40:55
>>233
一つ聞いていい?
もしかして>>44=>>46もあなた?
246:デフォルトの名無しさん
10/06/04 20:47:20
>>240
何回宿題を解答したか覚えていないのと同じくらいに覚えていません。
247: ◆QZaw55cn4c
10/06/04 20:48:10
>>245
違います。
248:デフォルトの名無しさん
10/06/04 21:00:56
そっか。
あんなバカな読み違いをする人間が他にも回答者面してんのか。
249:デフォルトの名無しさん
10/06/04 21:10:47
>>244
すいません。早速入力したんですが、↓のようになってしまいます。
5
4
5
14
6
4
3
13
5
6
7
18
6
5
5
16
22
19
20
61
250:デフォルトの名無しさん
10/06/04 21:12:29
if(i==4)
を間違えて
if(i=4)
にしてない?
251:デフォルトの名無しさん
10/06/04 21:15:04
>>249
printf("%*d\n",...
ってしてない?
252:デフォルトの名無しさん
10/06/04 21:16:28
>>250
アホか
253:デフォルトの名無しさん
10/06/04 21:25:58
>>252
ごめん。よく見たら>>251の方があってそうだね。
254:デフォルトの名無しさん
10/06/04 21:26:35
>>250-251
そのままコピペしたら出力できるんですが、{ で囲むとできなくなります。
255:250
10/06/04 21:29:38
あー、そこだったかぁ。。。
for(j=0; j<4; j++) printf("%*d", j==3 ? 10 : 5, array[i][j]);
printf("\n");
?
for(j=0; j<4; j++) {
printf("%*d", j==3 ? 10 : 5, array[i][j]);
printf("\n");
}
○
for(j=0; j<4; j++) {
printf("%*d", j==3 ? 10 : 5, array[i][j]);
}
printf("\n");
エスパーにはなかなかなれないもんだな
256:デフォルトの名無しさん
10/06/04 21:34:34
>>255
ありがとうございます。
その通りでした。
257:デフォルトの名無しさん
10/06/04 22:13:12
>>248
で、あなたが回答者になったのはどれですか?恥ずかしがらないで教えてくださいよ。
258:デフォルトの名無しさん
10/06/04 22:35:02
[1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):
任意の文字列を二つ入力し、一つ目の文字列から二つ目の文字列を「全て」検索するプログラムを実装しなさい。
検索結果は、一つ目の文字列を0文字目から数えて、何文字目にあるかを答えるようにしなさい。以下に実行例を示す。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010年6月7日まで
[5] その他の制限:特にありません。
よろしくお願いします。
259:デフォルトの名無しさん
10/06/04 22:38:42
strstr
260:デフォルトの名無しさん
10/06/04 22:38:52
>>256
>>223 にも作ったのあるよ。この辺で言っとかないと。
261:デフォルトの名無しさん
10/06/04 22:47:57
>>223は空白じゃないからお気に召さなかったんじゃないかな
262:デフォルトの名無しさん
10/06/04 22:52:31
>>257
>>141
263:デフォルトの名無しさん
10/06/04 22:58:05
>>258
#include<stdio.h>
#include<string.h>
int main(void)
{
char buf[256], keyword[256], *p, *q;
int start, end;
printf("文字列を入力してください。\n");
fgets(buf, sizeof(buf), stdin);
if((p=strchr(buf, '\n'))) *p='\0';
printf("検索文字列を入力してください。\n");
fgets(keyword, sizeof(keyword), stdin);
if((p=strchr(keyword, '\n'))) *p='\0';
printf("文字列「%s」は", keyword);
for(p=buf;(q=strstr(p, keyword));p=q+1)
{
start=q-buf;
end=start+strlen(keyword)-1;
printf("%d文字目から%d文字目に存在します。\n", start, end);
}
if(p==buf) printf("存在しません。\n");
return 0;
}
264:デフォルトの名無しさん
10/06/04 22:58:55
ま、ここの「回答」で期待されるのは
問題文の意味(文法寄りか応用寄りかとかでも区別)を極力
的確に汲み取りその意図に出来るだけ沿った正しいC文を
模範作文として上げること だろなw
265:デフォルトの名無しさん
10/06/04 22:59:06
>>258
URLリンク(codepad.org)
266:265
10/06/04 23:00:56
ごめん、これ無し。
「全て検索」に対応してない。
267:デフォルトの名無しさん
10/06/04 23:03:25
>>264
つまり、こういうのは期待してない
268: ◆QZaw55cn4c
10/06/04 23:04:09
>>258
URLリンク(codepad.org)
>>262
がんばって中篇にも挑戦しましょう。
269:デフォルトの名無しさん
10/06/04 23:09:32
>>268
お前が読みそこなったのを一例に挙げただけだぞw
270:デフォルトの名無しさん
10/06/04 23:11:33
>>268
forの条件判断部に関数置くとか、最悪w
271:デフォルトの名無しさん
10/06/04 23:12:15
>>270
へ?なぜ?
272:デフォルトの名無しさん
10/06/04 23:14:17
なぜならループごとに同じ返り値が帰ってくることを分かってるものを呼び出すのは無駄だから。
273:デフォルトの名無しさん
10/06/04 23:17:09
>>272
それもそうですねえ。
strlen() をそのまま書いたほうがよみやすくないですか?
274:デフォルトの名無しさん
10/06/04 23:18:38
こんなバカが他人に
>がんばって中篇にも挑戦しましょう。
こんなこと言ってると思うと笑えない
275:デフォルトの名無しさん
10/06/04 23:24:32
>>274
ま、批判するのは簡単ですから。
276:デフォルトの名無しさん
10/06/04 23:28:01
>>275
素直に
「for文の前に
len_p=strlen(p);
len_q=strlen(q);
とあらかじめ代入しておけばよかった。」と言えばいいじゃないか。
277:デフォルトの名無しさん
10/06/04 23:38:13
>>276
その程度の基礎さえできてないアホが逆ギレするからウザいんだよw
278: ◆QZaw55cn4c
10/06/04 23:39:23
指摘された部分を反映しました。また、空文字列(strlen() == 0) の場合にも対応いたしました。
URLリンク(codepad.org)
>>276
たしかに。大変失礼いたしました。
279:デフォルトの名無しさん
10/06/04 23:43:20
結局、問題の根本を理解してないから言われたところを直せばいいとしか思わないんだろうなw
280:デフォルトの名無しさん
10/06/04 23:46:43
>>278
いや、それなおさなくていいよ。
他は見てないけど、少なくともそこの部分に関しては修正しなくていい。
心配なら速度を測ればよいよ。もしくはアセンブリを参照。
>>272は基礎はできてるのかもしれないけど、そこから先の知識をまだ持ってないみたい。
281:デフォルトの名無しさん
10/06/04 23:47:41
最近のコンパイラって最適化でstrlen()が消えるの?
282:280
10/06/04 23:48:07
ごめん、誤解を招くレスをした。
修正するかどうかはその後判断すればいいので、今そこを直すべきじゃないということ。
283:デフォルトの名無しさん
10/06/04 23:49:23
>>281
横レスすまん。
strlenは消えないが、ループの外に出すことは十分期待していいんじゃないかな
284:デフォルトの名無しさん
10/06/04 23:50:29
[1] 授業単元:プログラム演習A
[2] 問題文:全30件の成績(0~100点)をキーボードから
読み込み、0~9点, 10~19点,・・・, 90~99点, 100点 の
11通りの区間にそれぞれ何人が入るかを調べなさい。
ただし、各区間に入る人数を溜めておく入れ物として
配列を利用すること。更に調べた人数に従って、各区間を
ヒストグラムで表しなさい。
0点:***
10点:*****
20点:****
・
・
100点:*
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:2010年6月7日まで
285:デフォルトの名無しさん
10/06/04 23:57:48
訂正
[3.2] コンパイラ名とバージョン: Visual C++
286:デフォルトの名無しさん
10/06/05 00:02:48
>>284
#include <iostream>
void main() {
int histogram[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int score;
for (int i = 0; i < 30; ++i) {
score = 0;
do {
std::cout << "成績を入力しろ(0~100)" << std::endl;
std::cin >> score;
} while (score < 0 || 100 < score);
++histogram[score / 10];
}
for (int i = 0; i < 11; ++i) {
std::cout << i * 10 << "点:";
for (int j = 0; j < histogram[i]; ++j) {
std::cout << "*";
}
std::cout << std::endl;
}
}
287:デフォルトの名無しさん
10/06/05 00:11:56
>>286
void main() (笑)
288:デフォルトの名無しさん
10/06/05 00:15:29
int main() でも return 0; は省略できるのにねえ
289:デフォルトの名無しさん
10/06/05 00:16:32
それなりにC++っぽいコード書いといてそこ落としたら突っ込まれるのしょうがない。
290:デフォルトの名無しさん
10/06/05 00:18:52
>>280, 283
もっといいコンパイラなら strlen() を外にだしてくれるかもしれませんが、私の gcc 3.3.4 や bcc 5.5.1 では -O2 にしても
アセンブラリストを見る限りは、strlen() はループの中のままのようです。
そこから先の知識をもっていないのは私も一緒でしょう。
とにかく、しばらくこちらで今までのように鍛えていただくことにしました。
フォローありがとうございました。
291:デフォルトの名無しさん
10/06/05 00:22:23
そう思うんなら>>278の残りのstrlenもなんとかしろよw
292:デフォルトの名無しさん
10/06/05 00:24:27
>>291
strlen くらい残しても問題ないだろうに
余計なことするのが好きなんだな
293:デフォルトの名無しさん
10/06/05 00:27:08
すでにstrlen()で長さを求めて専用の変数に格納してるのに、
その長さをまたstrlen()で求めるのは無意味で無駄。
そんな無駄を許せる人間がプログラムをしてることが驚きだよw
294: ◆QZaw55cn4c
10/06/05 00:35:35
>>258
URLリンク(codepad.org)
指摘を受けた部分を改良いたしました。
295:デフォルトの名無しさん
10/06/05 01:14:00
>>284
0点:***
10点:*****
20点:****
・
・
100点:*
296:デフォルトの名無しさん
10/06/05 03:05:02
>>293
なんでメモリリークの可能性は許しちゃうの?
速度よりもそっちの方が大事だろ普通。
メモリリークを許せる人間がプログラムをしてるなんて心配になるよw
297:デフォルトの名無しさん
10/06/05 03:21:38
どこでメモリリークするのか◆QZaw55cn4cのために懇切丁寧に説明してあげてくれw
298:デフォルトの名無しさん
10/06/05 04:43:15
>>297みたいに自分の意見を言わない人は嫌いだが、メモリリークする箇所あるか?
299:デフォルトの名無しさん
10/06/05 11:32:53
模範例文として推敲がどの程度行われるべきかは
状況依存としか言いようが無いです
推敲され過ぎてバグも無駄や文書としての矛盾も無い
状態が教育上好ましいかどうかは一概に言い切れま
せん
ただしその逆が問題になるのは、ネット環境でそれが
容易に複製され大量流布になり得るという観点からの
みです。
300:デフォルトの名無しさん
10/06/05 11:46:10
バカの長文ほど邪魔なものはないな
301:デフォルトの名無しさん
10/06/05 11:55:55
短文を書けるのが賢いんだと思い込む人よりかアホやバカかも知れないが
ナルシスティは小さいかもな
302:デフォルトの名無しさん
10/06/05 12:29:36
宿題丸投げするようなバカへの回答なんて何だって良いだろうが
どうせこのスレでいい例を見せたって理解できるはずないだろ
303:デフォルトの名無しさん
10/06/05 12:46:11
segmentation fault
core dumped.
304: ◆QZaw55cn4c
10/06/05 17:03:20
>>298
malloc()/realloc()/free() のラッパを書いて確認してみました。
URLリンク(codepad.org)
ただ、ラッパ自身も malloc() / free() を使っているので、これが正しいかどうかを検証する方法がわからない。
ラッパのラッパを書くしかないのか‥‥‥。
305:デフォルトの名無しさん
10/06/05 18:10:54
>>302
宿題を丸投げする人は、このスレのお客様。
むしろコード書く人、そのコードを読む人が主人公かなあ。
さらしたコードを叩くな、という人がいますが、むしろコードを読んで叩いてくれる人がいるからこそ、書きがいがあるというものです。
306:デフォルトの名無しさん
10/06/05 18:19:29
ただで駄目なところ指摘してくれたり、より効率的な方法教えてくれるんだから
ありがたいもんだよな。
変にプライドの高い人は逆ギレしちゃうけど。
307:デフォルトの名無しさん
10/06/05 18:29:51
>>306
コードさらす人は、意識していないかもしれませんが、そのプライドを自分で潰しに来ている、といっていいわけですから、コードをかかない人よりよっぽどましかと。
308:デフォルトの名無しさん
10/06/05 18:42:20
そうそう。ここでコード晒す側も
所詮、暇つぶしなんで、波風立たない方が嬉しいにこしたことはない。
ここ100レス余りの流れで宿題がこないから、
mixiの宿題コミュまで覗っちゃったじゃないか!
309:デフォルトの名無しさん
10/06/05 18:45:23
>>258
310:デフォルトの名無しさん
10/06/05 18:55:13
>>308
mixiのあのコミュはなにかしら投稿するとsock(ryとかいう人に叩かれるw
311:デフォルトの名無しさん
10/06/05 18:55:52
>>307
いいからお前はトリップを全部の発言につけろw
312:デフォルトの名無しさん
10/06/05 19:23:23
>>304
ラッパがバグってるっぽい
313:デフォルトの名無しさん
10/06/05 19:25:49
最近は嫌がらせ半分のふざけたコードに突っ込む人いなくなったなぁ。
そのまま提出した学生がその後どうなったのか気になるところだが。
314:デフォルトの名無しさん
10/06/05 19:28:52
>>313
他人をむやみに信用することの愚かさを痛感し、
自分で判断できる力を身につけようと努力し、偉人になったとか。
315:デフォルトの名無しさん
10/06/05 19:39:53
>>284ですが、型が違うみたいでエラーがでます。
そこで少し変えたんですが、なんか違うようです。
316:デフォルトの名無しさん
10/06/05 19:40:36
#include<stdio.h>
main(void)
{
int test[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int i,j;
int score;
for (i=0;i<30;i++) {
score = 0;
do {
printf("成績を入力しろ");
scanf("%d",&score);
} while (score < 0 || 100 < score);
test[score / 10]++;
}
317:デフォルトの名無しさん
10/06/05 19:42:10
for (i=0; i < 11;i++) {
printf("点:");
for (j=0; j<test[i];j++) {
printf("*");
}
}
return 0;
}
318:デフォルトの名無しさん
10/06/05 19:57:10
>>315
#pragma warning(disable:4996) // これを追加する
#include<stdio.h>
main(void)
{
319:デフォルトの名無しさん
10/06/05 20:05:19
早くお客様こないかなー
320:デフォルトの名無しさん
10/06/05 20:07:14
>>318
ありがとうございます。
321:デフォルトの名無しさん
10/06/05 20:17:04
すいません>>320です。
問題文に「0~9点, ・・・, 90~99点, 100点」と書いてありました。
大変申し訳ないです。
0~9点:***
・
・
・
100点:** とするには、どう手を加えればいいのですか?
322:デフォルトの名無しさん
10/06/05 20:19:11
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 無期限
323:デフォルトの名無しさん
10/06/05 20:21:51
>>321
for(i=0; i<11; i++) {
if(i==10) printf("100点:");
else printf("%d~%d点:", i * 10 + i * 10 + 9);
324:デフォルトの名無しさん
10/06/05 20:25:11
>>321
「printf("点:");」→「if (i == 10) { printf("100点:"); } else {printf("%d~%d", i*10, i*10+9);}」
325:デフォルトの名無しさん
10/06/05 20:28:09
>>322
2-A:char**
2-B:char[][MAXLENGTH]
2-C:char**day
2-D:char day[][MAXLENGTH]
326:デフォルトの名無しさん
10/06/05 20:31:07
>>323-324
ありがとうございます。
何度もすいませんでした。
327: ◆QZaw55cn4c
10/06/05 21:50:30
>>312
ご指摘感謝。free() のラッパがバグっていました。最後のひとつを開放するときにリンクをはずせていなかった。
URLリンク(codepad.org)
328:デフォルトの名無しさん
10/06/05 22:26:34
>>325
ありがとうございます。
329:デフォルトの名無しさん
10/06/05 22:33:28
文字と演算子を入力して四則計算するプログラムってどうやります?
例えば
3←入力
+←入力
4←入力
-←入力
・←入力
・
・
=
(計算結果)
330:329
10/06/05 22:36:29
#include<stdio.h>
int main(void){
int a,b;
char c;
while(a != '='){
scanf("%d",&a);
scanf("%c",&c);
if (c = '+')b += a;
else b -= a;
}
}
うまくいきません。
331:デフォルトの名無しさん
10/06/05 22:56:11
>>329
URLリンク(ideone.com)
逆ポーランド 電卓とかでググってみてくれ
332:329
10/06/05 22:58:00
>>331
そんな難しいのじゃなくていいです・・
とりあえずwhileとか使って
数字入力 演算子入力 数字入力・・・・=答え
みたいなのが作りたい。
333:デフォルトの名無しさん
10/06/05 23:51:35
>>258です。ポインタを用いないバージョンもできないでしょうか。
334:デフォルトの名無しさん
10/06/05 23:55:00
>>332
こんなんでどう?
URLリンク(codepad.org)
335:デフォルトの名無しさん
10/06/06 00:04:36
scanf()はエラーも返すんだよね。
336: ◆/91kCCQXBo
10/06/06 00:14:15
#include<stdio.h>
int main(void){
int a=0, b=0, plus=1;
char buf[80];
while(buf[0] != '='){
// fgets(buf,100,stdin);
gets(buf);
if(buf[0] == '+'){
plus = 1;
b = a;
}
else if(buf[0] == '-'){
plus = -1;
b = a;
}
else
sscanf(buf, "%d", &a);
}
b = b + plus * a;
printf("ans=%d\n", b);
}
/*
3
-
6
=
ans=-3
*/
337:デフォルトの名無しさん
10/06/06 01:34:19
こんなソフト作ってください(お代は払います)ってな感じのスレどっかにあったかなぁ?
アイデアはあるけどオツムがないからどうしようもなく放置したまま早1年。
発注するから誰か受注して って頼みたいんだけど?
338:デフォルトの名無しさん
10/06/06 01:53:31
>>337
スレリンク(software板)l50
なんてどう?
339:デフォルトの名無しさん
10/06/06 02:09:42
サンクス
340: ◆QZaw55cn4c
10/06/06 02:37:30
>>258
>>333
URLリンク(codepad.org)
341:デフォルトの名無しさん
10/06/06 10:39:09
>>333
#include <stdio.h>
int main(void)
{
char a[256], b[256];
int i, j, flg = 0;
printf("文字列を入力してください。");
scanf("%s", a);
printf("検索文字列を入力してください。");
scanf("%s", b);
printf("文字列「%s」は", b);
for(i=0; a[i]; i++) {
for(j=0; b[j]; j++) if(a[i+j]!=b[j]) break;
if(b[j]=='\0') {
if(flg++) printf(",");
printf("%d文字目から%d文字目", i, i + j - 1);
}}
printf("%s\n", flg ? "に存在します" : "は存在しません");
return 0;
}
342:デフォルトの名無しさん
10/06/06 10:45:21
>>333
折角書いたけど>>341の方がスマートでくやしい
#include <stdio.h>
int main()
{
char str[256], search[256];
int strIdx = 0, searchIdx = 0, found = 0;
printf("文字列を入力してください。\n");
scanf("%s", str);
printf("検索文字列を入力してください。\n");
scanf("%s", search);
while(str[strIdx]){
if(str[strIdx] == search[searchIdx]){
found = strIdx + 1;
while(search[++searchIdx]){
if(str[++strIdx] != search[searchIdx]){
found = 0;
break;
}
}
if(found) break;
}
++strIdx;
}
if(found == 0) printf("文字列「%s」は存在しません。\n",search);
else printf("文字列「%s」は%d文字目から%d文字目に存在します。\n",search, (found - 2), (found - 2) + (searchIdx-1));
}
343:デフォルトの名無しさん
10/06/06 10:47:15
しかもバグ入りという...
344: ◆QZaw55cn4c
10/06/06 12:03:14
>>329
ちゃんとつくると難しいです。たとえばこんな感じになります。
URLリンク(codepad.org)
345:デフォルトの名無しさん
10/06/06 16:10:45
何故>>330
はダメなのでしょうか?
>>344
ちゃんとつくらなくても>>336のプログラムの中身がすでに
理解できないんですが・・・>>336より簡単にできないんですか?
どんなプログラムも付け足せば何とかなるんですよね。
buf[]とstdin, fgetsなど全く意味がわかりません。
一応プログラム自体実行したら正しくいきます。
ただ宿題なので、今まで習ったことでやるしかないんです。
一応C言語です。
346:デフォルトの名無しさん
10/06/06 16:15:25
>>345
そういうのは最初に全部テンプレ使って言え
347:デフォルトの名無しさん
10/06/06 16:23:51
>>345
#include<stdio.h>
int main(void){
int a,b = 0;
char c=' ';
while(c != '='){
scanf("%d",&a);
scanf("%c",&c);
if (c == '+')b += a;
else b -= a;
}
}
これでどうだ
348:デフォルトの名無しさん
10/06/06 16:25:40
>>345
ちがった
#include<stdio.h>
int main(void){
int a,b = 0;
char c=' ';
while(c != '='){
scanf("%d",&a);
scanf("%c",&c);
if (c == '+')b += a;
else if(c == '-')b -= a;
}
printf("%d\n", b);
}
こうかな。
349:デフォルトの名無しさん
10/06/06 16:41:12
>>345なぜダメかという理由を書くと
1.while(a != '=')となっている点。
aは数字だろ?演算子はcに入れたいんだろ?だからwhile(c!='=')が正しい。
2.if(c='-')となっている点。
=は代入。比較なら==を使う。たまに見かけるバグだな。
3.int a,b;となっていて、bを初期化していない点。
bに結果を入れたいのだろうが、最初に0で初期化していない。
初期化しないと値は不定。何が入ってるか分からないというわけ。
つまりコンパイラとしてはbに最初から0xCDCDCDCDを入れておいても仕様違反ではないというわけだ。
vc++のデバッグビルドならそうなる。
そこにプラスマイナスしても正しくならないよな。
4.else b-=a;となっている点。
これだと'='が来たときも引き算してしまう。だからese if(c=='-')にしないといけない。
5.whileに最初に入った時点でcは不定。
だから万が一cが'='だったらすぐ抜けてしまう。ここでは' 'を入れておけば絶対に問題が起きないのでおk。
現実問題として、滅多に起きないが、社会にでたらこれは立派なバグとして扱われるぞ。
350:デフォルトの名無しさん
10/06/06 16:42:02
こいつに理解させるのはまず無理だと思うけどな
351:デフォルトの名無しさん
10/06/06 16:53:45
俺に聞けスレで諦めた一人ですな
352:デフォルトの名無しさん
10/06/06 16:55:49
>>348
12+12=0…
353:デフォルトの名無しさん
10/06/06 16:58:45
だからscanf()で文字を読むときは改行文字に気をつけろって言っただろ
354:デフォルトの名無しさん
10/06/06 17:01:25
int a=0 ,b=0;
char c=0;
scanf("%d%*c",&b);
while(scanf("%c%*c",&c) && c != '='){
scanf("%d%*c",&a);
if (c == '+')b += a;
else if(c == '-') b -= a;
else ;
}
printf("%d\n",b);
それを修正してとなると↑のようになる(scanf削って縮めたいんだが、俺には限界)
355:349
10/06/06 17:03:34
ああ、ごめん。
実際に動かしてみたら色々問題がまだあるね
scanf("%c", &c);は改行コードを拾ってしまうな。
356:4
10/06/06 18:52:56
>>350
>>351
ひどすぎワロタww
命かけて頑張ってんだよ、茶化さんで。
357:デフォルトの名無しさん
10/06/06 18:56:00
>>356
命がけ、というのであれば、それを見せてほしいですね。現状では伝わってこないんです。
358:4
10/06/06 18:58:23
>>354
優しすぎ、ありす。
まじで感謝してる。プログラミングの単位たぶん落とすと思うけど
2学期には間に合うようにするわ。
359:デフォルトの名無しさん
10/06/06 19:02:36
熟練のマである>>355でもエラー出すC言語ってどんだけむずいんだよ。
もっと簡単で寛容なC言語はないんかね。
360:デフォルトの名無しさん
10/06/06 19:03:51
いろいろと突っ込みどころがあるな
361: ◆QZaw55cn4c
10/06/06 19:44:23
>>359
ちょっと上の方でコテが散々やっつけられていたのを見ましたか?
簡単で寛容な、というのは期待しないほうがいいかと。
362:デフォルトの名無しさん
10/06/06 20:20:28
宿題というか、既存のプログラムのバグ消しのお願いです
AviUtlという画像編集・エンコソフトを使っているですが、
そのソフト用にNL-Means Filterというものが出ています。
ですがそのフィルターを使うとソフトがフリーズしてしまいます。なんとか解決できませんか?
症状としては、そのフィルターをオンにすると、AviUtlを終了しようとした時にフリーズします。
GPU支援を使う、計算モード3のときのみ起こります。お願い致します
URLリンク(kishibe.dyndns.tv)
からダウンロードするとソースらしきものもついてきます
363:デフォルトの名無しさん
10/06/06 20:56:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2010年6/8まで
[5] その他の制限:なし
2問ありますが、よろしくお願いします。
364:デフォルトの名無しさん
10/06/06 21:06:03
>>363
<課題2>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j, k, n;
double *x, temp;
scanf("%d", &n);
x = malloc(n * sizeof(double));
for(i=0; i<n; i++) scanf("%lf", x + i);
for(i=n-1; i; i=k) {
for(j=k=0; j<i; j++) {
if(x[j] > x[j+1]) {
temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
k = j;
}}}
for(i=0; i<n; i++) printf("%f\n", x[i]);
free(x);
return 0;
}
365:デフォルトの名無しさん
10/06/06 21:30:33
>>363
<課題1>
URLリンク(codepad.org)
366: ◆QZaw55cn4c
10/06/06 21:36:06
>>363
URLリンク(codepad.org)
URLリンク(codepad.org)
367:デフォルトの名無しさん
10/06/06 21:44:36
ぐだぐだ言い訳されるのわかってても突っ込みたくなるなw
368:デフォルトの名無しさん
10/06/06 21:45:38
>>367
どうぞどうぞ突っ込んでくださいな。楽しみにしています。
369:デフォルトの名無しさん
10/06/06 21:48:51
実数と整数の区別もつかないアホ
ソート部分がクソ
370:デフォルトの名無しさん
10/06/06 21:55:59
>>363です
ありがとうございます
371:デフォルトの名無しさん
10/06/06 21:56:08
>>363
2番目の課題を訂正します。
URLリンク(codepad.org)
>>369
普通のバブルソートですが、何か問題でも?
372:デフォルトの名無しさん
10/06/06 21:57:51
だからそれはバブルソートじゃないって言っただろw
373:デフォルトの名無しさん
10/06/06 22:02:21
>>372
あれ?私は URLリンク(en.wikipedia.org) を参照したんですけれどもね。
374:デフォルトの名無しさん
10/06/06 22:09:35
それが言いたくてわざわざ効率の悪いほう使ったのかw
375:デフォルトの名無しさん
10/06/06 22:10:08
>>373
バブルソートは
for(j=0;j<n-1;j++){
for (i = 0; i < n - 1; i++) {
if (x[i] > x[i + 1]) {
t = x[i];
x[i] = x[i + 1];
x[i + 1] = t;
}
}
}
だろ。わざわざdo{} while()にしても比較回数が減ることはない。
376:デフォルトの名無しさん
10/06/06 22:16:38
>>373
だから全部読めって前も言ったよな?
Optimizing bubble sortのところで何でn := newn + 1ってなってると思ってるんだ?
377:デフォルトの名無しさん
10/06/06 22:17:08
>>375
そうですよね。>>375 であげていただいたやり方もバブルソートといいますよね。
でも >>372 はお気に召さないようなんですよ。
確かに日本語版 wiki やドイツ語 wiki では、幾分効率をあげたものが採用されているようですが、
どうオプティマイズしても計算オーダーはΟ(n^2) で変わらないのですけれども、>>372 は計算オーダーの概念がよくわかっていないらしい。
スレリンク(tech板:706番) のように、ある一種のバブルソートの実装にこだわっているんです。
378:デフォルトの名無しさん
10/06/06 22:18:14
>>376
Optimizing のところでは、長さを縮めていますが、そうでない実装も、やっぱり bubble sort でしょう?
379:デフォルトの名無しさん
10/06/06 22:21:35
計算オーダーが同じでも明らかに効率悪い方に拘る意味が分からんw
380:デフォルトの名無しさん
10/06/06 22:24:12
こだわっているんではなくて、計算効率がちょびっとよくなるか悪くなるかの差で、バブルソートとよんだりよばなかったりするのはおかしいといっているのです。
英語版 wiki にのっている実装もバブルソート、 >>375 のやりかたもバブルソートなんですよ。無論私のもバブルソート。
381:デフォルトの名無しさん
10/06/06 22:42:15
ん、バブルソートですね
382:デフォルトの名無しさん
10/06/06 22:48:20
知識とコードのアンバランスさから見て、どっかの大学講師かな。
実務経験があるようには見えないし、頭堅いのにプライドだけは高いし。
383: ◆QZaw55cn4c
10/06/06 23:20:44
>>382
今は助教というのですよ。現在の大学教員の序列を知らないところから見ると、高校生かな?
384:デフォルトの名無しさん
10/06/06 23:21:28
高校生に負ける助教って・・・
385:デフォルトの名無しさん
10/06/06 23:29:08
どうりで高校生なら計算オーダーの話は理解できなくてもしかたありませんね。でも重要ですからよく勉強しておくように。