[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 01/02 08:08 / Filesize : 214 KB / Number-of Response : 711
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:08:18 ]
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題片付けます 130代目
pc12.2ch.net/test/read.cgi/tech/1250204272/

656 名前:656 mailto:sage [2009/11/09(月) 01:42:47 ]
#include <stdio.h>
int main(void){
  int i, j, ii, count, digit[10];
  for(i=1000; i<10000; i++){ // sqrt(1000) = 31.6227
    for(j=0;j<10;j++) digit[j]=0;
    ii = i*i;
    for(j=0;j<8;j++) { // 10,000*10,000 = 100,000,000
      digit[ii%10] = 1;
      ii /= 10;
      if(ii==0) break;
    }
    count = 0;
    for(j=0;j<10;j++)
      if(digit[j] == 1) count++;
    if(count==2) {//printf("-->");
      printf("%d %d %d\n", i, count, i*i);
    }
  }
}

657 名前:デフォルトの名無しさん [2009/11/09(月) 03:47:58 ]
[1] 授業単元: C言語のポインタ、配列、ファイルの問題です
[2] 問題文(含コード&リンク):
n件のデータを配列に入力しその平均値を出力するプログラムをつくり、
実行部において添字演算子は用いず、*(p+i)と*p++それぞれを用いるパターンを作る
ただし、入出力処理をファイル処理に、入出力ファイル名はコマンドラインで指定する
[3] 環境
 [3.1] OS: とくになし
 [3.2] コンパイラ名とバージョン: とくになし
[3.3] 言語: c言語
[4] 期限: 2009/11/09日中
[5] その他の制限:途中まで出来ている部分を使ってください。
#include<stdio.h>
int main(void)
{
int A[100];
int a,b,i,n,*p;

*p=A[0];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",*(p+i));
}
for(i=0;i<n;i++){
b+=*(p+i);
}
a=b/n;
printf("%d",a);
return(0);
}
です。よろしくお願いします。

658 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 05:50:29 ]
>>655-656
ありがとうございます.コンパイルしてみます

659 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:20:08 ]
>>651
#include <stdio.h>

int check(int n)
{
int i, a[2], temp, c = 0;

while(n) {
temp = n % 10;
for(i=0; i<c; i++) if(a[i]==temp) break;
if(i==2) return 0;
if(i == c) a[c++] = temp;
label:
n /= 10;
}
return 1;
}

int main(void)
{
int i;

for(i=1000; i<10000; i++) if(check(i*i)) printf("%d\n", i);

return 0;
}

660 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:21:02 ]
ゴミが残った
label:は消しといて

661 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:29:06 ]
>>659
バグってるぞ

実行結果

1000
2000
3000
3114


662 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:33:09 ]
お前は何を言ってるんだ?

663 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:36:33 ]
>>652>>656も答えはその4つなんだが、どこがバグってるんだろ
表示するのは4桁の整数の方だし

664 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:34:07 ]
正の整数 nの2乗の数に、「10の倍数でなく、
10進数表記で、3種類以上の数字が現れる、
もしくは1種類の数字しか現れない」という
ことが無いものをすべて挙げなさい



665 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:35:27 ]
正の整数 nで、その2乗が10の倍数でなく、
「「10進数表記で、3種類以上の数字が現れる、
もしくは1種類の数字しか現れない」という
ことが無いもの」をすべて挙げなさい

666 名前:656 mailto:sage [2009/11/09(月) 10:37:30 ]
4桁までの数。
int main(void)
{
  int i;
  for(i=1; i<10000; i++) if(check(i*i)) printf("%04d\n", i);
  return 0;
}

667 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:52:35 ]
で、勝手に問題書き換えてバグがないものをバグって言い張るつもり?

668 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:56:46 ]
>>665>>661とは無関係
>>652への追加課題

669 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:59:29 ]
問題出したきゃ、大学でも専門学校でもどこでもいいから講師になってからにしろよw

670 名前:656 mailto:sage [2009/11/09(月) 11:01:05 ]
書き換えてないぞ。柿加えた。10の倍数を含まない。
int main(void) {
  int i;
  for(i=1; i<10000; i++) if(i%10) if(check(i*i)) printf("%4d %d\n", i, i*i);
  return 0;
}

671 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:02:37 ]
恥ずかしい突込みをした661が話を逸らそうとして必死にしか見えないんだがw

672 名前:656 mailto:sage [2009/11/09(月) 11:07:19 ]
1回だけのは除く。
for(i=4; ......


673 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:08:21 ]
講師は問題を解いて説明する
生徒はそれを写す
んだろ?

674 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:12:54 ]
656なら他人の関数使ってないで、自分が書いたやり方でやれよw



675 名前:656 mailto:sage [2009/11/09(月) 11:34:26 ]
>>670 で、数字が1種類でも動くようにcheck()を改良せよ。

676 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:39:58 ]
>>661
で、どこがバグってるの?

677 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:40:22 ]
>>656
出来ないの?

678 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:50:08 ]
>>675
お前はなんで自分にレスしてんだよw

679 名前:613 mailto:sage [2009/11/09(月) 14:32:26 ]
関数ポインタをconstで宣言したいんですがー

const int(*func)(void*) = ...
のように宣言すると、funcの挙動としてconstが定義されて(戻り値がconst int型となり)
変数func自体はconst化されず、プログラム中でポインタの書き換えが行えてしまいます。

関数の挙動としては戻り値にconstをつけず、ポインタ自体にconstを当てはめたいのですがー
どなたかいい手法をご存知ないでしょうか?

680 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:35:30 ]
多分 int(* const func)(void*)

681 名前:679 mailto:sage [2009/11/09(月) 14:42:37 ]
>>680
早レスありがとうございます。が、だめでしたora

682 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:42:39 ]
やってみた

#include <stdio.h>

int func(void)
{
return 1;
}

int main(void)
{
int (* const fun)(void) = func;

printf("%d\n", fun());

return 0;
}

出力結果
1

683 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:44:50 ]
ちなみに

#include <stdio.h>

int func(void)
{
return 1;
}

int func2(void)
{
return 2;
}

int main(void)
{
int (* const fun)(void) = func;

printf("%d\n", fun());

fun = func2;

return 0;
}

const_func2.c: In function 'main':
const_func2.c:19: error: assignment of read-only variable 'fun'

684 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:44:59 ]
そもそも なぜそのようなことをするのか
という疑問のほうが...



685 名前:679 mailto:sage [2009/11/09(月) 14:47:55 ]
>>680
早レスありがとうございます。が、だめでしたora

686 名前:679 mailto:sage [2009/11/09(月) 14:49:30 ]
>>680
と思ったら右辺のほうも書き換えないといけないんですね。
両方(*const func)で解決致しました。ありがとうございます。

687 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:49:56 ]
コンパイラ何?ってかそろそろスレ違いなんで

【初心者歓迎】C/C++室 Ver.69【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1256022655/

ここあたりに行こうぜ

688 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:19:21 ]
funcに一度値を設定したら書き換えることが出来ないんだろ?
どういう状況でfuncという変数を使うのか知ってみたい

689 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:27:38 ]
int Stage1( void );
int Stage2( void );
int Stage3( void );

int (* const func[])(void) = { Stage1, Stage2, Stage3 };

{
 while(1) func[now_stage];
}

690 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:45:19 ]
趣味の問題ね()

691 名前:656 mailto:sage [2009/11/09(月) 16:37:19 ]
>>659 待った?
int check(int n) {
  int i, a[2], temp, c = 0;

  while(n) {
    temp = n % 10;
    for(i = 0; i < c; i++)
      if(a[i] == temp) break;
    if(i == 2) return 0; // check NG
    if(i == c) a[c++] = temp;
    n /= 10;
  }
  if(c == 2) return 1; // check OK
  return 0;
}

692 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:45:16 ]
659は関係ないだろw

693 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:49:14 ]
おいおい、>>675の名前欄は656、つまりお前自身じゃねーかよw
自演で何やってんだよw

694 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:05:46 ]
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):
  ブレゼンハムのアルゴリズムを用いて、ウインドウ内に線分を描画するプログラムを作成しなさい。
  動作の仕様は2通りの中から選びなさい。(どちらでもよい)

  仕様1(マウスの左ボタンと右ボタンを使用する。候補線を表示はなし。)
  マウスの左ボタンクリック   線分の始点座標の指定
  マウスの右ボタンクリック   線分の終点座標の指定及び線分の描画

  仕様2(マウスの左ボタンだけで操作する。候補線を表示する。)
  マウスの左ボタンクリック   線分の始点座標の指定、及び線分の描画開始
  マウスの移動         始点から線分を絶えず候補として描画。(古い線分は消す)
  マウスの左ボタンクリック   線分の終点座標の確定。線分を描画。

ただし、ライブラリの点を描画するAPI関数を使って線分を引くこと。直線を引くAPI関数を使ってはならない。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ: Microsoft Visual C++ 2008 Express Edition
 [3.3] 言語: C++
[4] 期限: 09年11月11日(水)
[5] その他の制限: 特になし

仕様は1と2どちらでもOKなので、簡単なほうで構いません。
よろしくお願いします。




695 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:36:14 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):不定方程式が解を持つか判断して、持つ場合には解を求めるプログラムを作れ
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: Visual C++ 2008
 [3.3] 言語:C++
[4] 期限: 明日まで
[5] その他の制限: 特になし

もしどなたかやっていただけるならばお願いしますm(_)m




696 名前:デフォルトの名無しさん [2009/11/09(月) 19:30:06 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10081.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: VC2003
 [3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限: 特になし

697 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:58:10 ]
>>654
ありがとうございます!
シミュレーション内容について詳しく書いたファイルを↓に上げました。
よければよろしくお願いします。

[1] 授業単元:
アルゴリズムとプログラミング
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10082.txt
プログラムに使用するデータファイル↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10071.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
11月17日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません

698 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:59:12 ]
>>696
buf[4] = '\0';

699 名前:デフォルトの名無しさん [2009/11/09(月) 20:37:11 ]
#include <iostream>
using namespace std;

int main() {
int a[100],b=-9999;
int i=0,j;

do {
cout << "整数値を入力してください\n";
cin >> a[i];
b += a[i];
i++;
}while( a[i-1] != 9999);

cout << b << '\n';

for(j=0;j<i-1;j=j+1)
cout << a[j] * 3 << '\n';

return 0;
}

このプログラムってループを抜ける条件は9999と入れた時だけですか?

700 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:02:19 ]
>>699
いえ、他にも、100回を超えても何度も何度も操作を続けて
書き込み禁止のメモリに到達したときにも抜けます(異常終了という形で)。

701 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:27:03 ]
>>694
仕様2で
ttp://codepad.org/IeQFbfNo

702 名前:デフォルトの名無しさん [2009/11/09(月) 21:29:26 ]
>>700
ありがとうございます

703 名前:604 [2009/11/09(月) 21:37:51 ]
国語と数学の総合的な平均点も出力する
っていう言葉の意味が分からないんですが、これは、合計を5で割ればいいんですかね?
10で割ればいいんですかね?

704 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:41:36 ]
国語の合計と数学の合計の合計を10で割るのが一番正確だが
国語の平均と数学の平均の合計を2で割ってもまぁ良い



705 名前:デフォルトの名無しさん [2009/11/09(月) 21:44:31 ]
[1] 授業単元:データ構造とアルゴリズム設計
[2] 問題文(含コード&リンク):
入力された小文字のアルファベットを,リストを用いて順次格納する.
’−’が入力された時に文字の入力を終了し,それまでに格納された全ての文字を表示するプログラムを作成
せよ.
ただし,リストに格納する際,リストの最後に追加するようにせよ.
例(a, b, c, - と順に入力したときa,b,cと出力される)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:特に無し
[5] その他の制限:双方向リストは使わない。
ヘッダは#include <stdio.h>以外は使わない

706 名前:604 [2009/11/09(月) 21:45:16 ]
>>704
つまり、これは総合的平均っていうのは100を越すことはないという事ですか?


707 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:07:35 ]
>705
制限付きで面白そうなのでやってみようかな

708 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:22:25 ]
>>706
そういうことになるな。

709 名前:デフォルトの名無しさん [2009/11/09(月) 23:24:36 ]
>>708
ありがとうございました

710 名前:デフォルトの名無しさん [2009/11/09(月) 23:35:40 ]
10進数を2進数に変換するプログラムを 順番通りに表示できるようにするプログラムを配列を使って作るんですが

#include <iostream>
using namespace std;
int main() {
int i,n,bin[32];

cout << "10進数:";
cin >> n;
cout << "2進数:";
for(i=0; i<32; i++) {
bin[i] = n & 1;
n >>= 1;
}
for(i=31; i>=0; i--)
cout << bin[i];
return 0;
}
結局これは、0がいっぱい出てくるから、ダメですかね?
それとも負の数も考慮に入れたから、こういう事になったんですか?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<214KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef