C/C++の宿題片付けま ..
[2ch|▼Menu]
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は関数の呼び出し毎に値が変わって欲しくない
変数にしか付けないので、余計にエラーが出やすい。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5408日前に更新/167 KB
担当:undef