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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/l50#tag993
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
2デフォルトの名無しさん:2006/01/18(水) 04:02:48
#include <windows.h>
int main()
{
MessageBox(0,"スレ立て乙"," ",0);
return 0;
}
3デフォルトの名無しさん:2006/01/18(水) 04:06:33
#include<stdio.h>
int main(void){
while(1){
puts(">>1スレ立て乙");
}
return 0;
}
4デフォルトの名無しさん:2006/01/18(水) 04:08:10
class otu{
public static void main(String arg[]){
while(true){
System.out.println("スレ立て乙");
}
}
5デフォルトの名無しさん:2006/01/18(水) 04:14:18
6デフォルトの名無しさん:2006/01/18(水) 04:17:43
http://samurize.nsf.tc/upload/source/up1656.zip
すいません。こちらでお願いします。
7デフォルトの名無しさん:2006/01/18(水) 04:24:47
りょーかい・・・って、当たり前だけど、ヘッダだけじゃ、実行ファイル作れないのよね・・・(^^;;
8デフォルトの名無しさん:2006/01/18(水) 04:34:28
HALOでコブナントぶっ殺してくるからあとは頑張って
99:2006/01/18(水) 04:53:09
[1] 授業単元:プログラミングB
[2] 問題文(含コード&リンク):

#include <stdio.h>
int ch;
void getch0(void) {
 ch = getchar();
}
int expression(void);
int factor(void) {
  int val;
  if(ch >= '0' && ch <= '9') {
  val = ch-'0';
  getch0();
  }
  else if(ch == '(') {
  getch0();
  val = expression();
  getch0();
  }
  return val;
}
int term(void) {
  int val;
  val = factor();
  while(ch == '*') {
  getch0();
  val = val * factor();
  }
  return val;
}
109:2006/01/18(水) 04:54:00
int expression(void) {
  int val;
  val = term();
  while(ch == '+') {
   getch0();
   val = val + term();
  }
  return val;
}
int main(void) {
 printf("expression? ");
 getch0();
 printf("value=%d\n", expression());
}

この計算プログラムにおいて,2*(3+(4+5)*6) を計算するとき,
どういう順番で,expression, term, factorを呼び出して計算がなされて,
最終的な答えに行き着くのかを説明しなさい。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月20日まで

 何とぞお手柔らかにお願いします!
119:2006/01/18(水) 04:57:56
慌てず急いで正確にな
129:2006/01/18(水) 04:59:30
ちゃんとやれよ。
139 ◆jcfgG7aJMA :2006/01/18(水) 05:07:11
>>11-12
朝早くからのいたずら、お疲れ様です
14デフォルトの名無しさん:2006/01/18(水) 05:56:04
>>9-10
浅学な我輩にはなかなか面白いプログラムだったよ
2*(3+(4+5)*6)

expression //mainより 戻り値117
term
factor
factor

expression //最初の( , 戻り値57
term
factor
term
factor

expression //2番目の( , 戻り値9
term
factor
term
factor
factor
15デフォルトの名無しさん:2006/01/18(水) 06:01:12
ごめ//mainより 戻り値117 → 戻り値114
何やってんだか
169:2006/01/18(水) 07:55:04
>>14-15
どうもありがとうございます。そんなにややこしいんですか!・・・
あの〜、ちなみにこのプログラムってどのコマンドで数字を読み取ってるんですか?
scanf() みたいなものが見当たらないので・・・
17デフォルトの名無しさん:2006/01/18(水) 08:02:31
慣れてる人は簡単に思うけど俺にとっては結構面白いプログラムだったね

数式を受け取ってどの様に処理してるかは、入力ストリームの話題になるんだけど
文字を受けとる関数はgetch0()関数のgetchar()関数
こいつは標準入力デバイスのバッファからEOFになるまで1文字1文字を読み込む関数で
例えば次のプログラムを見ると

int ch;
while( (ch=getchar())!=EOF )
printf("%c %d\n",ch,ch);

getcharの動作が良くわかる

次に
int ch
while( (ch=getchar())!=EOF ){
printf("%c %d\n",ch,ch);
fflush(stdin);
}
を実行してみると"標準入力デバイスのバッファってのが良くわかるはず
適当にぐぐって
18デフォルトの名無しさん:2006/01/18(水) 08:29:48
括弧が閉じてないと無限ループ
   ァ  ∧_∧ ァ,、
  ,、'` ( ´∀`) ,、'`
   '`  ( ⊃ ⊂)  '`
199:2006/01/18(水) 08:33:55
>>17
丁寧にどうもありです。調べて理解できるようにがんばります!
20デフォルトの名無しさん:2006/01/18(水) 08:48:00
[1] 授業単元: 大学のゼミ
[2] 問題文(含コード&リンク):
問題文自体は無いのですが、コンソール画面上で動く、サーバーとクライアントの通信をする
簡単なゲームプログラムに組み込むタイマー(カウントダウン)を作りたいのです。
仕様としては、サーバー側プログラムの起動時に、引数としてint型で時間の「分」(min)を渡すと、ゲームが開始し、
ゲーム中は画面の端に「mm:ss」と表示してカウントダウンしていく感じにしたいです。
そのタイマーが00:00になったとき、ゲームが終了するようにしたいです。

[3] 環境
 [3.1] OS: Linux(RedHat7)
 [3.2] コンパイラ名とバージョン: gcc (付属のもので、バージョンは分かりません)
 [3.3] 言語: C
[4] 期限: 2006年1月18日 13時15分
[5] その他の制限: 標準ライブラリとmylib.hというヘッダを利用します。
【添付】http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1491.zip
mylib.hは添付のファイルの中にあり、純粋にコンパイルしたもののみ使う形です。
ゲーム自体は、添付のファイル内にあるtagというフォルダの中にある鬼ごっこプログラムです。
(他のフォルダ内のものは今回は使わないです。)


よろしくお願いしますm(_ _)m
21デフォルトの名無しさん:2006/01/18(水) 09:15:14
>>9
プログラミングB って大学ですか?
22デフォルトの名無しさん:2006/01/18(水) 10:18:05
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

 @ 変数x,yにそれぞれ4と9を代入して,x/yを計算し,商sと余りrを出力するプログラムを作
   成せよ。

 A sを入力し,sから100までの整数のうち7の倍数となる整数を出力するプログラムをfor文ま
   たはwhile文を用いて作成せよ。

 B n円を入力した後,画面に「1・ドル 2・ユーロ 3・ウォン」と表示され,1,2,3のいず
   れかの番号を入力すると,その指定した通貨の額にn円を換算するプログラムを作成せよ。
   なお、為替レートは,ネットなどで調べること。

 C n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,それぞれの合計点を
   計算した後,n人を合計点の小さい順に並び替え,出力するプログラムを作成せよ。ただし
   ,各科目の変数名をko,sy,su,ri,eiとし,配列名はtokutenとすること。

 D 10文字以内の文字列(英字)を入力し,母音(a,i,u,e,o)を取り除いた文字列を出力
   するプログラムを作成せよ。(例:momotarou → mmtr)

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] すいません。わかりません
 [3.3] 言語: C
[4] 期限: [2006年01月25日24:00まで]
[5] その他の制限:特にありません。
  5問もあって申し訳ありませんが、初心者なので難しいです。よろしくお願いします。
23デフォルトの名無しさん:2006/01/18(水) 10:31:00
>>22
ttp://pc8.2ch.net/test/read.cgi/tech/1136768567

@Aとかで検索するとすぐみつかるかもne♥
2422:2006/01/18(水) 10:48:48
>>23
過去ログ読みました。
Aはできました!ありがとうございます。@はまだです。
25デフォルトの名無しさん:2006/01/18(水) 11:11:49
BCDも個別で出てるはず

@ぐらいはがんがれ。
26デフォルトの名無しさん:2006/01/18(水) 11:18:52
ウォンが気に食わないのでその課題はしたくないです
27デフォルトの名無しさん:2006/01/18(水) 11:20:49
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):50人のアルファベット表記の名前を、
(1)マージソート (2)クイックソート で辞書順にソートして出力する
プログラムを作成せよ。各プログラムのアルゴリズムも記述すること。
50人の名前は二次元配列で実現し、プログラム内で設定すること(ファイルから読み込むなどの処理は不要)。

[3] 環境
 [3.1] OS: WindowsXP Pro
 [3.2] コンパイラ名とバージョン: Borland C 5.5
 [3.3] 言語: C
[4] 期限: 2006年1月18日19:00まで
[5] その他の制限: 特にありません。時間が迫っておりますのでよろしくお願いいたします。
2823:2006/01/18(水) 11:29:46
作った覚えはあるんだが…
微妙に改変されてるな。

実は>>22が宿題先生じゃないのか?
2923:2006/01/18(水) 11:40:29
>>22
D小文字aiueoのみ対応

#include <stdio.h>
int main()
{
  char s[10+1],*p;
  fgets(s,10+1,stdin);
  p=s;
  while(*p!='\0'){
    if(*p!='a'&&*p!='i'&&*p!='u'&&*p!='e'&&*p!='o')
      putchar(*p);
    *p++;
  }
  return 0;
}
30loi ◆qMuXz8UNv6 :2006/01/18(水) 11:56:03
[1] プログラミング入門
[2]• ファイルから数値データを読み込み,その数値の平均をファイルに書き込むプログラ
ムを作成する
• 数値データは全部で100行(ファイルには実際に100 行以上存在している)
• 数値データの入っているファイルは授業用HP にある.なおデータは実数である.
ファイル名: kadai.dat

• 平均を書き込むファイル名はheikin.dat とする.平均はすべてのデータ(600個)の平
均とする
[3] 環境
 [3.1] Windows
 [3.2] コマンドプロンプト 秀丸
 [3.3]C
[4] 本日中
[5]
正直まったくわかりません。というか授業にでていないです。
でも単位が欲しいです。どうすれば課題を提出できるか教えてくれませんか?
お願いします。
31loi ◆qMuXz8UNv6 :2006/01/18(水) 11:57:36
以下を参考にしてください
include "stdio.h"
/* file_read 関数は【】内を記述する */
double file_read( void )
{
【 】
int i, j;
double data[600];
double heikin;
【 】
for( i=0 ; i<600 ; i+=6 )
{
for( j=0 ; j<6 ; j++ )
【 】
}
for( i=0, heikin=0.0 ; i<600 ; i++ )
{
heikin += data[i];
}

heikin /= 600.0;
printf("heikin -> %lf\n",heikin);
【 】
return heikin;
}

/* file_write 関数の中身を全部記述すること */
void file_write( double heikin )
{
/* ここの中身を記述する */
}
32デフォルトの名無しさん:2006/01/18(水) 12:00:07
授業に出てないのなら理由はどうあれ単位もらえないくて当たり前
33デフォルトの名無しさん:2006/01/18(水) 12:12:00
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

 [T] n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,
    各科目の最高点を出力するプログラムを作成せよ。
  ただし,各科目の配列名をjap,soci,math,sci,engとすること。

 [U] 5人の学生の4科目の試験の得点(1科目につき満点は100点)を入力する.
    1人分入力する毎に「合計得点が240点以上で,
    かつ各得点が40点以上であるとき合格とする」の条件で,合否を判定せよ.

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] 初心者なんでわかりません。
 [3.3] 言語: C かな。
[4] 期限: [2006年01月20日まで]

C言語難しくて、僕には全くわからないです。
よろしくお願いします!!!
34デフォルトの名無しさん:2006/01/18(水) 12:18:11
>>33
前スレに解答あります。
35デフォルトの名無しさん:2006/01/18(水) 12:21:25
>>30
kadai.dat っていうやつをアップして
36デフォルトの名無しさん:2006/01/18(水) 12:27:57
#include<stdio.h>
main()
{
int dec, bit, coef=0;
char hex[11]={0}, endchar;
do{
printf("10進法での数字を入力してください");
scanf("%d%c",&dec,&endchar);
printf("10進法の%3d\tは",dec);
while(dec!=0)
{
bit=dec%16;
dec/=16;
hex[coef] = "0123456789ABCDEF"[bit];
++coef;
}
printf("16進法では%10s\n",hex);
return;
} while(endchar!='*');
}
だと210がD2じゃなくて2Dってでるんですけどどこが間違ってますか?
37デフォルトの名無しさん:2006/01/18(水) 12:36:17
>>36
int a = 210;
printf( "\X\n", a );
38デフォルトの名無しさん:2006/01/18(水) 12:43:20
>>33
japだと
39デフォルトの名無しさん:2006/01/18(水) 12:46:58
japか
なめんじゃねーぞ糞が
40デフォルトの名無しさん:2006/01/18(水) 13:16:29
>>36
あ、>>37
printf( "%X\n", a );
ね。失礼。
4136:2006/01/18(水) 13:37:52
>>40さん、すいません
質問の仕方が悪かったです、
210だったら2D、258だったら201、280だったら811
というように1桁目>2桁目>3桁目というふうに出力されるのを直したくて質問しました。
前スレの854さんに教えていただいたのを実際に使うとこうなってしまい、今日提出なんで焦ってます。
42デフォルトの名無しさん:2006/01/18(水) 13:39:42
あせってるは自業自得
43デフォルトの名無しさん:2006/01/18(水) 13:52:10
coef=0   ===>  coef=9
++coef   ===>  --coef
hex)    ===>  hex + coef + 1)
44デフォルトの名無しさん:2006/01/18(水) 14:17:36
10桁での一次連立方程式の解き方をおしえてください。
4540:2006/01/18(水) 14:20:40
>>41
printf のフォーマット使いたくないならこれでどう?

#include <stdio.h>
char *convert_base( unsigned n, unsigned base )
{
static char buf[ 1024 ];
char *end = buf + sizeof(buf) - 1;
char *expression = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
*end-- = '\0';
while ( buf != end ) {
*end = expression[ n%base ];
if ( n < base ) break;
n /= base; --end;
}
return end;
}
int main( void )
{
char buf[32];
int a;
while (1) {
fgets( buf, sizeof(buf), stdin );
if ( buf[0] == 'q' ) break;
sscanf( buf, "%d", &a );
printf( " %d\t%s", a, convert_base(a,2) );
printf( "\t%s", convert_base(a,8) );
printf( "\t%s\n", convert_base(a,16) );
}
}
46デフォルトの名無しさん:2006/01/18(水) 14:29:48
>>36
これで良いや。

#include<stdio.h>
int main()
{
int dec, bit, coef;
char hex[11]={0}, endchar;
do{
printf("10進法での数字を入力してください");
scanf("%d%c",&dec,&endchar);
printf("10進法の%3d\tは",dec);
for(coef=10;dec;dec/=16){
bit = dec%16;
hex[--coef] = bit["0123456789ABCDEF"];
}
printf("16進法では%10s\n",hex+coef);
}while(endchar!='*');
return 0;
}
47デフォルトの名無しさん:2006/01/18(水) 14:38:01
>>44
ガウス消去法
4830:2006/01/18(水) 15:22:40
kadai.datです

1.3 4 0 0 36.179598 36.179598
1.3 4 0 0.1 36.238542 36.238542
1.3 4 0 0.2 36.238542 36.238542
1.3 4 0 0.3 36.238542 36.238542
1.3 4 0 0.4 35.268814 35.268814
1.3 4 0 0.5 35.022824 35.022824
1.3 4 0 0.6 36.626796 36.626796
1.3 4 0 0.7 38.423352 38.423352
1.3 4 0 0.8 42.404821 42.404821
1.3 4 0 0.9 50.056847 50.056847
1.3 4 0 1 56.29155 56.29155
1.3 4 0 1.1 63.364309 63.364309
1.3 4 0 1.2 69.133599 69.133599
1.3 4 0 1.3 73.891168 73.891168
1.3 4 0 1.4 77.865372 77.865372
1.3 4 0.1 0.1 36.238542 36.238542
1.3 4 0.1 0.2 36.238542 36.238542
1.3 4 0.1 0.3 36.238542 36.238542
1.3 4 0.1 0.4 35.126008 35.126008
1.3 4 0.1 0.5 35.149002 35.149002
1.3 4 0.1 0.6 37.415956 37.415956
1.3 4 0.1 0.7 39.538102 39.538102
1.3 4 0.1 0.8 44.041386 44.041386
1.3 4 0.1 0.9 52.435181 52.435181
1.3 4 0.1 1 58.998314 58.998314
1.3 4 0.1 1.1 66.336784 66.336784
1.3 4 0.1 1.2 72.194806 72.194806
1.3 4 0.1 1.3 76.944402 76.944402
1.3 4 0.1 1.4 80.857437 80.857437
4930:2006/01/18(水) 15:24:17
1.3 4 0.2 0.2 36.238542 36.238542
1.3 4 0.2 0.3 36.238542 36.238542
1.3 4 0.2 0.4 35.003256 35.003256
1.3 4 0.2 0.5 35.544757 35.544757
1.3 4 0.2 0.6 38.752023 38.752023
1.3 4 0.2 0.7 41.186905 41.186905
1.3 4 0.2 0.8 46.237783 46.237783
1.3 4 0.2 0.9 55.412151 55.412151
1.3 4 0.2 1 62.247766 62.247766
1.3 4 0.2 1.1 69.790496 69.790496
1.3 4 0.2 1.2 75.667226 75.667226
1.3 4 0.2 1.3 80.342333 80.342333
1.3 4 0.2 1.4 84.136243 84.136243
1.3 4 0.3 0.3 36.238542 36.238542
1.3 4 0.3 0.4 35.452965 35.452965
1.3 4 0.3 0.5 36.77885 36.77885
1.3 4 0.3 0.6 41.180944 41.180944
1.3 4 0.3 0.7 43.711862 43.711862
1.3 4 0.3 0.8 49.223951 49.223951
1.3 4 0.3 0.9 59.133336 59.133336
1.3 4 0.3 1 66.113423 66.113423
1.3 4 0.3 1.1 73.747224 73.747224
1.3 4 0.3 1.2 79.538658 79.538658
1.3 4 0.3 1.3 84.05313 84.05313
1.3 4 0.3 1.4 87.659236 87.659236
5030:2006/01/18(水) 15:25:13
1.3 4 0.4 0.4 38.388558 38.388558
1.3 4 0.4 0.5 38.388558 38.388558
1.3 4 0.4 0.6 44.500205 44.500205
1.3 4 0.4 0.7 46.779962 46.779962
1.3 4 0.4 0.8 52.761729 52.761729
1.3 4 0.4 0.9 63.546086 63.546086
1.3 4 0.4 1 70.61663 70.61663
1.3 4 0.4 1.1 78.302961 78.302961
1.3 4 0.4 1.2 83.945404 83.945404
1.3 4 0.4 1.3 88.23714 88.23714
1.3 4 0.4 1.4 91.595744 91.595744
1.3 4 0.5 0.5 44.451739 44.451739
1.3 4 0.5 0.6 51.347464 51.347464
1.3 4 0.5 0.7 51.347464 51.347464
1.3 4 0.5 0.8 57.603556 57.603556
1.3 4 0.5 0.9 69.419834 69.419834
1.3 4 0.5 1 76.38392 76.38392
1.3 4 0.5 1.1 83.987591 83.987591
1.3 4 0.5 1.2 89.329809 89.329809
1.3 4 0.5 1.3 93.259877 93.259877
1.3 4 0.5 1.4 96.259406 96.259406
5130:2006/01/18(水) 15:25:54
1.3 4 0.6 0.6 51.347464 51.347464
1.3 4 0.6 0.7 51.347464 51.347464
1.3 4 0.6 0.8 60.812886 60.812886
1.3 4 0.6 0.9 75.35268 75.35268
1.3 4 0.6 1 82.39328 82.39328
1.3 4 0.6 1.1 90.047312 90.047312
1.3 4 0.6 1.2 95.065067 95.065067
1.3 4 0.6 1.3 98.574162 98.574162
1.3 4 0.6 1.4 101.152511 101.152511
1.3 4 0.7 0.7 51.347464 51.347464
1.3 4 0.7 0.8 70.349869 70.349869
1.3 4 0.7 0.9 86.527557 86.527557
1.3 4 0.7 1 91.687356 91.687356
1.3 4 0.7 1.1 98.379777 98.379777
1.3 4 0.7 1.2 102.38411 102.38411
1.3 4 0.7 1.3 105.012379 105.012379
1.3 4 0.7 1.4 106.860022 106.860022
5230:2006/01/18(水) 15:26:29
1.3 4 0.8 0.8 100.859711 100.859711
1.3 4 0.8 0.9 100.859711 100.859711
1.3 4 0.8 1 100.859711 100.859711
1.3 4 0.8 1.1 106.202542 106.202542
1.3 4 0.8 1.2 108.970987 108.970987
1.3 4 0.8 1.3 110.632941 110.632941
1.3 4 0.8 1.4 111.735982 111.735982
1.3 4 0.9 0.9 100.859711 100.859711
1.3 4 0.9 1 100.859711 100.859711
1.3 4 0.9 1.1 108.970987 108.970987
1.3 4 0.9 1.2 111.735982 111.735982
1.3 4 0.9 1.3 113.099775 113.099775
1.3 4 0.9 1.4 113.904037 113.904037
1.3 4 1 1 100.859711 100.859711
1.3 4 1 1.1 116.846683 116.846683
1.3 4 1 1.2 116.846683 116.846683
1.3 4 1 1.3 116.846683 116.846683
1.3 4 1 1.4 116.846683 116.846683
53デフォルトの名無しさん:2006/01/18(水) 16:14:14
大変だ、荒らされてる
54デフォルトの名無しさん:2006/01/18(水) 16:28:40
>>30

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
static double next_double( FILE *fp, double *d )
{
char buf[256], *p = buf, c;
while ( !isdigit( c = fgetc(fp) ) )
if ( c == EOF ) return 0;
ungetc( c, fp );
while ( isdigit( c=fgetc(fp) ) || c == '.' )
*(p++) = c;
*p = 0;
*d = atof( buf );
return 1;
}
int main( void )
{
char *filename = "kadai.dat";
FILE *fp;
double sum = 0, d;
unsigned num = 0;
if ( NULL == ( fp = fopen( filename, "r" ))) return 1;
while ( next_double( fp, &d ) ) { sum += d; ++num; }
printf( "Sum: %lf\nNum: %u\nAverage: %lf\n", sum, num, (sum/num) );
fclose( fp );
return 0;
}
55デフォルトの名無しさん:2006/01/18(水) 16:30:02
間違った
4行目: static double next_double( FILE *fp, double *d )
じゃなくて
訂正 : static int next_double( FILE *fp, double *d )
56デフォルトの名無しさん:2006/01/18(水) 17:05:10
>>21
うん、大学の宿題だけど・・・ほとんどの人がそうじゃないの?
57デフォルトの名無しさん:2006/01/18(水) 17:14:37
多桁の割り算のプログラムが作れません。助けてください。
58デフォルトの名無しさん:2006/01/18(水) 17:29:21
助けて欲しかったらちゃんとテンプレに従って内容を書けよ。
59デフォルトの名無しさん:2006/01/18(水) 17:36:23
>>21
同名の講義あるが俺の所はパスカルだな
6027 ◆bgdlxVqI.o :2006/01/18(水) 17:41:31
すみませんが>27をお願いします、これで単位が決まるんです
61デフォルトの名無しさん:2006/01/18(水) 17:49:06
50人分の名前考えるとか無理
62デフォルトの名無しさん:2006/01/18(水) 17:51:48
マージとクイック程度の物が理解できないのに
アルゴリズムの単位が貰えるなんてどう考えてもおかしいよな
63デフォルトの名無しさん:2006/01/18(水) 18:27:03
んでクイックソートでqsort使ったらだめだとか言うんだろ
64デフォルトの名無しさん:2006/01/18(水) 18:43:10
言うだけ言って27はどっか逝ったなw
65デフォルトの名無しさん:2006/01/18(水) 19:11:03
>>63
一応、あれの実装は処理系定義じゃなかったっけ?
66デフォルトの名無しさん:2006/01/18(水) 19:16:14
>>65
ISO/IEC 9899:1999には、その件については何も書かれてないな。
67デフォルトの名無しさん:2006/01/18(水) 19:33:25
クイックソートを単方向リストで実装したときは死んだ。
かなり頑張った。
68デフォルトの名無しさん:2006/01/18(水) 19:34:32
[1] 授業単元:プログラミング
[2] 問題文: 1.入力用テキストファイルに番号、2科目の得点(0〜100)
         を用意する。データ数は5。
       2.↑のデータを出力用テキストファイルに出力する。
       3.副プログラムを利用し、2科目それぞれの合計点と平均点を出力ファイル
         の2.の続きに出力する。(ポインタ変数を扱い、主プログラム
         とは別に記憶し、includeする。)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C++
[4] 期限:本日中
  たらない頭を使って考えましたがわかりませんでした。
  よろしくお願いします!!

6927 ◆bgdlxVqI.o :2006/01/18(水) 19:35:22
いますよ、所用でいなかっただけです
この他にもあって他は出来てるんですがどうしてもこれだけできないんです
70デフォルトの名無しさん:2006/01/18(水) 19:46:05
>>69
来年、もう一度受けろや
そんなのが理解できないならオワットル
71デフォルトの名無しさん:2006/01/18(水) 20:10:14
>>70
ここで出てる課題ってクイックソートよりだいぶ程度が低いのが多いけどな。
クイックソートtは結構面倒くさい。
むしろクイックソートが自力で実装できるようになれば、Cは大体理解できてると思う。

72デフォルトの名無しさん:2006/01/18(水) 20:10:23
>>69
んなら、50人分のアルファベット表記の名前リストだけ作って
>>1の所にでもうpしれ。
手持ちのマージソートルーチンとクイックソートルーチンを
くっつけてみるから。
73むう:2006/01/18(水) 20:10:47
[1] 授業単元:Cプログラム
[2] 問題文:配列[2][2]にそれぞれ0か1が格納されている。
[0][0] [1][0] [2][0]
[0][1] [1][1] [2][1]
[0][2] [1][2] [2][2]
0なら上下左右に移動でき、1なら移動できない。そのとき現在地と目的地を入力し
目的地まで最短で移動するプログラムを作成せよ。出力は「↑に移動する。→に移動する。→に移動する。↑に移動する」というようにする事
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Windows For BC++
 [3.3] 言語:C
[4] 期限:無期限
よろしくおねがいします
74デフォルトの名無しさん:2006/01/18(水) 20:10:55
[1] 授業単元: 情報処理基礎
[2] 問題文: 整列されたn 個の数列から二分探索でデータを探索する場合、
        与えるデータによって比較する回数は異なるはずである。
        そこで、nを1〜10万まで変化させ、その都度、最悪の比較回数を求めるプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C
[4] 期限: 1月23日
[5] その他の制限:
75デフォルトの名無しさん:2006/01/18(水) 20:11:37
よろしくお願いします
76デフォルトの名無しさん:2006/01/18(水) 20:14:46
[1] 授業単元: 情報処理基礎
[2] 問題文:CGIを使ったプログラムを作成せよ
        
        
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C
[4] 期限: 1月23日
[5] その他の制限: CGIを使っていればどういうプログラムでもいいです。

よく分からないので、お願いいたします。
77デフォルトの名無しさん:2006/01/18(水) 20:17:03
78デフォルトの名無しさん:2006/01/18(水) 20:18:38
>>77
ありがとうございます
79デフォルトの名無しさん:2006/01/18(水) 20:21:11
>>77
もう少し複雑なプログラムとかもありますか?
>>76に書き忘れたのですが、あと2つCGIプログラムを作らない
といけないらしいです
80デフォルトの名無しさん:2006/01/18(水) 20:28:14
ちゃんと内容を書け。
81デフォルトの名無しさん:2006/01/18(水) 21:08:16
>>68
C++?
Cじゃないの?
本当にC++?
ウソじゃない?
82デフォルトの名無しさん:2006/01/18(水) 21:14:58
>>43
>>46
ありがとうございました、助かりました
83デフォルトの名無しさん:2006/01/18(水) 21:43:27
>>81
ウソではないですよ??
C++です
84デフォルトの名無しさん:2006/01/18(水) 21:44:25
>>83
C と C++ の区別が出来てますか、ということね。
文字を出力するのに使うのは printf と習ったか、cout と習ったか、どっち?
85デフォルトの名無しさん:2006/01/18(水) 21:51:25
>>84
coutと習いましたよ
86デフォルトの名無しさん:2006/01/18(水) 21:54:02
#include <:iostream.h>
と習いましたか?
#include <iostream>
と習いましたか?
87デフォルトの名無しさん:2006/01/18(水) 21:54:05
>>84
この問題を解くのに、
そんなにCとC++の違いが影響するのか?

88デフォルトの名無しさん:2006/01/18(水) 21:55:12
違ってたらエラーが出ます。直してください。と言われる<影響
89デフォルトの名無しさん:2006/01/18(水) 21:55:49
言語 C++って書いてあるからC++で解答したら、
やっぱりCで書いてって言われたことある。
90デフォルトの名無しさん:2006/01/18(水) 21:57:12
>>86
#include<iostream.h>と習いました
91デフォルトの名無しさん:2006/01/18(水) 22:03:30
標準C++は、普及してないみたいだな。・・・と、いうわけで、C++の人、よろしく。
標準C(C89)はけっこう普及しとるようだが。
92前スレ920:2006/01/18(水) 22:10:10
スレ住人様のご助力のおかげで無事プログラム完成、提出完了致しました

なんのお礼も出来ませんが、とりあえずぬこ置いてきます
ttp://www.uploda.org/uporg289807.jpg
93デフォルトの名無しさん:2006/01/18(水) 22:11:04
>>74
2分探索 真面目に書くのメンドクセ。
#include<stdio.h>
unsigned ulog2(unsigned int n){
    unsigned r=0,i=16;
    do if(n>>i)n>>=i,r+=i;while(i>>=1);
    return r;
}
int main(void){
    int i;
    printf("数列の要素数  最悪の比較回数\n");
    for(i=1;i<=100000;++i)printf("%12d%16d\n",i,ulog2(i)+1);
    return 0;
}
94デフォルトの名無しさん:2006/01/18(水) 22:42:17
[1] 授業単元: 情報処理研究
EUCコードでひらがな「あ」は(164,162)の2バイトです。
文字→EUCコード数値への変換プログラムはできたのですが、
逆(EUCコード数値→文字)ができません・・・
つまり
(164,162) を入力して「あ」に変換するにはどうすればいいのでしょうか?
お願いします。
95デフォルトの名無しさん:2006/01/18(水) 22:45:52
>>93
ありがとうございます
助かりました
96デフォルトの名無しさん:2006/01/18(水) 22:50:47
>>92
いわれのない非難だが、コラっぽい笑顔がムカつく_| ̄|○
名前忘れた関西系の大御所漫才師みたい
97デフォルトの名無しさん:2006/01/18(水) 22:53:19
>>94
これでいいのかな?
int main(void)
{
int a,b;
::printf("code1 code2->");
::scanf("%d%d",&a,&b);
char s[3] = {(char)a,(char)b,0};
::printf("->");
::printf(s);
::system("pause");
return 0;
}
98デフォルトの名無しさん:2006/01/18(水) 22:55:36
>>94
#include <stdio.h>
int main( void )
{
char a = 164, b = 162;
printf("%c%c\n", a, b );
return 0;
}

>>96
気になるから是が非でも名前を思い出してくれ。
てゆかこの画像有名だよね。
99デフォルトの名無しさん:2006/01/18(水) 22:56:16
>>97
C++でCを書くなよw
100デフォルトの名無しさん:2006/01/18(水) 22:58:00
system("pause") って何?
101デフォルトの名無しさん:2006/01/18(水) 23:01:09
>>97
って、DOS プロンプトで EUC でるかよ
「これでいい?」とかいって、いいわけない
102デフォルトの名無しさん:2006/01/18(水) 23:06:25
>>96
つるべ?
103デフォルトの名無しさん:2006/01/18(水) 23:08:02
鶴瓶w
104デフォルトの名無しさん:2006/01/18(水) 23:10:02
ツッコミ激しいな。
systemは消して。
105デフォルトの名無しさん:2006/01/18(水) 23:11:51
ttp://www.tsurube.net/
今や鶴瓶も.NETですよw
106デフォルトの名無しさん:2006/01/18(水) 23:23:12
1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
list<int> 型の要素全ての和を求める関数 int sumlist(list<int>&) を定義して下さい.
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> lst;
for(int i=0 ; i < 10 ; i++)lst.push_back(i);
cout << "size =" << lst.size() << endl;
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;

for(list<int>::iterator it = lst.begin(); it != lst.end() ;){
if((*it) % 3 == 0){
it = lst.erase(it);
}
else {
++it; } }
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;
return 0;}
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ
 [3.3] 言語: C++
[4] 期限: 1月23日
[5] その他の制限:
107むう:2006/01/18(水) 23:26:54
>>73
すいません。スルーされそうなのでどなたか
お願いします。
自分では何やっていいか全くわからずです…。
友達は「幅優先探索」使えばいーんじゃねー?とか言ってたんですが
それも意味不明です・・。
108デフォルトの名無しさん:2006/01/18(水) 23:41:02
>>68
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1496.zip
いや、まず謝っておく。すまない。
2科目をまとめて構造体に突っ込んだのが失敗だった。
おかげで複雑になってしまった。
問題文にポインタ変数を扱い〜って書いてあるけど、直接は扱ってない。
iteratorがポインタだと言い張ればOK。
理解するより自分で書いた方が早そうな予感。
109デフォルトの名無しさん:2006/01/18(水) 23:41:35
>>107
幅優先探索ってのはある地点(A)から1回で移動可能な全ての場所に行ってみて
その中でゴールがあれば終了。この時点でA→どこかってのが全部探索できた
次にゴールにどれも達してなければ、それぞれの地点(Bn)からまた1回で移動できる
全ての地点へ行ってみて同様の判定をする。これでA→Bn→どっかを探索終了

これを繰り返していくのが幅優先探索
対照的なのに深さ優先ってのがあるが、これはとりあえずA→Bと決めたら
後はそれをひたすら終端まで探った上で、ダメなら一段戻ってまた最後まで
ってのをひたすら繰り返す

無期限ならとりあえず自力で思うように作ってみれ
そっちの方が自分のためにもなる


>>106
前スレで俺が答えた
あれで不満なら氏ね
110デフォルトの名無しさん:2006/01/18(水) 23:44:08
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)。
なお,データは,学籍番号順に入力されるわけではない。
このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。
ただし,同じ点数の学生がいた場合は,最初に入力されたデータを優先するものとする。
結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC6.0
 [3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特になし。よろしくお願いします。
111デフォルトの名無しさん:2006/01/19(木) 00:02:19
[1] 授業単元:プログラミン
[2] 問題文(含コード&リンク):
文字列(空白含まない)の子音だけを取り出す関数getconsntを作成せよ。
getconsntの引数は2つ。第1引数は対象の文字列、
第2引数は作成される(子音だけの)文字列を入れる配列とせよ。


char ans[100];
.....
getconsnt("Doraemon",ans);
printf("%s\n",ans)



Drmnと表示される

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:borland
 [3.3] 言語:C
[4] 期限:1月23日まで
[5] その他の制限:

初心者にも分かるような簡単なプログラムでお願いします。
出来れば解説コメントがあるととても助かります。_(._.)_
112デフォルトの名無しさん:2006/01/19(木) 00:09:47
>>106
#include <list>
#include <numeric>
int sumlist(std::list<int>& src) {
    return std::accumulate(src.begin(), src.end(), 0);
}

C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/761
のどこが不満だったのかが書かれない限り君の求める答えは
出ない。
113デフォルトの名無しさん:2006/01/19(木) 00:11:22
>>106
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1497.txt

>>109
ありゃガイシュツだったかスマソ。

>>69
ついに名前50人分のリストは上がらなかったな。もう寝るぞ。プログラムは完成
してて、後は名前を入れるだけだったんだが。
114デフォルトの名無しさん:2006/01/19(木) 00:12:28
>>112
そいつは俺もすぐに思いついたが、一応ループにしたのが>>113
確かに出題条件を読むと、アルゴリズムを使ってはいけないとは
どこにも書いてないもんな。
115デフォルトの名無しさん:2006/01/19(木) 00:15:59
>>111
できるかぎり分かりやすく書いた

#include <stdio.h>
int isvowel( char c )
{
const char vowels[] = "aeiouAEIOU", *p;
for ( p = vowels; *p; ++p )
if ( *p == c ) return 1;
return 0;
}
void getconsnt( const char *str, char *ret )
{
for ( ; *str; ++str ) {
if ( isvowel( *str ) ) continue;
*ret++ = *str;
}
*ret = 0;
}
int main( void )
{
char ans[100];
getconsnt("Doraemon",ans);
printf("%s\n",ans);
return 0;
}
116デフォルトの名無しさん:2006/01/19(木) 00:23:23
>>111
俺もわかりやすく書いたつもり
#include <stdio.h>
void getconsnt(const char* src, char* dest) {
    /* srcのそれぞれの文字に対して処理を順番に行う。 */
    do {
        switch(*src) {
            case 'a': case 'i': case 'u': case 'e': case 'o':
            case 'A': case 'I': case 'U': case 'E': case 'O':
                /* aiueoのいずれかなら何もしない */
                break;
            default:
                /* aiueo以外ならsrcからdestに文字をコピーし、destを1文字進める */
                *dest = *src; dest++;
                break;
        }
    } while (*src++ != '\0'); /* いずれにせよ、srcを1文字進める */
}
int main(void) {
    char ans[100];
    getconsnt("Doraemon", ans);
    printf("%s\n", ans);
    return 0;
}
117デフォルトの名無しさん:2006/01/19(木) 00:30:09
>>110
(C++がわかっていれば)わかりやすく書いたつもり

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1498.txt
118デフォルトの名無しさん:2006/01/19(木) 00:33:22
ちんちんがおっきくなるプログラムを作成せよ
11927 ◆oHb7yqS7OQ :2006/01/19(木) 00:41:15
すみません、遅ればせながら
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1500.txt

よろしくお願いいたします。
120110:2006/01/19(木) 00:52:05
>>117
ありがとうございます。
マヌケな質問とは思いますが出力する数字を左詰めにするにはどうすれば良いでしょうか?
大学に送信すると自動的に適当な数字を入力して正否を確認してくれるのですが
どうやら出力する答えは左詰めで

番号 点数
番号 点数

となっていないとないと間違い扱いになるみたいです。
私には>>117のプログラムは難しくてほとんど手を付けれ無いのでよろしくお願いします。
121デフォルトの名無しさん:2006/01/19(木) 01:01:47
>>117
operator<の動きが直感に反するので、
通常の比較にして、stable_sortにはrbegin(),rend()を渡すほうがよいかと。
122デフォルトの名無しさん:2006/01/19(木) 01:05:01
>>110>>120
単純に出力する方法
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1501.txt

短いコードだけど、これを完璧に理解するのは大変だと思うので、
理解してもらわなくてヨシ。

123デフォルトの名無しさん:2006/01/19(木) 01:07:09
>>121
そういわれれば。気をつけるよ。
124デフォルトの名無しさん:2006/01/19(木) 01:09:53
[1] 授業単元:プログラミング言語U
[2] 問題文(含コード&リンク):
打ち込んだ式を計算する、* / ( )等の優先順位を含む四則演算のプログラムを作れ。
ただし、イコールキー(=)を押下した時点で答えをイコールの右に表示させること。

[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 2006年01月27日09:00まで
[5] その他の制限: 特になし。よろしくお願いします
125デフォルトの名無しさん:2006/01/19(木) 01:13:50
ただし以降がかなり無理な予感。
126デフォルトの名無しさん:2006/01/19(木) 01:19:40
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):

次のintの配列に格納されている整数がある、キーボードから整数値を入力。
入力した整数が配列にあるかをディスプレイに表示するプログラムを作成せよ。

int a[] = {15 10 5 1 8 21 5 18 ];

[3] 環境
 [3.1] OS: Windows
 [3.2] VC
 [3.3] 言語:C
[4] 期限: ([2006年01月19日12:00まで]
[5] その他の制限: サーチにちょっと触れた所までです。


サーチの授業の予習として出されたのですが分かりません。
どうかよろしくお願いいたします。
127デフォルトの名無しさん:2006/01/19(木) 01:24:31
>>126
#include<stdio.h>
int main(void){
int a[] = {15,10,5,1,8,21,5,18};
int x,i;
scanf("%d",&x);
for(i=0;i<8;i++)
if(a[i]==x){
printf("%d番目に%dはある\n",i+1,x);
return 0;
}
puts("無いな");
return 0;
}
128110:2006/01/19(木) 01:29:03
>>122
ありがとうございました。
129デフォルトの名無しさん:2006/01/19(木) 01:35:37
>>128
別解。
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
struct student {
    int student_num, score;
};
std::ostream& operator<<(std::ostream& ost, const student& rhs) {
    ost << rhs.student_num << ' ' << rhs.score;
    return ost;
}
std::istream& operator>>(std::istream& ist, student& rhs) {
    ist >> rhs.student_num >> rhs.score;
    return ist;
}
bool operator<(const student& lhs, const student& rhs) {
    return lhs.score < rhs.score;
}
int main() {
    std::vector<student> container;
    for (int count = 0; count < 100; ++count) {
        student input;
        std::cin >> input;
        if (input.student_num == 0 && input.score == 0) break;
        container.push_back(input);
    }
    std::stable_sort(container.rbegin(), container.rend());
    std::copy(container.begin(), container.begin() + std::min(std::vector<student>::size_type(11), container.size()), std::ostream_iterator<student>(std::cout, "\n"));
    return 0;
}
130デフォルトの名無しさん:2006/01/19(木) 01:39:26
>>124
それは環境依存な内容で、与えられた環境のコンソールを使って
標準Cを使っては実現できない。参考までに以前出した電卓をどぞ。

#include <stdio.h>
int error_code; double expr(FILE *fp); double term(FILE *fp); double fact(FILE *fp);
double expr(FILE *fp) {
    double ret = term(fp); int ope;
    while ((ope = fgetc(fp)) == '+' || ope == '-') if (ope == '+') ret += term(fp); else ret -= term(fp);
    ungetc(ope, fp);
    return ret;
}
double term(FILE *fp) {
    double ret = fact(fp), temp; int ope;
    while ((ope = fgetc(fp)) == '*'|| ope == '/' || ope == '%') if (ope == '*') ret *= term(fp); else if ((temp = term(fp)) != 0.) if (ope == '/') ret /= temp; else ret = (int)ret % (int)temp; else ret = error_code = 1;
    ungetc(ope, fp);
    return ret;
}
double fact(FILE *fp) {
    double d; int parenthesis;
    if (fscanf(fp, "%lf", &d) == 1) return d;
    else if ((parenthesis = fgetc(fp)) =='(') {
        d = expr(fp);
        if ((parenthesis = fgetc(fp)) != ')') return error_code = 2; else return d;
    }
    else return error_code = 3;
}
int main(void) {
    double d; error_code = 0; d = expr(stdin);
    if (!error_code) printf("result:%lf", d);
    else printf("error code:%d", error_code);
}
131124:2006/01/19(木) 01:46:34
>>125,130
環境依存と判らずにすみませんでした。

>>130
ありがとうございます。参考にさせてもらいます
132デフォルトの名無しさん:2006/01/19(木) 01:49:21
>>119
横から。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1502.txt

ポインタが理解できないと言われても困るが・・・・・
何とか頑張って理解してくれ。
133デフォルトの名無しさん:2006/01/19(木) 07:40:07
134デフォルトの名無しさん:2006/01/19(木) 08:24:32
>>108
ありがとうございました!!
iteratorがポインタだと言い張り提出しました
135デフォルトの名無しさん:2006/01/19(木) 09:52:09
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
  キーボードからファイル名を読み込み、そのファイル中の数字、文字の個数を
  カウントして画面に表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] borland
 [3.3] C
[4] 期限: 2006年1月20日16:00まで
[5] その他の制限: 特になし

これ出さないと単位がやばいのに、さっぱり分かりません。
お願いします。
136デフォルトの名無しさん:2006/01/19(木) 09:54:28
文字というのは全角も含むのかね?文字コードは?
137デフォルトの名無しさん:2006/01/19(木) 10:07:01
半角のみ
文字コードはアスキーコードです。
138デフォルトの名無しさん:2006/01/19(木) 10:57:18
>>135
#include <stdio.h>
#include <ctype.h>
int main()
{
long ch[256] = {0};
char fn[256];
int in;
FILE *fp;
printf("INPUT FILENAME>>");scanf("%s",fn);
if ((fp = fopen(fn, "r")) != NULL) {
while ((in = getc(fp)) != EOF) ch[in]++;
for (in = 0; in <= 255; in++) if(isalnum(in) && ch[in] != 0) printf("%c %ld\n",in,ch[in]);
fclose(fp);
}
return 0;
}
こんなもんかな?あまりチェックしてないからバグあったら自分でなんとかしてくれ。
139デフォルトの名無しさん:2006/01/19(木) 11:15:33
>>138
ありがとうございます。ちゃんと動きました。
ただ、文字数の合計を表示するには、どうすればいいのでしょうか?
140デフォルトの名無しさん:2006/01/19(木) 11:17:11
>>1
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
141デフォルトの名無しさん:2006/01/19(木) 11:19:23
文字と数字の個数のカウントだから138のソースは見当違いだな。
142デフォルトの名無しさん:2006/01/19(木) 11:23:47
じゃあ、こうか。
long ch = 0;
char fn[256];
int in;
FILE *fp;
printf("INPUT FILENAME>>");scanf("%s",fn);
if ((fp = fopen(fn, "r")) != NULL) {
while ((in = getc(fp)) != EOF) if(isalnum(in)) ch++;
printf("数字、文字の個数=%ld\n",ch);
fclose(fp);
}
return 0;
143デフォルトの名無しさん:2006/01/19(木) 11:29:45
>>118
#include <stdio.h>

int main(void)
{
int i;
char name[256];
printf("名前を入力 < ");
gets(name);
printf("回数を入力 < ");
scanf("%d",&i);
for (;i>0;i--){
printf("%s君、大好き\n",name);
}
return 0;
}
これでどうだ?
後は自分の想像力でw
144デフォルトの名無しさん:2006/01/19(木) 11:50:35
>>142
ありがとうございます。
何とか進級できそうです。
145デフォルトの名無しさん:2006/01/19(木) 14:25:01
このスレはある程度簡単なものだったら初心者には勉強にはなるが、
難しいと退屈だな。
誰か初心者向けの問題だしてくれ。
スレ違いだったらスマン
146デフォルトの名無しさん:2006/01/19(木) 14:28:43
>>145
過去スレにいくらでもあるだろ
かってに探してやれよ
147デフォルトの名無しさん:2006/01/19(木) 14:36:48
[1] 授業単元:プログラミング言語U
[2] 問題文(含コード&リンク): http://omegaterritory.fc2web.com/
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 早ければ早いほど嬉しいです。遅くて1月22日まで
[5] その他の制限: できるだけ分かりやすいプログラムでお願いしますm(__)m
プログラムはメールにてお願いします。[email protected] へ


148デフォルトの名無しさん:2006/01/19(木) 14:34:43
c++なんですけど
ダイアログベースで別ウインドウを開いてグラフを表示させたいんですけど
ウインドウを開くコマンドってなんですか?
149デフォルトの名無しさん:2006/01/19(木) 14:47:57
#include <gtkmm.h>

int main( int argc, char **argv )
{
Gtk::Main kit( argc, argv );
Gtk::Window window;
Gtk::Main::run( window );
return 0;
}
150デフォルトの名無しさん:2006/01/19(木) 14:51:56
>>147
きしゅつ
151デフォルトの名無しさん:2006/01/19(木) 15:33:29
>>143
想像力使っていいならこれで十分だな.
#include <stdio.h>
void main(){puts("んっ…ぅ…ぁん…");}
152デフォルトの名無しさん:2006/01/19(木) 15:39:35
たしかに、それで十分だ。
>>118の宿題は片付いたw
15327 ◆bgdlxVqI.o :2006/01/19(木) 16:04:36
>>132
ありがとうございます、助かりました
154デフォルトの名無しさん:2006/01/19(木) 16:19:19
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):
九九を
1×1=1
1×2=2
1×3=3
 ・
 ・
 ・

と言うように9の段まで、1〜9の間で入力された数字の九九を表示させたいです。

始めて1週間も経っていない超初心者なので、
お手柔らかにお願いします。
for文を使って九九は出来ましたが、うまく

6×5=30

と言う形にできません。
よろしくお願いします。

[3] 環境
 [3.1] OS: Windows
 [3.2] VisualC++ 6.0
 [3.3] 言語: C++
[4] 期限: 今日中
[5] その他の制限: 関数をちょっとかじった辺りまでです。
155デフォルトの名無しさん:2006/01/19(木) 16:29:06
int main(void)
{
int i, j;
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
printf("%d*%d=%d\r\n", i, j, i * j);
}
}
return 0;
}

だれか、未解決の宿題まとめて。
156ヘタレ ◆bNzmQqyF1I :2006/01/19(木) 16:30:09
やっててもわかりませんでした。助けてください

[1] 授業単元:プログラミングおよび演習

[2] 問題文(含コード&リンク): 培風館の「VisualC++で学ぶプログラミング」よりP93問題18
配列のデータを昇順(小さい順)に並び替える関数を作りなさい。
ただし、次の誕生日をデータとし、月と日を2つの配列に入力してから、関数を呼び出して並べ替えなさい
なお、入力形式は月/日とし、/をデータの区切りとして、以下の5件の誕生日データを入力しなさい
誕生日データ:09/15 03/21 12/31 05/05 04/29

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual C++と言うソフト使ってますがよくわからないです
 [3.3] 言語: C++?

[4] 期限: 2006年01月20日 明日提出です。前日にやればいいとかなめてました…orz

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1504.txt
行先頭がQの行以外はヒントとして先に提示され
Qの部分が課題で、一応自分なりに入れてみたけれども動かないです
157デフォルトの名無しさん:2006/01/19(木) 16:30:11
>>154です。

自己解決しました。
お騒がせしましたm(_ _)m
158デフォルトの名無しさん:2006/01/19(木) 16:33:36
作ったけど自己解決されたorz
159デフォルトの名無しさん:2006/01/19(木) 16:34:25
>>158
どんまい
>>157
ちゃんと謝れよ。非常識なヤツだ。
160デフォルトの名無しさん:2006/01/19(木) 16:42:18
>>156

関数そのものを作れって?
ソートのアルゴリズムは?
何でも良いならバブルソートなら超簡単だからぐぐって自分でやってみ
マージソートやクイックソートはちと複雑だがな
161156:2006/01/19(木) 16:57:59
前に授業内で習ったのも多分そのバブルソートなので
今回もそれでいいと思います。

今自分でもどこがダメなのか考えてるので、とりあえずソートの部分調べて作ってきます
162デフォルトの名無しさん:2006/01/19(木) 16:59:28
なんかどれでもいいっていうならクイックソートでも作っていけば点数うpって感じだな
163デフォルトの名無しさん:2006/01/19(木) 17:00:12
つ156
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1505.c
コンパイルしていないけど大丈夫だと思う。
164デフォルトの名無しさん:2006/01/19(木) 17:13:26
>>158サソ せっかく作って頂いたのにすいませんでした。
165デフォルトの名無しさん:2006/01/19(木) 17:18:06
とってつけた謝罪なんて醜いからしなくても良いよ
166156:2006/01/19(木) 17:18:11
>>163
ありがとうございます
やってみたところ
順番は並び変わっていたのですが、結果が
3/-858993460
4/-858993460
5/-858993460
9/-858993460
12/-858993460

と、全部の日付が-858993460とかなっちゃって…ショボン(´・ω・`)
問題で出されたQの部分で書き換えていただいた所は自分で理解できたと思うのですが…日付の表示の原因がわからないです
もしかして、どこか先にヒントとして提示されていた部分のコピペが間違っていたのでしょうか…?
167デフォルトの名無しさん:2006/01/19(木) 17:19:45
>>165 とってつけた謝罪なら最初からしませんから。
168デフォルトの名無しさん:2006/01/19(木) 17:20:24
おやおや
169デフォルトの名無しさん:2006/01/19(木) 17:22:23
教授に文句言っといてくれ。
×for(i=0;i<5;++i) printf("%02d/%02d\n",mm[i],dd[j]);
                              ~~
○for(i=0;i<5;++i) printf("%02d/%02d\n",mm[i],dd[i]);
[j]と[i]の違いです。
170156:2006/01/19(木) 17:28:59
>>169
!! ありがとうございます 明日文句言ってきます
てかなんで自分で気づかなかったんだろう…
ともかくこれで完成のはず(`・ω・´)


結果
3/15
4/21
5/31
9/ 5
12/29
日付の方だけが何故か入力した順番そのまま出てきてるようです…ナズェダ(´・ω;;:;,.
171デフォルトの名無しさん:2006/01/19(木) 17:33:01
というかプログラムを全て壊してしまうかもしれないけど

scanf("%s",str);
として日付を文字列として受け取って
sscanf(str,"%d%c%d",&month,&temp,&date);
みたいな使い方をすればコードが簡単になると思う

いやごめんね
172デフォルトの名無しさん:2006/01/19(木) 17:35:01
このまま教授に提出してくれ
私にもわけ和漢ね。教授にも間違いはあったんだし文句はいわんだろ。
173デフォルトの名無しさん:2006/01/19(木) 17:43:41
間に合うかな?
Q部分以外は変えてないはず
最後を除いてw

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1507.txt

原因は多分sort()の同じ月のとこ
174156:2006/01/19(木) 17:44:23
>>171
えと…スイマセン、sscanfとか多分習ってないです。持ってるテキストにも載ってなかったですorz
もっと勉強してやり方がわかってから使わせていただきます。ありがとうございます

>>172
了解です。このまま出して、あとは質問してきます
自分ひとりでは、どこが間違っているかわからなかったのでとても助かりました。本当にありがとうございます


また演習でどうしてもわからなかったときは質問に来るかもしれないので
そのときはよろしくお願いします
175156:2006/01/19(木) 17:56:33
>>173
おぉ、ありがとうございます。試してみます


結果
3/15
4/21
5/31
9/ 5
12/29
sort()の同じ月の場合のところにif(dd[i]>dd[j]){}をはさんだのはわかったのですが
結果変わらず…orz
176173:2006/01/19(木) 17:57:16
俺も同じ間違いしてるし_| ̄|○

月だけスワップして、日付変えてないでヤンスw

  if(mm[i]>mm[j]){
Q   work1=mm[j];
Q   mm[j]=mm[i];
Q   mm[i]=work1;
Q   work2=dd[j];  //ここ追加
Q   dd[j]=dd[i];   //
Q   dd[i]=work2;  //
   }
}
177156:2006/01/19(木) 18:08:14
>>174
sort()内の
  if(mm[i]>mm[j]){
Q   work1=mm[j];
Q   mm[j]=mm[i];
Q   mm[i]=work1;
のあとに
Q   work2=dd[j];  //ここ追加
Q   dd[j]=dd[i];   //
Q   dd[i]=work2;  //
   }
}
を入れて試してみましたが…変わりません……日付だけ並び変わらないです
自分の入れるところが間違ってるのでしょうか???
178173:2006/01/19(木) 18:16:17
再うp
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1508.txt

そのままコンパイル通るようにQをdefineしてるのは内緒だ。
179156:2006/01/19(木) 18:24:33
>>178
おおおできました!できましたよ!
if(mm[i]>mm[j]){のなかでもdd[]の日付を並び替えないといけないんですね

色々時間を取らせてしまってスイマセン。これで心配事が一つ減りました
本当に助かりました。ありがとうございます

180age:2006/01/19(木) 19:00:01
さあ、次の宿題来い
181163:2006/01/19(木) 20:20:01
だれか163のどこが悪いのか教えてくれー
気になってしょうがない
182173:2006/01/19(木) 20:25:18
>>181

  ,〜'´ ̄ヽ
  ミハ^^ヽヽ(  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ル ゚∀゚)ζ< 宿題なんだから
 , -|  ̄ll~|- 、 | 先生の意向に従っていただこうッ!!
.〈 イ     〈  |___________________
183163:2006/01/19(木) 20:28:48
あんな糞コードを宿題に出す馬鹿は先生じゃねーよ。
少なくとも敬おうとは思わない、寝ながら講座開いてんじゃねーよ。
184魚チョコ:2006/01/19(木) 21:08:20
>>183
――まあ、十円禿くらいには同意。
185デフォルトの名無しさん:2006/01/19(木) 21:17:56
>>150 再アプお願いします。
もしくは57代目の852さん再アプお願いします。
186デフォルトの名無しさん:2006/01/19(木) 21:37:18
[1] 授業単元:プログラミング
[2] 問題文:次のような英小文字の「変換規則」が複数個入ったファイルを用意する。例えばruleとする。
a -> b
b -> c
b -> x
c -> z
変換規則のファイル名、及び「開始文字」を入力し、変換規則を可能な限り使い、変換できなくなるまで変換の過程を出力せよ。何通りもある場合はせべて出力せよ。ただし、変換過程にループがある場合にはその旨を表示して終了すること。
〜例1〜
変換規則のファイル:rule
開始文字:a
出力:
[1]a -> b -> c -> d
[2]a -> b -> x
〜例2〜
変換規則の例
a -> b
b -> a
開始文字:a
出力:ループがあります。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:borland
 [3.3] 言語:C
[4] 期限:2006年1月22日まで
[5] その他の制限:特にありません。

まるで分かりません。助けて下さい…OTL
できるだけ分かりやすいプログラムだとありがたいです。
187デフォルトの名無しさん:2006/01/19(木) 21:39:18
>>186
僕にもさっぱり分かりません。
188デフォルトの名無しさん:2006/01/19(木) 21:45:45
変換規則は独自に作るんだろ。
a -> a
だけでいいじゃん
189デフォルトの名無しさん:2006/01/19(木) 21:59:06
>>186
問題の意味が、サップです
190デフォルトの名無しさん:2006/01/19(木) 22:04:18
問題文も解法は自明と思うが.
191デフォルトの名無しさん:2006/01/19(木) 22:21:13
オートマトンを念頭に置いた問題じゃないかな?
192デフォルトの名無しさん:2006/01/19(木) 22:32:03
伝統的な記号処理の問題じゃないかな。
今でも廃れていない。

193デフォルトの名無しさん:2006/01/19(木) 22:57:39
危険対とか合流性・停止性の話だと思うけど、
もう忘れた。
194デフォルトの名無しさん:2006/01/19(木) 23:16:14
DFAを有向グラフで表し、深さ優先探索を行って、巡回を回避
するって問題らしいな。
195デフォルトの名無しさん:2006/01/19(木) 23:19:03
有向グラフはAdjacency Matrixで簡単に表現できるから、後は
要素数を先にスキャンして、何×何の行列を確保するか調べて
おく必要があるな。そこに気をつければ割と簡単かも。
196デフォルトの名無しさん:2006/01/19(木) 23:22:56
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
全部で20個の整数データを順に入力するものとする。
その際,各データを入力する毎に,新たに入力されたデータが,すでに入力されたデータと異なる場合だけ,
そのデータを出力するプログラムを書け。
なお,データは,1行に1つずつ出力せよ.

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC6.0
 [3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特になし。よろしくお願いします。
197デフォルトの名無しさん:2006/01/19(木) 23:24:25
これは推移閉包(transitive closure)を求める問題に帰結できそうだ。
Warshal 推移閉包 でぐぐってみると良い。
198デフォルトの名無しさん:2006/01/19(木) 23:35:17
>>196
#include<set>
#include<iostream>
int main(){
    using namespace std;
    set<int> sets;
    for(int i=0,j;i<20 && cin >> j;sets.insert(j),++i)
        if(!sets.count(j))cout << j << endl;
}
199デフォルトの名無しさん:2006/01/19(木) 23:44:04
>>198
forの条件式には、本当の意味での条件式のみを入れて
読み取りなどはループ本体に書けと何かの本で見た希ガス
200198:2006/01/19(木) 23:53:18
んー確かにforに入力のテストを入れるのは少し読みにくいか。
となるとこんな感じかな。

#include<set>
#include<iostream>
int main(){
    using namespace std;
    set<int> sets;
    for(int i=0,j ; i < 20 ; ++i)
        if(!(cin >> j))break;
        else if(sets.insert(j).second)cout << j << endl;
}
201デフォルトの名無しさん:2006/01/20(金) 00:16:31
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
引数xのn乗を返す関数my_pow設計せよ。ただし、引数の型はx:double,n:int
とし、戻り値はdoubleとする。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月21日でお願いします。
[5] その他の制限:特にないです。
202デフォルトの名無しさん:2006/01/20(金) 00:21:19
>>186
かなり適当。入力チェックは皆無。出力形式もいい加減だから自分で適当に直して。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1511.txt
203デフォルトの名無しさん:2006/01/20(金) 00:24:15
>>201
適当に
double my_pow(double x,int n){
    double r = 1;
    unsigned u = n;
    if(n<0)u = -n,x = 1/x;
    do if(u%2)r *= x;while(x *= x,u/=2);
    return r;
}
204デフォルトの名無しさん:2006/01/20(金) 00:24:26
>>201
double my_pow(double x, int n)
{
int i = 0;
double base = 1;
for(i = 0; i < n; ++i)
base *= x;
return base;
}
205 ◆Tjwqg0YZug :2006/01/20(金) 00:33:36
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
1,2,3,4,5,6,7,8,9を一つずつ使ってできる9桁の数(例えば294618375など)をyとする。
また、xを正の整数とする。
そこで、y=x*x が成り立つyとxの値をそれぞれ求め、
y=????????? x=?????
y=????????? x=?????
y=????????? x=?????
上記のような形式で値を出力するプログラムを書け。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] VC++ 6.0
 [3.3] 言語:どちらでも可
[4] 期限: 2006年01月23日20:00まで
[5] その他の制限:特にありません。

一度自分でやってみたのですが、技量不足故に全く手がつきませんでした。
どうかよろしくお願いいたします。
206186:2006/01/20(金) 00:47:56
>>202
ありがとうございます。なんとかやってみます。
207デフォルトの名無しさん:2006/01/20(金) 00:55:13
>>203
>>204
ありがとうございます。
208デフォルトの名無しさん:2006/01/20(金) 00:56:46
>>205
#include <stdio.h>
#include <math.h>

int match(int y){
  int flg = 0;
  if(y<123456789||987654321<y) return 0;
  while(y){
    int p = 1<<(y%10);
    if(p&1||flg&p) return 0;
    flg|=p;
    y/=10;
  }
  return 1;
}

main(){
  int begin = (int)floor(sqrt(123456789));
  int end = (int)ceil(sqrt(987654321));
  int x;
  for(x=begin; x<end; ++x) if(match(x*x)) printf("y=%d x=%d\n", x*x, x);
}
209デフォルトの名無しさん:2006/01/20(金) 00:58:29
>>205
#include <stdio.h>

int chk[10];

int check(int y){
int i, r, z;
if(y < 100000000) return -1;
if(y > 999999999) return 0;
for(i = 0; i < 10; i++) chk[i] = 0;
z = y;
while(z > 0){
r = z % 10;
if(chk[r] == 0 && r != 0) chk[r] = 1;
else return -1;
z /= 10;
}
return 1;
}

int main(void){
int x = 1, y, c;
while(1){
y = x * x;
c = check(y);
if(c == 0) break;
else if(c == 1) printf("y=%d x=%d\n", y, x);
x++;
}
return 0;
}
210デフォルトの名無しさん:2006/01/20(金) 01:00:22
>>205
#include<algorithm>
#include<iostream>
#include<math.h>
int main(){
    int y[9];
    for(int i=1;i<10;++i)y[i-1]=i;
    do{
        int value = 0;
        for(int i=0;i<9;++i)value = value * 10 + y[i];
        int x = static_cast<int>(sqrt((double)value));
        if(x*x == value)std::cout << "y="<<value << " x="<<x<<std::endl;
    }while(std::next_permutation(y,y+9));
}
211デフォルトの名無しさん:2006/01/20(金) 01:01:16
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):
int x;
scanf("%d",&x);
printf("%d",x);
上記のようにprintf()では引数に&を使わないのにscanf()では
使う理由を説明せよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月22日でお願いします。
[5] その他の制限:特にないです。
212デフォルトの名無しさん:2006/01/20(金) 01:03:56
使わないと望みどおりの結果を得られないから
213デフォルトの名無しさん:2006/01/20(金) 01:07:02
仕様ですとしか言い様がないなぁ
ライブラリ設計者に聞いてみたいところだが
214デフォルトの名無しさん:2006/01/20(金) 01:08:14
char buf[10];
scanf("%s",buf);
printf("%s",buf);
上記のようにscanfで&を使うとは限らない。
単なる仕様
215デフォルトの名無しさん:2006/01/20(金) 01:11:08
>205

#include <cmath>
#include <cstdio>
using namespace std;

bool isOK( int y ) {
 bool digit[10]={};
 for( int i = 0, j = 100000000; i < 9; ++i, j/=10 ) {
  int n = y / j;
  y %= j;
  digit[n] = true;
 }
 for( int i = 1; i <= 9; ++i ) if( !digit[i] ) return false;
 return true;
}

int main( ){
 // 123456789 <= x*x <= 987654321 より x上限がわかる
 int max_x = (int)floor( sqrt( 987654321.0 ));
 int min_x = (int)ceil( sqrt( 123456789.0 ));

 for( int x = min_x; x <= max_x; ++x ) {
  int y = x * x;
  if( isOK( y )) printf( "y=%d x=%d\n", y, x );
 }
}
216デフォルトの名無しさん:2006/01/20(金) 01:13:21
こういうことだろう。

scanfでは与えられた引数の値を書き換える必要があるため。
もしscanfがポインタ渡しではなかったとしたら、
クライアント側で宣言した引数の値をscanf関数が変更することはできない。
printfは与えられた引数の値の変更が一切発生しないため、値渡しでよい。
217デフォルトの名無しさん:2006/01/20(金) 01:17:39
>>211
大筋は>>216でいいと思うが、>>214の様に例外もあるわけで
問題がおかしいと答えとけ
218デフォルトの名無しさん:2006/01/20(金) 01:22:43
printfでも
printf( "%p", &hoge )
みたいに&付けたりあり得るしな。
219205 ◆Tjwqg0YZug :2006/01/20(金) 01:25:11
>>208
>>209
>>210
>>215
質問してまだあまり経っていませんが、直ぐにお答えしていただいて有難うございます。
皆さんの優しさに本当に感謝いたします。
これからも皆さんを見習って、私も誰かに教えられるような腕前になるまで努力していこうと思います。
本当に有難うございました。
220デフォルトの名無しさん:2006/01/20(金) 01:31:33
いや、問題はおかしくない。

>>211ではまず例を提示しており、
その例を引き合いにして、「printfでは&を使わず、scanfでは&を使う。なぜか?」と聞いている。
scanfでは&を「必ず」使うとは書いていないし、
printfでは&を「必ず」使わないとも書いていない。

まあ、悪文ではあるわな。
221211:2006/01/20(金) 01:33:13
明日授業があるので、皆さんに教えてもらった事を参考に
質問してきます。ありがとうございました。
222デフォルトの名無しさん:2006/01/20(金) 01:35:36
とゆうか出題者はその問題によって何を理解させたいんだろうな
scanfが値を格納する関数であることを考えれば
引数は左辺値でなければならないことは自明だし
そうであれば少なくとも値型であるintでは
左辺値とするためにアドレス演算子を使うのは至極当然
223デフォルトの名無しさん:2006/01/20(金) 02:19:52
[1] 授業単元: C言語実習
[2] 問題文(含コード&リンク): ポインタ配列の変数を下記の文字列(”JANUARY”〜”DECEMBER”)で初期化
  1 ’R’が含まれている文字列を表示
  2 各文字列で’R’が最初に見つかった所は先頭から何文字目かを表示する
初期化文字列:"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"
 ○実行結果例  Rがある月はJANUARYで6文字目です
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] C
[4] 20日24:00
[5] strchr() 
224デフォルトの名無しさん:2006/01/20(金) 02:28:07
まぁ牡蠣でも食べて落ち着け。
225デフォルトの名無しさん:2006/01/20(金) 02:31:04
>>223
#include    <stdio.h>
#include    <string.h>

int main() {
    const char *Month[] = { "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER",NULL };
    const char **aaa;
    char *bbb;
    
    for(aaa=Month; *aaa!=NULL; aaa++)
    {
        bbb = strchr(*aaa,'R');
        if (bbb != NULL){ printf("%s %d\n", *aaa, bbb-*aaa+1); }
    }
    
    return 0;
}
226デフォルトの名無しさん:2006/01/20(金) 02:32:10
>>223
#include <stdio.h>
#include <string.h>
int main(void)
{
char* month[] = {"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
char* p;
int i;
for( i = 0 ; i < 12 ; i++ ) {
p = strchr(month[i], 'R');
if( p != NULL ) printf("Rがある月は%sで%d文字目です\n", month[i], p - month[i] + 1);
}
return 0;
}
脳内コンパイル
227デフォルトの名無しさん:2006/01/20(金) 02:36:48
>>211
出題者がxをどうにかしたいと思っているから、と答えれ
228デフォルトの名無しさん:2006/01/20(金) 02:42:42
>>211
その問題解けないようじゃ
C/C++なんかやめて
JAVAに行きなさい
229211:2006/01/20(金) 02:43:16
わかりました。
230211:2006/01/20(金) 02:45:26
>>229
俺じゃないです。
231名無し:2006/01/20(金) 03:06:19
[1] 授業単元:再帰法(階乗の計算)
[2] 問題文:[入力]6以下の自然数N(決して7以上の数を入力しないよう!)
[処理]N!を再帰法を使って計算する。[出力]入力の階乗(factorial)!の計算結果を出力。
[説明]fac(n)=1 n=1の時,fac(n)=n*fac(n-1) n>1の時、が階乗!の再帰的な定義である。
この定義をそのまま、関数(再帰的関数)として定義せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[2006年1月22日9:00まで]
[5] その他の制限:
お願いします。
232デフォルトの名無しさん:2006/01/20(金) 03:10:09
>>231
#include <stdio.h>

int kaijo(int n)
{
    if (n==1)
        return 1;
    return kaijo(n-1)*n;
}

int main()
{
    int n,ans;
    scanf("%d", &n);
    ans=kaijo(n);
    printf("%d\n", ans);
    return 0;
}
233名無し:2006/01/20(金) 03:16:49
[1] 授業単元:再帰法と分割統治法
[2] 問題文:[入力]32個の異なる二桁の自然数[操作]32個の自然数の中で最大値(MAX)と最小値(MIN)を求める。
[出力]入力データ、最大値(MAX)と最小値(MIN)
[説明]入力された32個のデータを配列に記憶。記憶された32個のデータを集合と考え、配列の添数(インデックス index) m,n(m<nを仮定)を
使って配列のm番目からn番目までのデータを含む部分集合は添数を使って(m,n)で表せる。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[2006年1月22日9:00まで]
[5] その他の制限:
234デフォルトの名無しさん:2006/01/20(金) 03:21:03
最小値と最大値を取り出すのではなく
求めるっつーことはソートの関数作れって事でしょ

バブルソートなんかは簡単だから自分で作ってみなさいな
235デフォルトの名無しさん:2006/01/20(金) 03:24:08
>>234
単元が分割統治と再帰だからソートを実装するのが
求められてるのだとしたら、バブルじゃなく
クイック・マージが妥当だろ
236デフォルトの名無しさん:2006/01/20(金) 03:26:23
問題の粒度を小さくするならマージかクイックが最適だな
237デフォルトの名無しさん:2006/01/20(金) 03:35:47
ところでなんで231のは7!以上は駄目なのだろうか

238デフォルトの名無しさん:2006/01/20(金) 03:41:32
>>237
オーバーフローじゃね?
確か16bit整数型だと8!でオーバーフロー起こす
もっともそれでも7!がダメな理由が分からんが

それにlongや(C99なら)long long使えばもっと伸びるしな
239デフォルトの名無しさん:2006/01/20(金) 10:59:27
宿題全然関係ないけどBCCでlong long int て使えないの?
240デフォルトの名無しさん:2006/01/20(金) 11:50:03
つかえね。
241デフォルトの名無しさん:2006/01/20(金) 12:30:49
[1] 授業単元: C言語プログラミング
[2] 問題文
学生20人の成績を入力すると、上位5人の成績・全体の平均点・
最低点を出力するプログラムを作成せよ。
[3] 環境
 [3.1] WindowsXP
 [3.3] C言語
[4] 期限: 1月22日午前10時
[5] その他の制限: 初心者なのでできるだけ簡単な方法でお願いします。
理解できるのは、if,for,while,配列,関数がかろうじて少し…といった
レベルです。

どなたかよろしくお願いします!!
242デフォルトの名無しさん:2006/01/20(金) 12:44:19
[1] 授業単元:情報処理
[2] 問題文:符号なし16進数を文字列s[]に変換する関数ItoH(n,s)を作りなさい。
     nを16で割った余りが16進数の一番低位の数となります。これを'0'〜'9'または'A'〜'F'
     の文字に変換します。次に16で割った商を新しいnとして上の変換を繰り返していきます。
     できあがった文字列は、逆順に並んでいますので、文字列の順序を入れ替えていきます。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 一時間以内でお願いします。
[5]<string.h>を使ってください。
おながいします
243デフォルトの名無しさん:2006/01/20(金) 12:45:58
>>241
(゚Д゚)ノ ァィ
#include<stdio.h>
int main(void){
int ten[20],i,k,c;
float s=0.0;
for(i=0;i<20;i++){
scanf("%d",&ten[i]);
s += ten[i];
}
s /= 20;
for(i=0;i<5;i++)
for(k=19;k>i;k--)
if(ten[k]>ten[k-1]){
c = ten[k];
ten[k] = ten[k-1];
ten[k-1] = c;
}
for(i=0;i<5;i++)
printf("%d\n",ten[i]);
printf("平均点:%f点\n",s);
return 0;
}
244デフォルトの名無しさん:2006/01/20(金) 13:06:31
>>242
さ〜て間に合うかな(・∀・)ニヤニヤ
245デフォルトの名無しさん:2006/01/20(金) 13:09:20
13時44分辺りにうpるか
246デフォルトの名無しさん:2006/01/20(金) 13:16:47
>>242
<string.h>ってどこに使うんだ?
247デフォルトの名無しさん:2006/01/20(金) 13:17:16
sprintf使えば1行で出来るな…
248デフォルトの名無しさん:2006/01/20(金) 13:20:03
>>247
ッシ!!
249デフォルトの名無しさん:2006/01/20(金) 13:23:04
作ってみたがstring.hの使いどころが分らないw
無理やり使えないことはないが何か違う気がする
250デフォルトの名無しさん:2006/01/20(金) 13:25:24
sprintfはともかくとして
string.h使うならC++まで拡張して逆方向反復子が使えて便利だったのに
251デフォルトの名無しさん:2006/01/20(金) 13:26:05
string.hを使ってstrrevを使わせたいみたいです。
252デフォルトの名無しさん:2006/01/20(金) 13:36:36
文字列反転の関数Cにあったのか・・・
253241:2006/01/20(金) 13:38:40
>243
素早い回答ありがとうございます!
もうお返事あるとは思わず少し感動…。
なのですが、これだと上位5人の成績表示されないと思うのですが…
どう直せばよいのかも分からずorz

すみません、どなたかお願いします!!
254デフォルトの名無しさん:2006/01/20(金) 13:44:21
>>253
あれでおkだよ。ソートしてんじゃん。
255デフォルトの名無しさん:2006/01/20(金) 13:45:06
>>253
(゚Д゚)ノ 悪い最低点忘れてたw
#include<stdio.h>
int main(void){
int ten[20],i,k,c;
float s=0.0;
for(i=0;i<20;i++){
scanf("%d",&ten[i]);
s += ten[i];
}
s /= 20;
for(i=0;i<19;i++)
for(k=19;k>i;k--)
if(ten[k]>ten[k-1]){
c = ten[k];
ten[k] = ten[k-1];
ten[k-1] = c;
}
puts("上位点");
for(i=0;i<5;i++)
printf("%d\n",ten[i]);
printf("最低点:%d\n",ten[19]);
printf("平均点:%f点\n",s);
return 0;
}
256デフォルトの名無しさん:2006/01/20(金) 13:46:17
>>242
そろそろ行くか
#include<stdio.h>
#include<string.h>
void ItoH(int,char*);
void ItoH(int n,char *s){
char str[]="0123456789ABCDEF";
int i=0;
do{
s[i] = str[n%16];
n = n/16;
i++;
}while(n>0);
s[i] = '\0';
strrev(s);
}
int main(void){
char s[256];
int n;
printf("数字入力:");
scanf("%d",&n);
ItoH(n,s);
printf("%s\n",s);
return 0;
}
257デフォルトの名無しさん:2006/01/20(金) 14:45:06
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
   ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。

:実行例:

a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4]2006/01/20 18:00まで
258デフォルトの名無しさん:2006/01/20(金) 14:54:18
259256:2006/01/20(金) 15:11:53
ここまで自力で考えました。
これをいじれば出来ると思うのですが上手くいきません。
お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1512
260デフォルトの名無しさん:2006/01/20(金) 15:19:39
五目並べ作れって言われたんですがどうすればいいんでしょう
261デフォルトの名無しさん:2006/01/20(金) 15:21:00
>>259
なんで単発スレ立ててるんだよ
もうくるな
262デフォルトの名無しさん:2006/01/20(金) 15:24:01
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
   ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。

:実行例:

a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4]2006/01/20 18:00まで

ここまで作りましたhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1512
263デフォルトの名無しさん:2006/01/20(金) 15:24:47
意味がわからんからやらない
264デフォルトの名無しさん:2006/01/20(金) 15:25:34
ageてるからやらない
265デフォルトの名無しさん:2006/01/20(金) 15:26:28
>>264!目欄!目欄!
266デフォルトの名無しさん:2006/01/20(金) 15:28:38
fprintf(>>262."%s"."氏ね");
267デフォルトの名無しさん:2006/01/20(金) 15:29:03
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク): 文字列sの中の異なった文字の数を(種類)を数える関数SuteStr(s,t)を作りなさい。
              文字列t[]には文字の種類を入れることにします。
              <ヒント>
                文字列sの要素*sを1つずつチェックしていきます。t[]には、今まで出てきた文字の種類を
                入れておきます。文字*sと同じ文字がt[]の中になかったら、t[]の後に追加します。文字列
                s[]の中に'\0'が出てくるまで繰り返します。
             <実行例>
               Input String: C-language
Different char number is 8
Output String:C-langue
[3] 環境
 [3.1] OS: mac osX 10.4.4
 [3.2] コンパイラ名とバージョン: X code2.0
 [3.3] 言語: C言語
[4] 期限: 今日の五時まで
[5] その他の制限: なし
もう無理。教えてください。
268デフォルトの名無しさん:2006/01/20(金) 15:29:22
やらないのでなく
できないとはっきり言え
269デフォルトの名無しさん:2006/01/20(金) 15:30:33
>>268
だから 意味が分らない=できない
のつもり^^;
270デフォルトの名無しさん:2006/01/20(金) 15:30:38
はいはい
271デフォルトの名無しさん:2006/01/20(金) 15:32:37
>>262
英数字だけ?
それとも2バイト文字も含む訳?
272デフォルトの名無しさん:2006/01/20(金) 15:33:15
レスナンバー間違った
>>271::>>262>>267
273デフォルトの名無しさん:2006/01/20(金) 15:39:34
/* 名前はテケトー */
int count(char *s)
{
int table[256] = {0};
int i, sum = 0;
for (; *s; s++)
table[(unsigned char) *s]++;
for (i = 0; i < 256; i++)
if (table[i])
sum++;
return sum;
}
274デフォルトの名無しさん:2006/01/20(金) 15:40:38
>>262
前スレで作ってもらったのは無視?
ttp://pc8.2ch.net/test/read.cgi/tech/1136768567/409
275デフォルトの名無しさん:2006/01/20(金) 15:42:45
>>268
できない

これでええか?
276デフォルトの名無しさん:2006/01/20(金) 15:57:39
>>273 惜しい
int a(char *b) { int c[256] = {0}, d = 0; for (; *b; b++) if (!c[*(unsigned char *) b]++) d++; return d; }
277デフォルトの名無しさん:2006/01/20(金) 15:59:11
あんたらt[]に文字入れる気無しですか
278デフォルトの名無しさん:2006/01/20(金) 16:07:48
>>277 気づいたら直してあげなよ・・・

int SuteStr(const char *s, char *t)
{
  int table[256] = {0};
  int count = 0;
  for (; *s; s++) {
    if (table[*(const unsigned char *) s]++ == 0) {
      *t++ = *s;
      count++;
    }
  }
  *t = '\0';
  return count;
}
279デフォルトの名無しさん:2006/01/20(金) 16:15:35
ところで
char配列をqsortして
値が大きくなったらカウンターの数をインクリメントするってのは駄目?
280デフォルトの名無しさん:2006/01/20(金) 16:17:12
>>278
今携帯なんでw
281デフォルトの名無しさん:2006/01/20(金) 16:19:19
>>279
有りだろ
むしろそっちの方がわかりやすくね?
282デフォルトの名無しさん:2006/01/20(金) 16:19:42
ダヨネ
283デフォルトの名無しさん:2006/01/20(金) 16:21:23
おもしろそうだから、レッツ・トライ!>>279
284デフォルトの名無しさん:2006/01/20(金) 16:23:38
一度作ったんだけど何か回答出てたんでソース消しちゃったよ(´・ω・`)
285デフォルトの名無しさん:2006/01/20(金) 16:42:09
俺が情報系の教官だったらこのスレチェックするなあ。

ところで、ときどきVisualC++でっていう指定があるけど、
学校のコンピュータに入ってんのかな?
286デフォルトの名無しさん:2006/01/20(金) 16:47:12
>>285
俺が教官でも最低限、自分の担当する言語の宿題スレは確認するな

VC++なんて入れたらとんでもない金掛かると思うがな
まぁ入ってるところもあるんじゃねーの
俺の所はおそらくずっとLinux(GCC)だろうが
287デフォルトの名無しさん:2006/01/20(金) 16:52:30
vcを全端末に入れると金かかるよね。
gcc,g++,borland c++だったら、ただだから
たいていの教育機関にはこれらが入ってると思う。
てか、初心者はプログラムの本質学ぶのが目的だから
vc使わなくてもいいような気もする・・・
288デフォルトの名無しさん:2006/01/20(金) 16:52:52
[1] 授業単元:情報処理[2] 問題文:
#incude <stdio.h>
#define LOW 3 /* 行数 */
#define COLUMN LOW /* 列数 */
int main(){int i,j,k;
double A[LOW][COLUMN + 1]={{3,2,1,10},{2,5,2,18},{1,4,1,12}};
double d;
double x[3] = {0,0,0}; /* 答えを入れる */
double b[3] = {0,0,0}; /* 式(6)で使う */
double s = 0; /* 0で初期化 */
/* 【前進消去】 */
for ( j=___A___; j < ___B___ ; j++ ){d = ___C___;
for ( k = 0; k <= COLUMN; k++ ){___D___; }}}
/* b=(b1,b2,b3)をつくる */
for ( i=0 ; i<LOW ; i++ ){b[i] = A[i][3];}
/* 【後退代入】 */
for ( i=LOW-1; i>= 0 ; i-- ){s = 0;
for ( k = i+1; k < COLUMN; k++ ){ /* 式(6)Σを計算 */
___E___; }
x[i] = ___F___; /* 式(6)のxを計算 */ }
for ( i=0 ; i<LOW ; i++ ){ /* 変形した行列の表示 */
printf ("%d: %lf %lf %lf\n", i, A[i][0],A[i][1],A[i][2], A[i][3]); }
printf ("X = (%lf %lf %lf)^T\n", x[0], x[1], x[2]);
return 0;}
解答がx1=(1,2,3)となるように(A)(B)(C)(D)(E)(F)をもとめよ
[3.3] 言語: C言語
[4] 期限: 一時間
289デフォルトの名無しさん:2006/01/20(金) 16:58:45
>>286
うちの大学は全てのPCにVS.NETが入ってる
しかも授業ではCPadを使う
290デフォルトの名無しさん:2006/01/20(金) 17:01:24
>>289
ちょwww
どこの大学?
うち国立だけど、pascal、gcc、lisp、prologなんか入ってるOTZ
291デフォルトの名無しさん:2006/01/20(金) 17:03:42
うちは Mac だし国立でも私立でも専門でもいろいろあるんじゃないの?
292デフォルトの名無しさん:2006/01/20(金) 17:06:04
>>287
むしろ初心者にVCなんて使わせたら、悪影響な気がするがな
VCの補助機能は確かに便利だが、純粋にプログラミングの
本質的な部分を覚えるのにはかえって邪魔になる

>>290
俺も国立だが、gpc/gcc/g++/csccなんかが入ってるな
293デフォルトの名無しさん:2006/01/20(金) 17:14:38
うちは高専だが全部にVC++が入ってるな
294デフォルトの名無しさん:2006/01/20(金) 17:17:35
お兄さんの大学BASICと汗だけだった('A`;) ...
295デフォルトの名無しさん:2006/01/20(金) 17:20:24
VC だと、ヘッダファイルの変さを我慢すると、標準入出力を使う
コンソールアプリケーションのトレースができたりする。
296デフォルトの名無しさん:2006/01/20(金) 17:22:25
【質問テンプレ】
携帯からの書き込みですのでコピペできませんでした
C言語
期限 今日の19時頃まで
問い 整列済みデータを二分木で表現
整列済みデータは乱数を発生させて自分でソート って感じで…

もしできたら
二分木から指定した値を検索するプログラムも…
ょろしくです(>_<)
297デフォルトの名無しさん:2006/01/20(金) 17:42:34
携帯電話にコンパイラとデバッガはついていません
298デフォルトの名無しさん:2006/01/20(金) 17:58:13
>>290
地元の私立大学
偏差値は低いが金は有り余ってる
299デフォルトの名無しさん:2006/01/20(金) 18:11:22
違法コピーを通報しますた。
300デフォルトの名無しさん:2006/01/20(金) 18:34:20
うちの大学のPCにも全部VS.NETとか入ってたな。
っていうか、夏休みが終わって学校に行ってみたら100台くらいのPCがPen4 3.2G、メモリ768MB、WinXPに総入れ替えしてあったりしたし
301デフォルトの名無しさん:2006/01/20(金) 19:21:38
>>295
> VC だと、ヘッダファイルの変さを我慢すると、標準入出力を使う
> コンソールアプリケーションのトレースができたりする。
それってgdbとかでは出来ないの?
302デフォルトの名無しさん:2006/01/20(金) 19:23:56
>>301
gdb ってエディタと連動してたっけ?
303デフォルトの名無しさん:2006/01/20(金) 19:30:19
>>300
えらく豪勢なPCだな・・・('A`)
俺の所はDELLのPen4(2GHz程度っぽい)に入ってたXPをわざわざ消して
VineLinux入れてある

まぁ開発用途で使う俺らにとってはXPより使いやすいんだがな
304デフォルトの名無しさん:2006/01/20(金) 19:31:16
>302
emacsなら可。 よく知らんがリモートデバッグ機能使えば、いろいろできるかもしれん。

>296
二分探索木の挿入とトラバース、探索だな。
305デフォルトの名無しさん:2006/01/20(金) 21:01:03
[1] 授業単元:プログラミングのレポート
[2] 問題文(含コード&リンク):WindowsXPでデスクトップ画面を左右反転させるプログラムを作成せよ
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] VC++
 [3.3] 言語: C++
[4] 期限: 1月31日の17時まで。
[5] その他の制限: 特になし

ビデオカードなんかで回転ができるんだから、左右反転もすぐできるかと思ったけど
やってみたら全然わかんね・・・ orz
よろしくお願いします。
306デフォルトの名無しさん:2006/01/20(金) 21:05:30
>>305
BitBltなら幅を負数にする。
307デフォルトの名無しさん:2006/01/20(金) 22:22:30
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
平面上の点の数n(n≦100),及び,n個の点の座標を配列 x,及び,y に読み込み,
すべての点の間の距離を計算し,その距離が最大になる点の組(2つの点の座標.最初に入力した点の座標を最初),
及び,その距離を出力するプログラムを書け。

(入力例) コメントの部分は除く
3   // 点の数
0 10   // 1 番目の点の x 及び y 座標
0 0   // 2 番目の点の x 及び y 座標
20 0   // 3 番目の点の x 及び y 座標
(出力例) コメントの部分は除く
0 10   // 1 番目の点の x 及び y 座標
20 0   // 3 番目の点の x 及び y 座標
22.36・・・   // 2点間の距離

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC6.0
 [3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特にありません。よろしくお願いします。
308デフォルトの名無しさん:2006/01/20(金) 22:28:11
下旬っていつだよ
309 ◆wa2f.aihh2 :2006/01/20(金) 22:31:14
[1]授業単元:プログラミング
[2]問題文:@0〜1.0の範囲の二組の実数の乱数を5回生成し、
それらをx,yとして得られた5つのxy座標上の点(x,y)を画面に表示する
A40から65の任意の整数をキーボードから入力し、その文字コードに対応するchar型文字を表示する
[3]環境
 [3.1]OS:Windows
 [3.2]コンパイラ名とバージョン:Visual C++ .NET 2003 コマンドプロンプト
 [3.3]言語:C
[4]期限:月曜
[5]その他の制限:出来れば全文でお願いします
310デフォルトの名無しさん:2006/01/20(金) 22:34:03 BE:206313337-
[1] 授業単元:OSの基礎
[2] 問題文(含コード&リンク):哲学者の食事の説明と解決策
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:ありません。よろしくお願いします。
311名無し:2006/01/20(金) 22:34:44
>>233をよろしくお願いします。
312デフォルトの名無しさん:2006/01/20(金) 22:39:17
>>309
(1)はコマンドプロンプトなのに画面に表示と言う辺りが無理だな。
どうやって画面に表示するのか教わっているならその情報を提示しろ。
(2)も、標準入出力でいいのかWinAPIを使うのか、printf()などを使うのかcoutを使うのか、
はっきりしないことには手を出しにくいし。
313デフォルトの名無しさん:2006/01/20(金) 22:41:16
>>312
馬鹿?
314デフォルトの名無しさん:2006/01/20(金) 22:41:34
馬鹿はお前
315デフォルトの名無しさん:2006/01/20(金) 22:42:50
>>310
「哲学者の食事の問題」のどこがCと関係あるんだ?
つーか、ぐぐればわかることだろ。
316デフォルトの名無しさん:2006/01/20(金) 22:43:34
>313=309か?
恥の上塗りだな。
317デフォルトの名無しさん:2006/01/20(金) 22:43:46
>>314
問題よく読めよ馬鹿
318デフォルトの名無しさん:2006/01/20(金) 22:44:54
>>233 最小を求める部分だけ。
int min(int x, int m, int n)
{
  int a, b;
  if (m > n)
    return min(x, n, m);
  if (m == n)
    return x[m];
  a = x[m];
  b = min(x, m + 1, n);
  return (a < b) ? a : b;
}

・・・ウソはついていない。
319デフォルトの名無しさん:2006/01/20(金) 22:45:59
あ、ウソあった。・・・まあ、いいや。
320デフォルトの名無しさん:2006/01/20(金) 22:49:32 BE:117893726-
>>315
書き込んでしまった後に気付いた。スレ違いスマソ
321 ◆wa2f.aihh2 :2006/01/20(金) 22:56:59
>>312
@やり方は教わってません。これは普通に考えたらできないって話ですかね
Aprintfでお願いします。WinAPIとcoutは習ってません
322デフォルトの名無しさん:2006/01/20(金) 22:57:25
>>310 説明。
哲学者が食事をしようと、食材を入れた箱を開けようとする。
ふと哲学者の脳裏にひょっとして、あけたらまずいんちゃうか? という思いがかすめる。
けっこう前のだし・・・・。
箱を開ければ状態は確定するが、箱を開ける前、
箱の中の状態は食べられるものか食べられないものかの状態が入り混じっている。
・・・って、こんなんじゃなかったっけ?

解決策は、箱を開けるとヤバイかもしんないので、箱は絶対に開けない。
323デフォルトの名無しさん:2006/01/20(金) 23:05:43
>>321
@普通に考えたら
(0.1,0.6) (0.2,0.7) (0.3,0.8) (0.4,0.9) (0.5,0.0)
のような表示を出せばいいだけだろうな
A言語がCならAPIだのcoutなんて言い出さないよな
324 ◆wa2f.aihh2 :2006/01/20(金) 23:15:33
>>323
その解釈であってると思います。レスありがとうございます

どなたかお願いします
325デフォルトの名無しさん:2006/01/20(金) 23:22:15
>>322
シュレディンガーのぬこかよ!
326デフォルトの名無しさん:2006/01/20(金) 23:23:27
>>322
シュレーディンガーの猫?
327241:2006/01/20(金) 23:28:02
>255
このスレ回転速いですね…;
お礼遅くなってすみません、ありがとうございました!
328デフォルトの名無しさん:2006/01/20(金) 23:35:59
哲学者の食事って、アレじゃないの?
フォークとナイフが2人分しか用意されてない四角のテーブルに
4人の哲学者が座り、瞑想を終えた哲学者からさっさとフォーク、ナイフ
を取って食事を始めるって奴。

デッドロックのシミュレーションだと思う。要するに、デッドロックが起きない
ようにうまくプログラムをせよって事か?
329デフォルトの名無しさん:2006/01/20(金) 23:42:36
>>324
(1)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
    int i;
    srand((unsigned int)time(NULL));
    for (i = 0; i < 5; i++) printf("(%f, %f)", 2 * rand() / (RAND_MAX + 1.0), 2 * rand() / (RAND_MAX + 1.0));
}

(2)
#include <stdio.h>
int main(void) {
    int c;
    scanf("%d", &c);
    if (40 <= c && c <= 65) printf("%c", (char)c);
}
330デフォルトの名無しさん:2006/01/20(金) 23:43:39 BE:442098195-
>>328
それです。哲学者のルーチンを二つに分けて考えようとしたのですが、これは反則ですか?
Aは周りを気にせず自己中に食いたいときに食う。
Bは隣が食ってたら終わるまで待つ。
といった感じに。
331デフォルトの名無しさん:2006/01/20(金) 23:50:49
>>310
説明:
おなかをすかせた哲学者が角を曲がったところ、100メートル先に焼きいも屋をハケーン。
小カール君にもすんでのところで勝てそうだった経験のある哲学者は50メートル6秒フラットの俊足。
一方、リアカー商いの焼きいも屋のおじいさんは足取りも重く6秒で3メートルも進めたらいいとこ。
しかし哲学者が焼きいも屋を最初に見かけたところまでたどりつくと、
耳の遠いおじいさんはこちらの呼びかけにも気づかず5メートルほど先に行ってしまった。
あわてて哲学者がそこまで追いついても、その頃にはおじいさんはおじいさんなりのペースでまた先に。
哲学者とおじいさんの速さの比を20:1とすると、
哲学者がおじいさんがいたところにたどりつくたびに、おじいさんはその20分の1だけ先に行っていることになり、
哲学者は永遠に焼きいもを食べられない…って問題。

解決策:
宇宙は閉じているので全く反対方向に走れば
しばらくすると正面をこちらむきに歩いてくるおじいさんと出会うことになる。

332 ◆wa2f.aihh2 :2006/01/20(金) 23:52:14
>>329
ありがとうございます。感謝です
333デフォルトの名無しさん:2006/01/20(金) 23:56:15
>>331
アキレスの亀頭?
334デフォルトの名無しさん:2006/01/21(土) 00:06:15
>>307
これで分からなければ勉強不足、と言えるほど簡単に書いた。
#include <cmath>
#include <iostream>
int main() {
    int n;
    std::cin >> n;
    double x[100], y[100];
    for (int i = 0; i < n; ++i) std::cin >> x[i] >> y[i];
    int index_start = 0, index_end = 0;
    double dist2, max_dist2 = 0;
    for (int i = 0; i < n; ++i)
        for (int j = i; j < n; ++j)
            if ((dist2 = (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j])) > max_dist2) {
                index_start = i; index_end = j;
                max_dist2 = dist2;
            }
    std::cout << x[index_start] << ' ' << y[index_start] << '\n' << x[index_end] << ' ' << y[index_end] << '\n' << std::sqrt(max_dist2) << std::endl;
    return 0;
}
335デフォルトの名無しさん:2006/01/21(土) 00:23:15
>>251-252
かなり遅いレスになるが、標準Cにstrrevは含まれない。
336デフォルトの名無しさん:2006/01/21(土) 00:28:27
>>331 上手だな。
(なお、シュレディンガーの半死半生の猫の話はHALってマンガからの引用)

えーっと。哲学者の食事の解説(上手な解説はWebで見てくれ。脳内の情報だけで書いてる)
A)円形の卓があって、哲学者がN人居て、その間に1つづつ食器が置いてある。
B)哲学者は食器を2つ使わないとメシが喰えない。
C)哲学者は以下の動作を1つだけする
C1)まだ食器を持っていないなら、右手の食器を取ろうとする。右手の食器が開いていなければ次のチャンスを待つ
C2)C1が完了していれば、左手の食器を持とうとする。左手の食器が開いてなければ次のチャンスを待つ
C3)両手に食器を持っていれば、(メシを一口喰って)両手の食器を離す
D)哲学者が行動する順序はランダムである(続けて1人の哲学者が行動を続けることもある)
・・・ってすると、そのうち状態が変化しなくなってしまう。

改善:
食器に1〜Nの番号を振る(Cらしく、0〜N-1でも可)。
C1〜C2)を次のように変える。
C1)左右にある食器のうち若い番号の食器を持とうとする。持てなかったらC1へ
C2)もう一方の番号の食器を持とうとする。持てなかったらC2へ
337デフォルトの名無しさん:2006/01/21(土) 00:29:11
誰か野球チームのプログラム作ってよ
338デフォルトの名無しさん:2006/01/21(土) 00:43:10
>>337 >>1使ってkwsk
339デフォルトの名無しさん:2006/01/21(土) 00:47:51
デッドロックの問題か。
340310:2006/01/21(土) 00:49:49 BE:176840036-
>>336
持てるようになるまでtryし続けるってことですね。
どうもありがとうございます


みなさん、スレ違いなのにすみませんでした。
341デフォルトの名無しさん:2006/01/21(土) 00:59:30
OSの授業で出た問題なんですが
↓これは何をするプログラムですか?実行結果も教えてください。
#include <errno.h>
#include <dirent.h>
#include <stdio.h>
int main(void) {
DIR * dir;
struct dirent * ent;
/* "." is the current directory */
if (!(dir = opendir("."))) {
perror("opendir");
return 1;
}
/* set errno to 0, so we can tell when readdir() fails */
errno = 0;
while ((ent = readdir(dir))) {
puts(ent->d_name);
/* reset errno, as puts() could modify it */
errno = 0;
}
if (errno) {
perror("readdir");
return 1;
}
closedir(dir);
return 0;
}

342デフォルトの名無しさん:2006/01/21(土) 01:08:39
>>331
面白そうだな
つまりデッドロックが発生するまでをシミュレートしろということか
暇が出来たときに作ってみるか
343デフォルトの名無しさん:2006/01/21(土) 01:10:37
ただの極限使った収束じゃないか
344デフォルトの名無しさん:2006/01/21(土) 01:14:41
>>341
ls
実行結果は状況依存。環境依存じゃなくて状況依存。なので答えられん。
345デフォルトの名無しさん:2006/01/21(土) 01:20:24
デッドロックの問題を真面目に書こうとすれば、Windowsなら
スレッド使った方がすっきり書けるね。

手持ちのWin32システムサービスプログラミングって本に例が
載ってる。mutexを使って同期を取っているが、デッドロックの
回避にはWaitForMultipleObjects()を使ってる。

ま、この単純な方法では、スタベーション(飢餓状態)という
別の問題が発生するので、待機時間を無限ではなくて
タイムアウトを設定する事で回避しているね。
346デフォルトの名無しさん:2006/01/21(土) 01:24:08
>>330
そいつは哲学者の問題とは違ったニュアンスになるぞ。
Aばかり食いっぱなしになって、Bは飢え死にする。

ダイクストラが例えた哲学者の問題は、すべての者が
同様の権利を持つものだ。
347デフォルトの名無しさん:2006/01/21(土) 01:29:23
つーかこの本のプログラムリストを今から打ち込んで>>1にうp
しとくから、後は自分で考えれ。

著作権の問題があるから本当はまずいんだが・・・・・・
348デフォルトの名無しさん:2006/01/21(土) 01:41:29
こんばんは。
フローチャートでCのポインタを描くにはどのようにしたらいいですか?
例えば

*foo = *foo + 5;

だとどうなるのでしょうか。
よろしくお願いします。
349デフォルトの名無しさん:2006/01/21(土) 01:42:57
その前に*foo += 5って書けや
350デフォルトの名無しさん:2006/01/21(土) 01:43:41
敢えて*foo = *foo + 5;と書いておきました。
351デフォルトの名無しさん:2006/01/21(土) 01:45:51
アドレスfoo番地のデータ(整数なり、キャラクタなり、オブジェクトなり、てきとー)に5を加算する。
352デフォルトの名無しさん:2006/01/21(土) 01:46:09
アドレスが5バイト分ずれる
353デフォルトの名無しさん:2006/01/21(土) 01:46:54
>>352
それはfoo+=5だろw
354デフォルトの名無しさん:2006/01/21(土) 01:47:22
>>351
ありがとうございます。
記号は処理を表す長方形でいいですか?
355デフォルトの名無しさん:2006/01/21(土) 01:47:44
突っ込まれる前に書いておくと>>353
fooがchar*とかだった場合な
356デフォルトの名無しさん:2006/01/21(土) 01:47:49
>>350
普通、フローチャートで型は指定しないよ
357デフォルトの名無しさん:2006/01/21(土) 01:48:19
あー・・・流儀がいっぱいあるからさ・・・資料をみせてもらえば、分かる・・・<処理を表す記号
358デフォルトの名無しさん:2006/01/21(土) 01:48:35
>>353
あ・・・・・ボケたorz
359デフォルトの名無しさん:2006/01/21(土) 01:49:29
>>355
あ・・・確かにsizeof(型)分ずれるにしとこう
どっちにしろ間違ってるけど
360デフォルトの名無しさん:2006/01/21(土) 01:49:43
int **foot;と定義されていれば、・・ウソではないが・・。
361デフォルトの名無しさん:2006/01/21(土) 01:50:21
またバカが来たぞw
362デフォルトの名無しさん:2006/01/21(土) 01:51:30
>351 >357 >360 でつ。どーせ馬鹿でつ(涙)
363デフォルトの名無しさん:2006/01/21(土) 01:53:33
364デフォルトの名無しさん:2006/01/21(土) 01:54:13
ところで、もまえら、いつねてるの?
もれは、さけを、もういっぱいのんだら、ねるぅ。
365デフォルトの名無しさん:2006/01/21(土) 01:57:08
a = 0と同じやつ記号使っといてくださいな。>フローチャートの人。
多分、処理だとは思うけど。
366デフォルトの名無しさん:2006/01/21(土) 01:57:31
>>310
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1515.txt

これは本のリストをC用に書き直しただけなので、そのまま提出すると
バレる可能性がある。適当に修正しといた方がいい。

簡単に説明すると、csStat[]は、現在持たれている箸(もしくはフォーク)
を表す。pStat[]は、現在実際に飯を食っている哲学者を表す。

だから、csStat[]で 1 になっている数は pStat の 1 の丁度2倍になるはずだ。

numPhilosopherは、哲学者の数を表す。これを10とか20とかに変更
してコンパイルしても、デッドロックが起きない事が確認できると思う。

尚、このプログラムはスタベーションへの対策はしていない版である。
プログラムは必ずマルチスレッドでコンパイルする事。以上。
367デフォルトの名無しさん:2006/01/21(土) 01:59:01
ありがとうございました!
頑張って残り終わらせます。
368デフォルトの名無しさん:2006/01/21(土) 02:00:33
訂正。
×だから、csStat[]で 1 になっている数は pStat の 1 の丁度2倍になるはずだ。
○だから、csStat[]で 1 になっている数は pStat の 1 の丁度2倍になるはずだが、
 他のスレッドでまだ1本しか箸を取っていないタイミングもあるので、少なくなる
 事がある。
369デフォルトの名無しさん:2006/01/21(土) 02:02:33
んー・・・まあ・・・スレッドやらマルチプロセスやらforkで組むのが正解なんだろぉなぁ・・・
ほえほえなアルコール漬けの脳みそで、Cでシングルスレッドなプログラムを構築していた漏れ。
哲学者の状態は関数ポインタだった。
370デフォルトの名無しさん:2006/01/21(土) 02:07:30
自前でラウンドロビンをシミュレートしてもいいけど、mutexなんかの
実現が困難だと思う。まあいろいろ方法はあるが。
371 ◆wa2f.aihh2 :2006/01/21(土) 02:14:55
[1]授業単元:プログラミング
[2]問題文:@50〜60の整数の乱数を5個生成し配列Sに格納した後それらの和を求める
A入力したアルファベットを大文字→小文字、小文字→大文字に変換して表示する
[3]環境
 [3.1]OS:Windows
 [3.2]コンパイラ名とバージョン:Visual C++ .NET 2003 コマンドプロンプト
 [3.3]言語:C
[4]期限:月曜
さっき解いてもらったばかりなんですが、まだあったんでお願いします
度々すいません
372デフォルトの名無しさん:2006/01/21(土) 02:17:17
(1)50〜60というのは、50以上60以下のことか?
(2)入力の仕方、出力の仕方を提示せよ。
373 ◆wa2f.aihh2 :2006/01/21(土) 02:19:36
>>372
@その通りです
AskuAA→SKUaa
こんな感じです
374デフォルトの名無しさん:2006/01/21(土) 02:23:16
(1)了解
(2)そーじゃなくって、文字列を入力させるやりかたを教わらなかったか?
375デフォルトの名無しさん:2006/01/21(土) 02:25:58
376 ◆wa2f.aihh2 :2006/01/21(土) 02:30:05
>>374
>>375
キーボードからです
377 ◆wa2f.aihh2 :2006/01/21(土) 02:32:18
>>374
gets
puts
とかのことですかね?
378さっきの人:2006/01/21(土) 02:36:59
>>377
(1)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
    int S[5], i, sum = 0;
    srand((unsigned int)time(NULL));
    for (i = 0; i < 5; i++) S[i] = 50 + (int)(11 * rand() / (RAND_MAX + 1.0));
    for (i = 0; i < 5; i++) sum += S[i];
    for (i = 0; i < 5; i++) printf("%d\n", S[i]);
    printf("sum:%d\n", sum);
    return 0;
}
(2)
#include <stdio.h>
#include <ctype.h>
int main(void) {
    int c;
    while ((c = getchar()) != EOF && c != '\n')
        if (islower(c))
            putchar(toupper(c));
        else
            putchar(tolower(c));
    return 0;
}
379 ◆wa2f.aihh2 :2006/01/21(土) 02:42:05
>>378
多謝
380デフォルトの名無しさん:2006/01/21(土) 03:02:08
前スレで貼ったけどもう1回

[1] 授業単元:プログラミングII演習
[2] 問題文(含コード&リンク):
自分の好きな野球チームの選手名、背番号、ポインタの入る構造体を
9つ作り打順通りのリニアリストを作れ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: 2006/1/24/
[5] その他の制限: 名前とか適当でいいんでお願いします
381デフォルトの名無しさん:2006/01/21(土) 03:42:06
好きな野球チームがない漏れはなじょすればよかと?
382デフォルトの名無しさん:2006/01/21(土) 04:06:17
>>381
NULLでも入れとけ。
383デフォルトの名無しさん:2006/01/21(土) 04:14:38
>>380
main(){
struct tagBaseballPlayer{
char name[256];
char no[4];
struct tagBaseballPlayer* next;
} team[] = {
{ "泉孝介", "8", 0 },{ "栄口勇人", "4", 0 },{ "巣山尚治", "6", 0 },
{ "田島悠一郎", "5", 0 },{ "花井梓", "9", 0 },{ "沖一利", "3", 0 },
{ "水谷文貴", "7", 0 },{ "三橋廉", "1", 0 },{ "安部隆也", "2", 0 }
};
int i;
for(i=0;i<8;++i) team[i].next = &team[i+1];
}

ポイントは「背番号」をintにしてしまうと"00"が表現できないという指摘がはいるとこか?
384デフォルトの名無しさん:2006/01/21(土) 04:15:46
背番号00なんて0と等価じゃん
385デフォルトの名無しさん:2006/01/21(土) 04:16:26
1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 線形リストに格納したデータをソートする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1/23まで
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1517.txt
線形リスト自体は本で調べて、なんとかできたのですが
ソート(バブルソート)の部分がうまくできません。
よろしくお願いします。
386デフォルトの名無しさん:2006/01/21(土) 04:20:12
おいおいバブルソートぐらい少しは調べてやってくれ
何でもいいから間違ったソースぐらいうpってくれ
387デフォルトの名無しさん:2006/01/21(土) 04:30:36
>>385
4 3 2 1 5
3 4 2 1 5
3 2 4 1 5
3 2 1 4 5
3 2 1 4 5
2 3 1 4 5
2 1 3 4 5
2 1 3 4 5
2 1 3 4 5
1 2 3 4 5
388デフォルトの名無しさん:2006/01/21(土) 04:32:59
>>387,386
バブルソート自体は分かるんですけど、
線形リストでやろうとするとどのようにすればいいのか
よく分かりません。
389デフォルトの名無しさん:2006/01/21(土) 04:41:21
48行目の
Node *ptr = list->head;
としてる意味がわからないんだけど、これ何してるの
390デフォルトの名無しさん:2006/01/21(土) 04:44:59
>>389
先頭ノードをポインタptrに格納しています。
391デフォルトの名無しさん:2006/01/21(土) 04:54:06
>>383
ありがとうございます
00は使わないです
392デフォルトの名無しさん:2006/01/21(土) 05:14:19
>>389
とりあえず考えた
バブルソートはどうしても自分の一個前の値のポインタが必要だから
Nodeのポインタの配列を必要な数だけ(別途存在するノードの関数を作成する)確保して(lplpNodeとする)
lplpNodeに順々に存在するNodeへのポインタを格納して

それを参照しながら、必要とあらばアドレスを入れ替えてバブルソートするってのはどう?
ただ問題はlplpNode配列の個数の限界がsizef(int)個になるんだけどね
393デフォルトの名無しさん:2006/01/21(土) 05:15:26
言葉足らずだった
(別途存在するノードの関数を作成する) → 別途存在するノードの個数を計算する関数
394デフォルトの名無しさん:2006/01/21(土) 07:50:27
「前の値のポインタ」というのは視点によるんじゃないでしょうか。
395デフォルトの名無しさん:2006/01/21(土) 11:31:51
>>385 線形リストに格納したデータをソートする。
バブルソートでやれって指定なのか?
396デフォルトの名無しさん:2006/01/21(土) 13:41:01
>>385
int CompareData(void *lhs, void *rhs){return ((Data*)lhs)->num - ((Data*)rhs)->num;}
void sort(List *list, int(*pfnCompare)(void *lhs, void *rhs)){
  Node *p, *prev;
  int changed=1;
  if(!list->head||!list->head->next) return;
  while(changed){
    changed=0;
    if(pfnCompare(&(list->head->data), &(list->head->next->data))>0){
      Node *temp1 = list->head->next, *temp2 = list->head->next->next;
      list->head->next->next = list->head; list->head->next = temp2; list->head = temp1;
      changed=1;
    }
    prev=list->head;
    for(p=list->head->next; prev->next->next; p=prev->next){
      if(pfnCompare(&(p->data), &(p->next->data))>0){
        Node *temp = p->next->next;
        prev->next = p->next; p->next->next = p; p->next = temp;
        changed=1;
      }
      prev=prev->next;
    }
    list->crnt=p;
  }
}

呼び出しは: sort(&list, CompareData);
もっと簡単になりそうな気もする。
397デフォルトの名無しさん:2006/01/21(土) 19:35:00
RPCのプログラム番号nsrmmdは390104だけど、nsrmmdbdも同じでしたっけ?
398デフォルトの名無しさん:2006/01/21(土) 22:23:06
[1] 授業単元:シミュレーション
[2] 問題文(含コード&リンク):

2つの窓口をもった航空機check-inカウンタがあるとする
客の到着時間timeとサービス時間durが与えられた時、客の平均待ち時間を求めることを考える。
例えば、客A,B,C,D,E,F,Gが以下のような時間単位でカウンタに到着し、サービスを受けた場合の平均待ち時間を計算してみなさい。
    time dur
A 1 3
B 2 3
C 3 4
D 4 2
E 5 5
F 6 2
G 7 3

2つの待ち行列Q1、Q2とする客は待ち行列の短い方でサービスを受ける。また、待ち行列の長さが同じなら、Q1でサービスを受けるとする

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (VC 6.0またはbcc32)
 [3.3] 言語: (C/C++/どちらでも可)
[4] 期限: ([2006年01月23日まで])
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1518.cpp
このサンプルの欠けている関数を埋めていくと完成するらしい。
でも、上のコードが読みづらい場合は0から好きなように作ってもよいそうです。

二つQueueがあって、待ちが少ない方に新しくきた客がpushされていくシミュレーションで、
待ち始めてからサービス終了してpopするまでの待ち時間の平均値を出せという問題のようです。
割と難しいのではないかと思いますが、どうかよろしくお願いします。
399デフォルトの名無しさん:2006/01/21(土) 22:33:48
[1] 授業単元:C++言語
[2] 問題文(含コード&リンク):
同じ長さの文字列2個(s1,s2)を比較して s1>=s2なら1 s1<s2なら0 を返す関数を作成せよ。
また、文字列の大小は辞書順。例えば a>b a=a ab>ac となる。    
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC++ 6.0
 [3.3] 言語: C++
[4] 期限: 2006年1月24日まで
[5] その他の制限: ポインタを使うこと。また、文字列に含まれる文字は小文字のみ。
よろしくお願いします。
400デフォルトの名無しさん:2006/01/21(土) 22:55:45
>>399
#include <string>
int compare(const std::string& lhs, const std::string& rhs){
  return std::lexicographical_compare(rhs.begin(), rhs.end(), lhs.begin(), lhs.end()) ? 0 : 1;
}

どこにポインタ使うんだ? そんな「C++言語」って授業は受ける価値なし。
っていうかs1<s2がtrueだろ。常識的に考えて。
401デフォルトの名無しさん:2006/01/21(土) 22:58:40
>>399はもしやstring.hのstrcmpに変わる関数を作れってことなのだろうか。
全然C++じゃないが。
402デフォルトの名無しさん:2006/01/21(土) 23:03:29
>>398
ソースがどう見てもCなんだが、本当にC++でもいいのか?
403デフォルトの名無しさん:2006/01/21(土) 23:05:14
>>400
悪意があって言う訳ではないので誤解しないで欲しい。
lexicographical_compare()は#include <algorithm>が必要。
404デフォルトの名無しさん:2006/01/21(土) 23:14:36
>>399
出題者(センセ)のセンスを疑う問題だな
405デフォルトの名無しさん:2006/01/21(土) 23:23:25
>>404
センスを疑うレスだな
406デフォルトの名無しさん:2006/01/21(土) 23:48:47
>>405
えー
407デフォルトの名無しさん:2006/01/21(土) 23:50:58
>>403
VCだと通っちまうので忘れてた。thnx.
408デフォルトの名無しさん:2006/01/22(日) 00:06:59
>>398
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1519.txt
嫌がらせのようにC++で。
まぁシミュレーションという授業なら、自前でqueueなんか組まなくてもいいでしょう。
409デフォルトの名無しさん:2006/01/22(日) 00:11:55
408ですが、Customerのデフォルトコンストラクタは消してください。
410デフォルトの名無しさん:2006/01/22(日) 00:31:42
さらに訂正。
列への追加は、サービス終了判定のあとが正しいですね。
timeループの中を、counter_a/bの終了判定、列への追加while、開始時刻設定の順に訂正します。
411名無し:2006/01/22(日) 01:04:38
>>233の期限が近いので、
どうかよろしくお願いします。
412デフォルトの名無しさん:2006/01/22(日) 01:09:26
説明のどこが説明になっているのかがわからん
413デフォルトの名無しさん:2006/01/22(日) 01:40:29
こんばんわ
ポインタについて質問させてください

int i;
void*p;
uint32*ui32p;
p = malloc(1024);
ui32p = (uint32* )p;
for (i=0;i<5;i++)
      ui32p[i] = i*i;

↑のソースで一番下の行がどういった動作をしているのかがわかりません
uint32型のポインタに[ ]をつけるというのはどういうことなのでしょうか?
文字列のポインタに[ ]をつけるのはよく見かけるのですが・・・
414デフォルトの名無しさん:2006/01/22(日) 01:41:11
>>411
こんなのでいかがか
int find_max(int *a, int m, int n) {
    int b, c;
    switch (n - m) {
        case 1:
            return a[m] < a[n] ? a[n] : a[m];
        case 0:
            return a[m];
        default:
            return (b = find_max(a, m, (m + n) / 2)) < (c = find_max(a, (m + n) / 2 + 1, n)) ? c : b;
    }
}
int find_min(int *a, int m, int n) {
    int b, c;
    switch (n - m) {
        case 1:
            return a[m] < a[n] ? a[m] : a[n];
        case 0:
            return a[m];
        default:
            return (b = find_min(a, m, (m + n) / 2)) < (c = find_min(a, (m + n) / 2 + 1, n)) ? b : c;
    }
}
#include <stdio.h>
int main(void) {
    int i, a[32];
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) scanf("%d", a + i);
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) printf("%d\n", a[i]);
    printf("\nMax:%d\nMin:%d\n", find_max(a, 0, sizeof(a) / sizeof(a[0]) - 1), find_min(a, 0, sizeof(a) / sizeof(a[0]) - 1));
    return 0;
}
415デフォルトの名無しさん:2006/01/22(日) 01:42:14
>>413
何のポインタだろうが、a[i]は*(a + i)と同じ。
416デフォルトの名無しさん:2006/01/22(日) 01:46:49
>>413
ポインタに[]をつけるのは配列と同じとでも考えてればよか
char *p="ABCDEF";
*pはAだしp[0]もAだ
417413:2006/01/22(日) 01:52:11
>>415-416
数値型に対して*(a + i)のようにするというのがどういうことなのかわかりません
文字列ならば*(a + i)でi個先の文字を参照したりできますが数値型だと何を参照するのでしょうか?
418デフォルトの名無しさん:2006/01/22(日) 01:53:48
もちろん数値ですが何か?
419デフォルトの名無しさん:2006/01/22(日) 01:56:58
1] 授業単元:情報処理T
[2] 問題文(含コード&リンク):
以下の関数を完成せよ。
int hoge(x,y)
int x,*y;
{
/*
関数の機能:
 「変数xの値」と「ポインタyが示す変数値」をかけたものを「ポインタyが示す変数値」
 に代入する。戻り値は「変数xの値」と「ポインタyが示す変数値」を足したものとする。
*/
}

3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月23日でお願いします。
[5] その他の制限:特にないです。
420デフォルトの名無しさん:2006/01/22(日) 01:58:54
つまんねぇ
421デフォルトの名無しさん:2006/01/22(日) 02:01:08
この時期にこの程度の問題ができないなら素直に単位落としとけ
422デフォルトの名無しさん:2006/01/22(日) 02:01:40
>>419

*&*y = *&*&*&x*&**y;

return *&*&*&x+&**y;
423413:2006/01/22(日) 02:06:16
>>418
ということは413のコードだと1024バイトの領域を確保してるのでuint32型の数値が256格納できる
したがって、ui32p[0]〜ui32p[255]までは値を格納できると考えてよいのでしょうか?
424デフォルトの名無しさん:2006/01/22(日) 02:06:34
>>422
ありがとうございます。
425デフォルトの名無しさん:2006/01/22(日) 02:08:15
>>423
そういうこと

>>419
その引数の宣言方法は古い。その先生に「貴方の頭は化石ですか?」と
言ってやれ。
int hoge(int x, int *y) {
    *y *= x;
    return x + *y;
}
426デフォルトの名無しさん:2006/01/22(日) 02:08:24
>>416
同じと考えるのは微妙にマズイ
427デフォルトの名無しさん:2006/01/22(日) 02:09:23
>>424
工エエェェ(´д`)ェェエエ工工
428デフォルトの名無しさん:2006/01/22(日) 02:10:29
>>426
ま、そのうち分かるんだろうけど、面倒なことにはなるな。
しかし、そこのとこの教育方法については毎回宗教戦争じみたことに
なるから、やめとこ。
429デフォルトの名無しさん:2006/01/22(日) 02:12:37
>>426
マズイがマズはこれでいいと思う
本格的に困ったらまた相談に来るなり
自分で調べるなりするでしょ
大学の授業とかなら同じと考えてもまぁいいと思ってそう書いちゃった
430413:2006/01/22(日) 02:13:26
>>425
ありがとうございました
ようやく寝ることができます
431デフォルトの名無しさん:2006/01/22(日) 02:13:26
ゆとり教育だ
432デフォルトの名無しさん:2006/01/22(日) 02:14:40
ゆとり教育は大学関係ねぇw
433デフォルトの名無しさん:2006/01/22(日) 02:24:48
>>431-432
今日試験を受けた人間からがゆとり世代でしょ?
434デフォルトの名無しさん:2006/01/22(日) 03:22:50
>>425
こうじゃないのか?

int hoge(int x, int *y) {
int tmp = *y;
*y = x * tmp;
return x + tmp;
}
435デフォルトの名無しさん:2006/01/22(日) 03:54:24
>>434
それと>425のどこが違うのかね。
436デフォルトの名無しさん:2006/01/22(日) 04:14:46
>>435
見た目と手間と使用メモリ
437デフォルトの名無しさん:2006/01/22(日) 04:28:18
int ret, x=2, y=3; ret = hoge(x,&y); とかやると
>>425の場合はy = 6, ret = 8
>>434の場合はy = 6, ret = 5

てことじゃねーの?
438デフォルトの名無しさん:2006/01/22(日) 09:41:00
[1] プログラミング
[2] テキストファイルを読み込み、単語検索のアルゴリズムを作成する。
テキストファイルの中には数字や記号はなく、単語と単語の間はスペースが存在します。
[3]
[3.1] OS:Linux
[3.2]コンパイラ名:gcc
[3.3]言語:C
[4]2006/1/30まで

手こずってます。よろしくお願いします。


439デフォルトの名無しさん:2006/01/22(日) 10:04:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードからEnqueue,Dequeue,Endの指示を読み込み、Enqueueであればscanfで整数データを読み込み、
データをキューへ追加、Dequeueであればキューからデータを削除するプログラムを作ること。
キューの処理はEndの指示を読み込まれた時点で終了する。各指示の実行後のキューを画面表示するようにすること。
[実行例]
1-20>a
Enqueue[1],Dequeue[2]End[0]:1
Data>4
List:[ 4]
Enqueue[1],Dequeue[2]End[0]:1
Data>3
List:[ 4, 3]
Enqueue[1],Dequeue[2]End[0]:2
List:[ 3]
Enqueue[1],Dequeue[2]End[0]:1
Data>5
List:[ 3, 5]
Enqueue[1],Dequeue[2]End[0]:2
List:[ 5]
Enqueue[1],Dequeue[2]End[0]:2
List:[]
Enqueue[1],Dequeue[2]End[0]:0
List:[]
1-20>
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月23日まで
[5] その他の制限: 学び始めて間もなく理解していきたいので、多少コメントを含めて頂けると助かります。
宜しくお願いしますm(_ _)m
440デフォルトの名無しさん:2006/01/22(日) 11:10:26
>>439
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1520.txt
このプログラムはキューに入ってるデータは表示されてないから、あとは自分で考えてくれ。
441デフォルトの名無しさん:2006/01/22(日) 11:31:46
>>438
int SWProc(void){ printf("発見\n"); return 0; }
int SerchWord(char *filename,char *key,int(*lpSWProc)(void) = SWProc)
{
FILE *in = fopen(filename,"r");
if(!in) return 0;
char *lpBuf = (char*)calloc(1024,sizeof(char));
if(!lpBuf){ fclose(in); return 9; }
while(fscanf(in,"%s",lpBuf)!=EOF)
if(!strcmp(lpBuf,key)) lpSWProc();
free(lpBuf); fclose(in); return 1;
}
SerchWord関数
char *filename 対象ファイルの名称
char *key 検索文字
int(*lpSWProc)(void) = SWProc コールバック関数もどき(判らなければ指定しなくてOK)

filenameを"r"モードでオープンして全単語(EOFまで)をkeyと照会
もしkeyとその単語が一致した場合SWProc関数もしくは第3引数で指定された関数が処理される。

使い方 SerchWord("nurupo.txt","こんにちは");
戻り値 0ならば関数失敗、0以外なら成功
#include <stdio.h> #include <stdlib.h> #include <string.h>
追伸:C++の機能つかっちまいました
442デフォルトの名無しさん:2006/01/22(日) 12:22:25
1] 授業単元:プログラム演習2
[2] 問題文(含コード&リンク): http://making-gold-princessmaki.hp.infoseek.co.jp/last.htm
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: V.C6.0
 [3.3] 言語: C++
[4] 期限: 今日中

57代目の852さん再アップお願いします。助けてください。
443デフォルトの名無しさん:2006/01/22(日) 14:09:37
【質問テンプレ】
[1] 情報処理
[2] ニュートン法orロンバーグ積分を用いて数値計算を行う(無理数など、出来れば自然対数の底)
[3] ビジュアルc
 [3.1] OS: Windows
 [3.2] ビジュアルc
 [3.3] c++
[4] 今日中
[5] その他の制限:for文if文中心でお願いします。
444デフォルトの名無しさん:2006/01/22(日) 15:00:07
[1] 授業単元: 演算と型
[2] 問題文
整数(AとB)をスキャンして
Aの値はBの〜%か求める。
[3] C Pad for Borland C++Compiler
 [3.1] OS: Windows XP Pro
 [3.2] BCC55
 [3.3] C
[4] 今日中
[5] まだまだ始めの方なんですけど
445デフォルトの名無しさん:2006/01/22(日) 15:16:15
>>441
どうでもいいけどSearchな。
446デフォルトの名無しさん:2006/01/22(日) 15:17:48
>>444
#include<stdio.h>

int main()
{
  int a,b;
  scanf("%d,%d",&a,&b);
  printf("%dは%dの%d%です\n",a,b,a*100/b);
  return 0;
}
447デフォルトの名無しさん:2006/01/22(日) 15:17:48
>>444
#include<stdio.h>
int main(void){
long a,b;
double par;
printf("Aを入力:");scanf("%ld",&a);
printf("Bを入力:");scanf("%ld",&b);
par = (double)a*100/b;
printf("AはBの%f%\n",par);
return 0;
}
448デフォルトの名無しさん:2006/01/22(日) 15:19:45
結婚式はいつですか?
449デフォルトの名無しさん:2006/01/22(日) 15:27:47
>>446>>447
ダメ。
printf()の書式中では'%'は"%%"としないといけない。ついでに言えば、percentなんだからparはないだろ。
450デフォルトの名無しさん:2006/01/22(日) 15:28:46
>>446
>>447
有り難うございます〜。

447の中には習ってないのがあったので
446を使わせてもらいます。
二人とも有り難うございました〜^^
451デフォルトの名無しさん:2006/01/22(日) 15:30:55
>>449
あ・・\\だけじゃなかったか
スペルは英語できないから勘弁
452デフォルトの名無しさん:2006/01/22(日) 15:37:06
>>445
ハズカシス
453デフォルトの名無しさん:2006/01/22(日) 15:39:05
>>451
'\\'はいつでもそう書かなければならないけど、
'%'はprintf()系scanf()系の書式文字列内のみだから念のため。
454444:2006/01/22(日) 15:44:06
望洋さんのC入門編って演習の解答が付いてないから困るね
455デフォルトの名無しさん:2006/01/22(日) 15:48:01
>>453
お、本当だputsだと%2個出る
456デフォルトの名無しさん:2006/01/22(日) 15:55:58
>>399
俺通ってるガッコの先生の課題だな俺は
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1522.txt
で出したんだが俺バカチンなのでこのスレの諸兄の方々の熱い煽りとツッコミをお待ちしています
457デフォルトの名無しさん:2006/01/22(日) 15:59:57
完璧(*^ー゚)b
458デフォルトの名無しさん:2006/01/22(日) 16:02:02
>>456
それを直すんなら
訂正前>while(s1[i]==s2[i]){
訂正後>while(s1[i] != '\0' && s1[i]==s2[i]){
だな。
459デフォルトの名無しさん:2006/01/22(日) 16:05:42
>>458
s2 もチェックな

あと関数名がキモい
460デフォルトの名無しさん:2006/01/22(日) 16:10:05
>>459
不要。

あと関数名がキモいのは同意。
461デフォルトの名無しさん:2006/01/22(日) 16:14:58
そお?関数名キモイ?
462デフォルトの名無しさん:2006/01/22(日) 16:19:02
ああ、関数名がパーフェクトにキモイな
463デフォルトの名無しさん:2006/01/22(日) 16:28:02
>>460 s2 いらんなスマソ
464デフォルトの名無しさん:2006/01/22(日) 16:28:02
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
球の半径r(倍精度浮動小数点型の変数)の値を関数scanfで入力して、
その面積S1と表面積S2(S1,S2は倍精度浮動小数点型変数)を計算し、
表示(出力)するという作業を繰り返すプログラムを作成せよ。
ただし、半径rとして数値0が入力されたときには、その処理を終了することとする。
また、面積はS1=π(r*r)、表面積はS2=4π(r*r)で計算されるものとする。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:StudyC
 [3.3] 言語:C
[4] できれば火曜までに
[5] 宿題とかじゃなく、テスト勉強のですがお願いします。
465デフォルトの名無しさん:2006/01/22(日) 16:37:58
面積S1じゃなくて体積V1じゃね?
466デフォルトの名無しさん:2006/01/22(日) 16:38:33
ああごめんS1は円ね
467デフォルトの名無しさん:2006/01/22(日) 16:42:00
>>464
#include<stdio.h>
#define pi 3.14159
void kyu(double r){
printf("S1 = %f\n",pi*r*r);
printf("S2 = %f\n",4*pi*r*r);
}
int main(void){
double r;
while(1){
scanf("%lf",&r);
if(r==0.0)break;
kyu(r);
}
return 0;
}
468464:2006/01/22(日) 16:46:53
>>467
速攻の返答、多謝多謝。
有難うございました。
469デフォルトの名無しさん:2006/01/22(日) 16:49:34
470464:2006/01/22(日) 16:59:26
>>469
こちらも丁寧に有難うございます。

471デフォルトの名無しさん:2006/01/22(日) 17:19:49
[1] 授業単元:C言語プログラミング演習1
[2] 問題文:
要素数20、char型の配列mojiを用意し、入力する。ポインタ変数を用いて
文字数を求めるプログラムを作成しなさい。
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数

実行結果
文字列入力==>ABCD
文字数:4

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 明日の午前まで。
[5]標準関数strlenは使わないこと。
472デフォルトの名無しさん:2006/01/22(日) 17:20:57
[1] 授業単元:C言語プログラミング演習2
[2] 問題文:
char型の配列mojiを用意し、初期化する。ポインタ変数を用いて大文字、
小文字、数字の文字数を求めるプログラムを作成しなさい。
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数

実行結果
英大文字:3
英小文字:2
数字:3

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 明日の午前まで。

この2つです。お願いします。
473デフォルトの名無しさん:2006/01/22(日) 17:30:43
>>471
int strlen(char *lpStr)
{
int count=0;

while(lpStr[count]) ++count;
return count;
}
こんなんでいいんじゃない?

>>472
2バイト文字は含むの?
474デフォルトの名無しさん:2006/01/22(日) 17:31:16
>>471
#include<stdio.h>

int main(void)
{
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数

printf("Input string\n");
gets(moji);
for(cnt=0;*(mp+cnt)!='\0';cnt++)
{}

printf("count:%d\n",cnt);

return 0;
}
475デフォルトの名無しさん:2006/01/22(日) 17:35:14
>>473
2バイト文字は含まないです。
476デフォルトの名無しさん:2006/01/22(日) 17:38:24
>>472
#include<stdio.h>
int main(void)
{char moji[]="AB120aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数
int cnt;
alphl=0;
alphs=0;
num=0;
for(cnt=0;*(mp+cnt)!='\0';cnt++){
if(*(mp+cnt)>='A'&&*(mp+cnt)<='Z'){
alphl++;
}
else if(*(mp+cnt)>='a'&&*(mp+cnt)<='z'){
alphs++;
}
else if(*(mp+cnt)>='0'&&*(mp+cnt)<='9'){
num++;
}
}
printf("大文字:%d\n",alphl); printf("小文字:%d\n",alphs); printf("数字:%d\n",num);
return 0;
}
477デフォルトの名無しさん:2006/01/22(日) 17:41:06
>>472
#include<stdio.h>
int main(void){
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl=0; //大文字の数
int alphs=0; //小文字の数
int num=0; //数字の数
while(*mp!='\0'){
if(*mp>='A'&&*mp<='Z')alphl++;
else if(*mp>='a'&&*mp<='z')alphs++;
else if(*mp>='0'&&*mp<='9')num++;
mp++;
}
printf("英大文字:%d\n",alphl);
printf("英小文字:%d\n",alphs);
printf("数字:%d\n",num);
return 0;
}
478デフォルトの名無しさん:2006/01/22(日) 17:47:59
ありがとうございました。
479デフォルトの名無しさん:2006/01/22(日) 17:56:16
islowerとか使った方が格好良くないか?
480デフォルトの名無しさん:2006/01/22(日) 17:59:11
宿題なんだから余計なものは使わない方がいいんじゃないか
提出する本人が知っていて使う分には問題ないと思うが
481デフォルトの名無しさん:2006/01/22(日) 18:00:16
でもislowerとか使うのも一理あると思いました
482デフォルトの名無しさん:2006/01/22(日) 18:00:22
is系ちょっと特殊だからな
出てこない授業も少なくない希ガス
483デフォルトの名無しさん:2006/01/22(日) 18:06:22
皆がかっこよすぎて、たびたび惚れる。いつかおまいらを越す
484デフォルトの名無しさん:2006/01/22(日) 18:07:54
>>483
俺も思った 頑張ろう
485デフォルトの名無しさん:2006/01/22(日) 18:11:25
たかが宿題を解いたくらいで惚れるだの越すだの言わないでくれ。
486デフォルトの名無しさん:2006/01/22(日) 18:12:56
変な会話成立させないでくれ
487デフォルトの名無しさん:2006/01/22(日) 18:15:17
俺のぶっといマグナムでお前のケツシェイクしてやろうか
488デフォルトの名無しさん:2006/01/22(日) 18:18:11
直径1センチしかないくせによく言うわ
489デフォルトの名無しさん:2006/01/22(日) 18:18:45
>>485
ガンガル。
>>485
いや素でかっこいい。知識ある者への敬う気持ちが生まれた。
モチベーションの確保にも役に立つし。

てかマジかっけ〜よ・・・。>>487くれ!!DNAを。
490デフォルトの名無しさん:2006/01/22(日) 18:20:35
マグナムじゃなくデリンジャーだろ( ´,_ゝ`)
491デフォルトの名無しさん:2006/01/22(日) 18:23:10
それ早漏ってこと?
492デフォルトの名無しさん:2006/01/22(日) 18:26:46
ムケちんぽなのに早漏の漏れはどうすれば?
俺20秒あれば昇天できんだけど・・・OTL
493デフォルトの名無しさん:2006/01/22(日) 18:27:26
20秒とか自慰でも無理あるんだが
494デフォルトの名無しさん:2006/01/22(日) 18:33:03
質問なんですけど、というより宿題で
「C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ」
というのが出題されたのですが、どうしたらいいのでしょうか?
495デフォルトの名無しさん:2006/01/22(日) 18:34:09
>>494
ちんぽ剥いてしこしこ汁
496デフォルトの名無しさん:2006/01/22(日) 18:34:17
>>494
api
497デフォルトの名無しさん:2006/01/22(日) 18:39:15
>>494
RegCreateKeyEx
とか
RegSetValueEx
とか
498デフォルトの名無しさん:2006/01/22(日) 19:23:41
>>497
できれば具体例を教えていただけないでしょうか?
499デフォルトの名無しさん:2006/01/22(日) 19:25:26
宿題なら質問テンプレを使用の事。
500デフォルトの名無しさん:2006/01/22(日) 19:37:11
>>494です。

[1] 授業単元: プログラミングV
[2] 問題文(含コード&リンク): C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: ([2006年2月04日午後まで]
[5] その他の制限: 特になし
501デフォルトの名無しさん:2006/01/22(日) 19:39:17
[1] 授業単元: 基礎情報処理
[2] 問題文

次のようなLISPプログラムを書け

 アトムとして整数のみを含むs表現wを入力とし、w中に現れる0以外の整数を全て掛け合わせた結果を計算する関数MULTALL(w)を帰納的に定義せよ
 帰納的でないプログラムは回答と見なさない

  例 w=((3.((1.0).−2)).(2.0))のとき、MULTALL(w)=−12。

 LISPの文法の詳細については問わないが、なるべく読みやすく書くこと。
 なお、整数の乗算には、以下のLISPの組み込み関数TIMESを使うこと。

   TIMES(m、n) =m×n

[3] 環境
 [3.1] OS: Windows
 [3.2] ごめんなさい、わかりません
 [3.3] 同上
[4] 期限:今月中

超初心者なので、教科書とか読んでもサッパリです、出来ればどなたかどうかお願いします。
502デフォルトの名無しさん:2006/01/22(日) 19:45:23
LIPSとC/C++言語は別物だ
503デフォルトの名無しさん:2006/01/22(日) 19:50:23
そうなんですか、ごめんなさい
正直コンピューター系とかは皆同じに見えてしまう…

スレ違いになるかもしれないど、その違いだけでも教えてもらえますか?
504デフォルトの名無しさん:2006/01/22(日) 20:07:23
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):自由課題、ただし条件判断と繰り返し命令、配列は
かならず用いること。関数、ポインターなどは必要に応じて用いればよい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限: 1月23日12:00まで
[5] その他の制限:なし
C言語の授業が分からなかったため最終課題ながら
全然思いつきませんでした、よろしくお願いします。
505デフォルトの名無しさん:2006/01/22(日) 20:09:54
>>504
オセロ
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;int k(){if(m[p]==0)for(i=m;*i;i
++){for(v=p+*i;m[v]==9-t;v+=*i){}if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v+=*
i;while(m[v]-t);}return 0;}int main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a
=d=0){for(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9
:s?s=0,puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}}
506デフォルトの名無しさん:2006/01/22(日) 20:16:37
それ7行のヤツじゃないか?
507デフォルトの名無しさん:2006/01/22(日) 20:42:08
>>504
#include <stdio.h>
#include <string.h>

int main()
{
char s[256];
int len;
int i;
char tmp;
printf(" input string: ");
scanf("%s",s);
if ((strlen(s))==1){ return 0; }
len = strlen(s);
for (i = 0; i < len/2; ++i) {
tmp = s[i];
s[i] = s[len-1-i];
s[len-1-i] = tmp;
}
printf("output string: %s\n", s);
return 0;
}
これは前の文字入れ替え課題の誰かが作った(どこにあるかわからんw)ソースに
ifを付け足した奴でつ。
たぶん大丈夫
508デフォルトの名無しさん:2006/01/22(日) 20:50:45
[1] 授業単元: ソフトウェア開発
[2] 問題文(含コード&リンク): 1+2*3-4を標準入力から入力し計算順に
               ((1+(2*3))-4)とカッコをつけて出力
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限: 二分木で表現をお願いします。あと演算子の優先度と
          左結合でお願いします。

ずっと出来なくて悩んでいます。どなたか教えてください。

509デフォルトの名無しさん:2006/01/22(日) 20:52:07
なんでみんなLinux使ってんの〜?
510デフォルトの名無しさん:2006/01/22(日) 20:52:48
タダだからじゃね
511デフォルトの名無しさん:2006/01/22(日) 20:55:42
>>504
じゃあ俺も書いたけど結局貼らなかったやつ貼っとく
#include <stdio.h>
#include <string.h>
void strswap(char *s,int n)
{
  int i,n1,n2;
  char temp[256];
  if(n%2==0){
    n2=n/2;
  }
  else{
    n2=n/2+1;
    temp[n/2]=s[n/2];
  }
  for(i=0;i<n/2;i++){
    temp[i]=s[n2+i];
    temp[n2+i]=s[i];
  }
  temp[n]='\0';
  strcpy(s,temp);
}
int main()
{
  char s[256];
  printf("-->");
  scanf("%s",s);
  strswap(s,strlen(s));
  printf("-->%s\n",s);
  return 0;
}
512デフォルトの名無しさん:2006/01/22(日) 20:55:57
basicで書かれたのをCに書き直してもらいたいんですが、
ここであってますかね(´・ω・`)
513デフォルトの名無しさん:2006/01/22(日) 20:57:34
微妙なところだな
514デフォルトの名無しさん:2006/01/22(日) 20:58:22
なんだ? FFTか?
515デフォルトの名無しさん:2006/01/22(日) 20:59:38
丸藤が負けた…
516515:2006/01/22(日) 21:00:36
申し訳ない。誤爆しました。
517デフォルトの名無しさん:2006/01/22(日) 21:00:59
>>503
とりあえずLispスレへ行け。
Lispは方言が多種多様で、「Lisp」だけでは何もわからんという点にも留意しろ。
授業で使うならおそらくまともに規格があるCommonLispかSchemeだろうが…
518デフォルトの名無しさん:2006/01/22(日) 21:03:29
>>512
おそらくそんなスレないだろうからやるとしたらここじゃね?
とりあえず問題書いてみれ
519512:2006/01/22(日) 21:04:20
はい、FFTです
520デフォルトの名無しさん:2006/01/22(日) 21:04:58
往年のN88-BASIC(86)でも見られるのか?
521デフォルトの名無しさん:2006/01/22(日) 21:06:41
マロックでメモリ確保がしたいのだけど
エラーの対処がよくわからなくて困ってる
使ってるフリーのコンパイラ(lsic330c)だとエラーを通してしまう上に
ウィンドウズエラーに発展するのでVC++にエラーチェックしてもらった

エラー箇所
NODE_T *new_node;
new_node=malloc(sizeof(NODE_T));
if(new_node == NULL){
fprintf(stderr,"malloc_ERR\n");
exit(1);
}

出力
1>.\tester.cpp(34) : error C2440: '=' : 'void *' から 'NODE_T *' に変換できません。
1> 'void*' から非 'void' 型への変換には明示的なキャストが必要です。
522デフォルトの名無しさん:2006/01/22(日) 21:07:35
new_node=(NODE_T *)malloc(sizeof(NODE_T));
523デフォルトの名無しさん:2006/01/22(日) 21:11:09
言語スレの話題だとは思うが。
C言語ではvoid *型から他のポインタへの変換は自由にやってよい。コンパイラもエラー報告しなくていい。
C++言語ではvoid *型から他のポインタへの変換には明示的なキャストが必要。
具体的には>>522のようにする。
524デフォルトの名無しさん:2006/01/22(日) 21:11:12
>>521
お前、CとC++を混同してるだろ?
525デフォルトの名無しさん:2006/01/22(日) 21:11:39
>>522
ありがとう、こいつが直接の原因じゃなかったみたいだ
もうちょっと悩むとしよう
526デフォルトの名無しさん:2006/01/22(日) 21:12:11
N88 BASICでFFTって大学のころやったなぁ・・・
527デフォルトの名無しさん:2006/01/22(日) 21:13:15
>>524
いや、してないつもりが親切なメッセージが出るので原因がわからないエラーを対処するのに使ってる
528デフォルトの名無しさん:2006/01/22(日) 21:16:31
まあ、全ソースUPだな。>>527 ヒマなヤツが添削してくれるかもしれん。
ただ、ここは添削はスルーされることも多いんで、スルーされても文句言うな。
529デフォルトの名無しさん:2006/01/22(日) 21:19:59
>>527
C++でエラーになってもCでは正当なこともある。
尤も、CよりC++の方が安全寄りな警告をくれる傾向にあるので、
それを参考にするのは悪くないと思う。
でも、それなら最初からC++で書けばいいんじゃね?
530512:2006/01/22(日) 21:24:40
[1] 授業単元: デジタル信号
[2] 問題文 BASICをCに書き直す
[3] 環境
 [3.1] OS:windows
 [3.2] VC6.0
 [3.3] C
[4] 期限: 無期限
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1525.txt
よろしくお願いします
531デフォルトの名無しさん:2006/01/22(日) 21:28:41
>>528
全文貼るには少々長すぎる
先生の作ったプログラムに関数を付け足す課題でね
printfで順にチェックすることにするよ

>>529
Cの課題だし、それは怒られそうな気がする
532デフォルトの名無しさん:2006/01/22(日) 21:29:20
>>521
mallocの戻り値はvoid *なので、明示的なキャストが必要。
533デフォルトの名無しさん:2006/01/22(日) 21:31:40
>>527
gcc入れるって選択肢は無かったのか?
-Wall -ansi(もしくは-std=c99)付ければちゃんとメッセージ吐いてくれるが
534デフォルトの名無しさん:2006/01/22(日) 21:32:30
>>530
漏れはBASICわからないのについつい見てしまう、
PRINT程度しかわからんw
535デフォルトの名無しさん:2006/01/22(日) 21:32:41
行番号抜けてる>>530
536504:2006/01/22(日) 21:33:51
遅れましたが皆様ありがとうございました
537530:2006/01/22(日) 21:37:57
上から10.20の順です、失礼しますた。
538デフォルトの名無しさん:2006/01/22(日) 21:38:31
>>533
あれ、gccってwinで使えるのあるの?
539デフォルトの名無しさん:2006/01/22(日) 21:39:22
なにを言ってるんだね
540デフォルトの名無しさん:2006/01/22(日) 21:41:39
つ mingw
541デフォルトの名無しさん:2006/01/22(日) 21:48:19
>>500
猫だけど参考になるかな
http://www.kumei.ne.jp/c_lang/sdk2/sdk_129.htm
542デフォルトの名無しさん:2006/01/22(日) 21:55:00
543デフォルトの名無しさん:2006/01/22(日) 21:55:31
>>538
お前はCygwinを知らないのかと小一時間ry
それにVMwarePlayerでLinuxって手もあるしな
544デフォルトの名無しさん:2006/01/22(日) 22:02:18
あ、それ。やりだした。VMwarePlayer・・・でも、ディスクイメージが4Gあるんで、ちっとやっかい。
ぼちぼちやってるんで、てきとーに。>>536
1行1行をそのまま手作業てトランスレートするんで。今日は2行やったところでおしまい。
期限があるなら、明示しといて。
545デフォルトの名無しさん:2006/01/22(日) 22:07:35
[1] 授業単元: プログラミング言語
[2] 問題文下に書きます
[3] 環境
 [3.3] 言語: C
[4] 期限:2006年1月24日まで
[5] その他の制限:特にないです
長文になりますが申し訳ありません。
よろしく御願いします。
546デフォルトの名無しさん:2006/01/22(日) 22:09:03
長文は直接ここに書くな
547デフォルトの名無しさん:2006/01/22(日) 22:29:31
>>545
失礼しました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?
No1527です。よろしく御願いします
548デフォルトの名無しさん:2006/01/22(日) 22:33:20
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):http://mmmooo.web.fc2.com/c.txt
[3] 環境
 [3.1] OS:winXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006.2.1
[5] その他の制限:特にありません。
よろしくお願いします
549デフォルトの名無しさん:2006/01/22(日) 22:39:17
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1528.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみでおねがいします。
[4] 期限: 2006年1月24日15:00まで
[5] その他の制限: 非常に難しい問題です、知恵を貸してください。おねがいします。


550デフォルトの名無しさん:2006/01/22(日) 22:50:42
>>547
スレを別に立てるな!
551デフォルトの名無しさん:2006/01/22(日) 22:52:47
>>549
難しいんじゃなくて、問題文が長いだけ。
552デフォルトの名無しさん:2006/01/22(日) 23:11:27
[1] 授業単元: プログラミング言語
[2] 問題文: ウィルスを作れ
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C or C++ (部分的にアセンブラも可(x86))
[4] 期限: 無期限
[5] その他の制限: 特にありません。
よろしくお願いします。
553デフォルトの名無しさん:2006/01/22(日) 23:12:30
>>549
トランザクションファイルを作れば簡単。
554デフォルトの名無しさん:2006/01/22(日) 23:17:26
>>552
その課題出したやつを晒せ。通報してやる
555デフォルトの名無しさん:2006/01/22(日) 23:35:01
>>530
#include <stdio.h>
#include <math.h>
void GYAKU();
int P,R,II,BIT;
main(){
  int N,IR,I,J2,K,K1,KK,L1,L;
  float DEG,ARG,A,B,C,S,tmp;
  printf("input N,R");
  scanf("%d,%d",&N,&R);
  float XR[N],XI[N];
  XR[0]=1; XR[1]=1; XR[2]=1; XR[3]=1;
  IR=1;
  J2=N;
  DEG=2*3.14159/N;
  K=0; L1=R-1;
  for(L=1; L<=R; L++){
    J2=J2/2;
    for(I=1; I<=J2; I++){
      P=K/pow(2,L1);
      GYAKU();
      ARG=DEG*BIT;
      C=cos(ARG); S=IR*sin(ARG);
      K1=K+J2;
      A=XR[K1]*C+XI[K1]*S;
      B=XI[K1]*C-XR[K1]*S;
      XR[K1]=XR[K]-A; XI[K1]=XI[K]-B;
      XR[K]=XR[K]+A; XI[K]=XI[K]+B;
      K=K+1;
    }
556デフォルトの名無しさん:2006/01/22(日) 23:35:47
    K=K+J2;
    if(K<N) continue;
    K=0; L1=L1-1;
  }
  printf("final reordering");
  for(KK=0; KK<N-1; KK++){
    P=KK;
    GYAKU();
    if(BIT<=KK) continue;
    tmp=XR[KK];XR[KK]=XR[BIT];XR[BIT]=tmp;
    tmp=XI[KK];XI[KK]=XI[BIT];XI[BIT]=tmp;
  }
  for(I=0; I<N-1; I++)
    printf("%2f.%3f",XR[I],XI[I]);
}

void GYAKU(){
  int B1,B2;
  B1=floor(P);
  BIT=0;
  for(II=1; II<R; II++){
    B2=floor(B1/2);
    BIT=BIT*2*B1-2*B2;
    B1=B2;
  }
  return ;
}
大文字を小文字に変えるとかは知らね
557デフォルトの名無しさん:2006/01/22(日) 23:50:18
>>552
「ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。」
ローカルルールくらい読め。
558530:2006/01/22(日) 23:56:40
>>555 
助かります
559デフォルトの名無しさん:2006/01/22(日) 23:57:07
>>552
printf("making wirus");
for(i=0;i<10;i++)
printf("・");
printf("\nウィルス!!");
560デフォルトの名無しさん:2006/01/23(月) 00:00:02
今時データベースシステムをCでやらせるのはなんでなのかな。
素直にSQL教えればいいのに・・・
561デフォルトの名無しさん:2006/01/23(月) 00:17:54
よろしくお願いします。
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク):ある画像を3秒後に別の画像に差し替える。
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限:1/24

562デフォルトの名無しさん:2006/01/23(月) 00:48:27
>>560
RDBが如何にして動いてるかを教えるためじゃね?
563デフォルトの名無しさん :2006/01/23(月) 00:56:07
[1] 授業単元: プログラミング言語1
[2] 問題文:

実数(double)xと整数(int)nをキーボードから入力し、xの2乗、3乗、...、
n乗を計算し、画面に表示するプログラムを以下の点を守って作成し、
正しく動作することを確認せよ。

(1) xとnはmain関数内で入力すること。nに負の数が入力された場合にはそ
の旨表示して終了すること。
(2) 画面出力はmain関数内で以下のような出力形式で行うこと
(多少異なっていても構わないが、1行で表示される内容を同じにする
こと)
[x=2.5 n=5の例]
2.500000^2=6.250000
2.500000^3=15.625000
2.500000^4=39.062500
2.500000^5=97.656250
(3) べき乗y^iを計算する関数
double power1(double y, int i)
を作成し、main関数から必要回数呼び出して使用すること(非効率なプ
ログラムになるが、今回はそうすること)
(4) C言語にはべき乗を計算するpow関数があるが、今回は使用しないこと。

[3] 環境
 [3.1] OS: Windows
 [3.2] Borland bcc
 [3.3] 言語: C
[4] 期限: 1月25日
[5] その他の制限:pow関数は使用しない。よろしくお願いします
564デフォルトの名無しさん:2006/01/23(月) 00:56:44
>>561
画像ファイル2つ用意してリネームしるw
565デフォルトの名無しさん:2006/01/23(月) 01:18:24
>>563
非効率ついでに…

#include <stdio.h>
#include <stdlib.h>

double power1(double x, int n){
return n==0 ? 1 : n==1 ? x : x*power1(x, n-1);
}

main(){
char buf[256]; double x; int n;
printf("根(実数)?"); gets(buf); x=atof(buf);
printf("冪数(正の整数または0)?"); gets(buf); n=atoi(buf);
if(n<0) printf("欲嫁!\n");
else if(n<=1) printf("%f^%d=%f\n", x, n, power1(x,n));
else{
int i;
for(i=2;i<=n;++i){
printf("%f^%d=%f\n",x,i,power1(x,i));
}
}
}
566デフォルトの名無しさん:2006/01/23(月) 01:21:33
>>560
単に…
・ファイルからの読み込み
・リスト演算
・ファイルへの書き込み
・標準出力
・標準入力
…をひとつの課題で表現しようとしただけのような都市ガス
567デフォルトの名無しさん:2006/01/23(月) 01:53:39
[1] 授業単元:情報処理演習U
[2] 問題文(含コード&リンク):
int型が16bitで表される場合、引数の4乗を返す関数quadが正しく動作する
引数はいくつまでか検討せよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月24日でお願いします。
[5] その他の制限:特にないです。
568デフォルトの名無しさん:2006/01/23(月) 02:01:36
>>567
int型が16bitと書かれてるだけで引数(及び返値)がintなのか
unsignedなのかshortなのかlongなのかetc.が示されてない
よって問題不備により回答不能

こう言っとけ
まぁsigned intと仮定してやると、最大値は2^15-1で32767
よって、こいつの4乗根を取ると13.*
であるから、引数の最大値は13
569デフォルトの名無しさん:2006/01/23(月) 02:05:31
>>568
わかりました。ありがとうございます!
570デフォルトの名無しさん:2006/01/23(月) 05:16:00
もっと単純に、unsignedを仮定すると2^16の4乗根が2^4であることは自明なので
最大値は15だと直ちに判るわけなのだが。
571デフォルトの名無しさん:2006/01/23(月) 05:29:12
>>568
おまえヒドスwww
572お願いします!!:2006/01/23(月) 07:05:09
学校で、宿題が5つでました。
1つはどうにか終わりましたが、あと1日半で
4つ終わらせなければいけません。
どうか、みなさんのお力をお貸しください!お願いします!!
言語はC++です!!
問題1:
Wallet w;
cout << "d:" << w.getDollars( );
cout << " c:" << w.getCents( ) << endl;
w.visitATMForCash( 50 );
cout << "d:" << w.getDollars( );
cout << " c:" << w.getCents( ) << endl;
if (w.canPayFor( 25, 35 )) {
// you have enough to pay for it...
w.payFor( 25, 35 );
}
cout << "d:" << w.getDollars( );
cout << " c:" << w.getCents( ) << endl;
// this time you won't have enough money
if (w.canPayFor( 25, 35 )) {
// you have enough to pay for it...
w.payFor( 25, 35 );
}
cout << "d:" << w.getDollars( );
cout << " c:" << w.getCents( ) << endl;

問題としては、自分の持っているお財布はお札とコインを収納
することが出来て、銀行へ行くと、更にお金をお財布に現金を
ふやすことができるということです。
先生がいうには、上に書いてあるのが、サンプルドライバーコードで
そのクラスをもっと、よいものにしなさい。ということなのです。
どうか、よろしくお願いしたします。
573デフォルトの名無しさん:2006/01/23(月) 07:06:50
残念起きてこのスレを見ている俺はC++が使えない!m9っ`・ω・´)
574お願いします!!:2006/01/23(月) 07:34:34
上の続きで、二個目の問題になります。お願いします。 問題は、こうです。
クラスレコードプレ−ヤーを作成。 レコードプレーヤーは、ビニール・レコードをかけることができるステレオコンポを表わします。
先生によると、サンプル・ドライバー・コードを使ってよりよい ものにするということです。

サンプルドライバー; cout << "--Test 1--" << endl;
RecordPlayer r;
r.turnOn();
r.affixPlatter( "Barry Manilow I" );
r.plopNeedle( );
r.returnNeedle( );
r.turnOff( );
cout << "--Test 2--" << endl;
RecordPlayer badr;
badr.plopNeedle( );
cout << "--Test 3--" << endl;
RecordPlayer badr1;
badr1.turnOn( );
badr1.plopNeedle( );
cout << "--Test 4--" << endl;
RecordPlayer badr2;
badr2.returnNeedle( );
cout << "--Test 5--" << endl;
RecordPlayer badr3;
badr3.turnOn( );
badr3.returnNeedle( );

575お願いします!!:2006/01/23(月) 07:35:12
問題2が一回で書き込めなかったのサンプルドライバーアウトプット;
--Test 1-- レコードプレーヤー オン...
レコードプレーヤーはバリー マニロウのアルバムを持っている I
レコードプレーヤーはバリーマニロウのアルバムをプレイする
レコードプレーヤーの曲をストップする。
レコードプレーヤー オフ...
--Test 2-- もし、電源がついていなければ、針を落とすことはできません。
--Test 3-- レコードプレーヤー オン。そのときに、アルバムがないと、針を落とすことは出来ません。
--Test 4-- 電源がオンの状態じゃないと、針を返せません。
--Test 5-- レコードプレーヤーをオンにする

レコードプレーヤー;
RecordPlayer( );
void turnOn( );
void turnOff( );
bool isPoweredOn( );
void affixPlatter( string record );
void plopNeedle( );
void returnNeedle( );
bool my_isOn;
string my_Record;
bool my_NeedleIsOnTheRecord;    よろしくお願いいたします!言語はc++です!!で、問題2の続きです!!
576デフォルトの名無しさん:2006/01/23(月) 07:39:10
テンプレぐらい守れ糞が
577ごめんなさい!:2006/01/23(月) 07:43:20
書き込みしたものですっ!!
テンプレってなんですか??ほんとにごめんなさい。
全然分からないことばっかりなのに、C++をとらなきゃいけないことに、なってしまって。。。
テンプレがなにか、教えてもらえますか??
次から、気をつけます!!すみませんでした。
578デフォルトの名無しさん:2006/01/23(月) 07:45:37
はいはい、わからないなら回答貰えないと思ってね
だから諦めな
579デフォルトの名無しさん:2006/01/23(月) 07:47:49
そんな言い方しなくても。。。
分かりました。。
580デフォルトの名無しさん:2006/01/23(月) 07:51:33
だいだいそのWaletteとか
RecordPlayerとかのクラスは独自ライブラリでしょ?

C++標準にそんなクラス定義されてるの?
581デフォルトの名無しさん:2006/01/23(月) 08:29:32
独自のライブラリだと思います!
C++に関して、本当に無知なので、標準にそういうクラスの定義が
されているかは、分かりません。。。
582デフォルトの名無しさん:2006/01/23(月) 08:35:36
中身わからんのにどうせいっちゅーんだろうねコイツは
583デフォルトの名無しさん:2006/01/23(月) 08:36:14
>>581 >>1を読め
それと、独自ライブラリなら、その説明なり定義なりが必要。
584デフォルトの名無しさん:2006/01/23(月) 08:54:10
ここで、C++の宿題を手伝ってくれる方で、英語理解できる方いますか?
アメリカで、C++を勉強していて、問題が英語なので、C++&英語の両方理解
出来る方に是非教えて欲しいです!
585デフォルトの名無しさん:2006/01/23(月) 08:55:40
みんな言語に出てくる英単語しかわからないバカばかりなんでお帰りくださいね└(゚∀゚)┘
586デフォルトの名無しさん:2006/01/23(月) 08:59:32
そうですか。ただのC++のバカの集まりでしたか。ここは。
C++以外にとりえがないんですね。かわいそうに。
きっと人間関係もうまく築けない残念な人たちなんですね。
さっさと退散します☆☆
一生C++だけで、食べていくことが出来るといいですね♪♪
587デフォルトの名無しさん:2006/01/23(月) 09:01:01
てめぇコノヤロウ
588デフォルトの名無しさん:2006/01/23(月) 10:53:57
1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
 書ききれないので次の場所に書きます
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ
 [3.3] 言語: C++
[4] 期限: 1月23日
[5] その他の制限: できれば全文書いてくださると助かります。
589デフォルトの名無しさん:2006/01/23(月) 10:55:43
>>588の問題
sumlist を拡張し, 二項演算子 + の使える全ての型 T に対して使える
template 関数 template <class T> T sumlist(list<T>&) に拡張して下さい.
#include <iostream>
#include <list>
using namespace std;
int sumlist(list<int>& l);
int main() {
list<int> lst;
for (int i = 0; i < 10; i++)
lst.push_back(i);
cout << "size =" << lst.size() << endl;
for (list<int>::iterator it = lst.begin(); it != lst.end(); ++it)
cout << *it << ' ';
cout << endl;
cout << "sum of lst = " << sumlist(lst) << endl;
for (list<int>::iterator it = lst.begin(); it != lst.end(); )
if ((*it) % 3 == 0)
it = lst.erase(it);
else
++it;
for (list<int>::iterator it = lst.begin(); it != lst.end(); ++it)
cout << *it << ' ';
cout << endl;
cout << "sum of lst = " << sumlist(lst) << endl;
return 0; }
int sumlist(list<int>& l) {
int i = 0;
for (list<int>::iterator it = l.begin(); it != l.end(); ++it)
i += *it;
return i; }
590デフォルトの名無しさん:2006/01/23(月) 10:57:37
>>588の訂正
提出期限は1月30日です。
591デフォルトの名無しさん:2006/01/23(月) 11:11:02
[2] 問題文:関数 y = x*x+5 と y=0 積分範囲 x [1,5]で切り取られる部分の面積をモンテカルロ法を用いて求めよ。
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: Visual c++ 6.0
 [3.3] 言語:C
[4] 期限: なるべく早くにお願いします

助けて下さい
592デフォルトの名無しさん:2006/01/23(月) 12:00:27
[1] 授業単元: ユーザ定義関数
[2] 問題文(含コード&リンク):

次の関数は「戻り値」あり「引数」なしの関数です。
下記の関数を作成し、戻り値を加算した結果を表示させる様に
プログラムmain関数を作成しなさい。

int plusA()
{
return (20);
}

int plusB()
{
retrun (40);
}


[3] 環境
 [3.1] OS:Windows
 [3.2] VIsual C++ 6.0
 [3.3] 言語: C++
[4] 期限:今日中
[5] その他の制限: 自分の力で解きたいので、
完璧な答えと言うより答えに繋がるヒントを下さい。

宜しくお願いします。
593デフォルトの名無しさん:2006/01/23(月) 12:05:43
>>592
問題文そのものがヒントだ。
594デフォルトの名無しさん:2006/01/23(月) 12:16:06
cout << (plusA() + plusB());
595デフォルトの名無しさん:2006/01/23(月) 12:35:48
>>591 ハジを忍んで聞くが、式を解くと61.333...だよな。
漏れのモンテカルロだと100万回試行させて、37.4くらいなんだよ・・・。
596デフォルトの名無しさん:2006/01/23(月) 12:42:52
>>584
確か前に英語の問題が解かれていたこともあったし、ここは結構大学の先生も
見ているみたいだから、多分対応はできるんじゃないかとは思うけど、
基本的には日本語でのコミュニケーションを前提としているからやっぱりスレ違い
だと思う。

英語の勉強が必要だったら、英語のニュースグループとか探して
alt.comp.lang.learn.c-c++ とか comp.lang.c++ とかで教えてもらった方が
いいんじゃないかなぁ。英語の勉強は日本語でするより英語でした方がいいと思うし。
597デフォルトの名無しさん:2006/01/23(月) 12:56:39
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 今月いっぱいまで

問題文など、問題に必要なものは下記の方へうpしました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1529.zip
不十分と書かれた部分は1行とは限らないそうです。
あと、この次の問題で上記のプログラムの計算量を測るにはどうしたらよいかという問題があります。
これについても答えていただけたら幸いです
宜しくお願いします。
598デフォルトの名無しさん:2006/01/23(月) 13:03:44
>>595
横レス
(1,0)-(5,0)-(5,30)-(1,30)-(1,0)の範囲に入ってる?
はみ出たり欠けたりしてない?
(試行する範囲が求める図形を全て覆っていれば大きくても問題ないと思うが)

先の長方形の面積*((図形の中に入った回数)/(全試行回数))
で求まると思う
599デフォルトの名無しさん:2006/01/23(月) 13:19:43
>>593
問題文のヒントじゃ足りなかったので、
もう少し答えに近付けるヒントが欲しかったです。

>>594
有難うございます!
参考にして、もう少し考えてみます。
600デフォルトの名無しさん:2006/01/23(月) 13:34:47
>>588-589
#include <numeric>
#include <list>

template <class Containor> typename Containor::value_type sumlist(Containor c)
{
  return accumulate(c.begin(), c.end(), typename Containor::value_type());
}

int main()
{
  list<int> lst;
  for (int i = 0; i < 10; i++)
    lst.push_back(i);
  cout << "size =" << lst.size() << endl;
  for (list<int>::iterator it = lst.begin(); it != lst.end(); ++it)
    cout << *it << ' ';
  cout << endl;
  cout << "sum of lst = " << sumlist(lst) << endl;
  for (list<int>::iterator it = lst.begin(); it != lst.end(); )
    if ((*it) % 3 == 0)
      it = lst.erase(it);
    else
      ++it;
  for (list<int>::iterator it = lst.begin(); it != lst.end(); ++it)
    cout << *it << ' ';
  cout << endl;
  cout << "sum of lst = " << sumlist(lst) << endl;
  return 0;
}
601デフォルトの名無しさん:2006/01/23(月) 13:43:35
あっはっは。オオボケ。(1,6)-(5,6)-(5,30)-(1,30)-(1,6)で試行させてたよ。>>598
602592:2006/01/23(月) 14:27:00
>>592
無事解けますた!
>>594サソ 
感謝です!有難うございました!!
603デフォルトの名無しさん:2006/01/23(月) 19:44:21
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1532.txt
[3] 環境
 [3.3] 言語:C
[4] 期限: 1月25日まで
初心者ですので難しく感じます。どうかよろしく御願いします。
604 ◆8u5v683t8. :2006/01/23(月) 20:19:42
[1] 授業単元: 情報科学基礎演習
[2] 問題文(含コード&リンク):

1.自分の名前(ローマ字)を表示し、その文字列の長さを求めよ。

2.2数の和を求める関数を定義せよ。(add()を定義)

3.for構文を用いて1から10までの数を表示するが、例外として5は表示しない。

4.*を使ってひし形を描け。

5.回文を作れ。(「abcdcba」のようなもの)


[3] 環境
 [3.1] OS: WindowsXP
 [3.2] すみませんが分かりません
 [3.3] 言語:C
[4] 期限: 2006年1月29日
[5] その他の制限: 特にありません

申し訳ありませんがよろしくお願いします。
605デフォルトの名無しさん:2006/01/23(月) 20:22:59
やる気でね( 'A`)
606デフォルトの名無しさん:2006/01/23(月) 20:38:21
>>604
1.
#include <stdio.h>
#include <string.h>

int main()
{
  char name[]="ここに名前を入力";
  printf("%s\n%d文字です。\n",name,strlen(name));
  return 0;
}
2.
int add(int x,int y)
{
  return x+y;
}
3.
#include <stdio.h>

int main()
{
  int i;
  for(i=1;i<=10;i++){
    if(i==5) continue;
    printf("%d",i);
  }
  putchar('\n');
  return 0;
}
607デフォルトの名無しさん:2006/01/23(月) 20:39:34
puts("寝る絵も萌えるね");
608デフォルトの名無しさん:2006/01/23(月) 20:51:58
>>604
ひし形と回文はそれぞれの定義が曖昧だから手出ししたくない
609デフォルトの名無しさん:2006/01/23(月) 20:55:00
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 関数f(x,y)を引き渡すと、-1≦x≦1、、-1≦y≦1
               の範囲で。この関数値を色表示する関数を持つプログラムを作りなさい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] lcc
[3.3] c言語
[4] 期限:1月24日
[5] その他の制限: 構造体および関数を指すポインタ
            という単元での課題です。よろしくお願いします。
610デフォルトの名無しさん:2006/01/23(月) 21:05:48
>>603 設問1および3。脳内コンパイラでの回答。設問2は入力ファイルによってことなる。

#include <string.h>
#include <stdlib.h>
を追加

strdup()
・ライブラリで持っている処理系もあるので、名前がかち合う可能性がある。
・int len;→size_t len; /* まあ、これはいちゃもんだけど */
(設問で除外されてるが、できれば、malloc()の戻り値をチェックしたほうがいい。)

getword()
・char c;→int c; /* 初心者はよくやる */
・*w = c;→*w++ = c; /* まあ・・・忘れることもある・・・かな? */
(設問で除外されてるが、できれば、文字数がオーバーしてないかチェックしたほうがいい。)

wordtree()
・node->c = 2;→node->c++; /* さすがにこれはやらない。ただ書き忘れすることがある */
(設問で除外されてるが、できれば、strdup()とmalloc()の戻り値をチェックしたほうがいい。)

printtree()
・穴埋めを埋める(a) printtree(node->left); (b) printtree(node-right);

main()
・char word[MAXWORD + 1]; /* まあ・・・+1の忘れってのはよくあることで */
・fclose(fp);を書いておくべき。
(設問で除外されてるが、できれば、fopen()の戻り値をチェックしたほうがいい。)

アルゴリズム自体
・ソート済みの文字列を多く読み込ませると、スタックオーバーフローするはず。
611デフォルトの名無しさん:2006/01/23(月) 21:22:51
>>610
ありがとうございました。
おかげで設問2も分かりそうです。本当に助かりました。
612デフォルトの名無しさん:2006/01/23(月) 21:33:10
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):

1. ファイルからデータを読み込み、最大値、最小値、平均値
を標準出力に出力するプログラムを作成せよ。
・入力はfopen関数を用いてファイル名を直接指定すること。
・ファイルは以下の形式で記述されている:
1行目:データ個数(自然数)
2行目以降:各行1個のデータ(実数)
※ 1行目に記述された個数のデータは必ずあると考えてよい

これがそのファイルです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1533.txt

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] Borland bcc
[3.3] C言語
[4] 期限:1月26日
よろしくお願いします
613デフォルトの名無しさん:2006/01/23(月) 21:35:52
問題文のソースコードはうpローだにあげてくれなきゃやるきせんな。
読み面杉。

614 ◆8u5v683t8. :2006/01/23(月) 21:43:45
>>608
ありがとうございました
感謝です
あとはまだ時間もあるんで自力であがいてみます


ちなみにひし形作れって言うのは
こんなん描けということらしいです(.が入ってる部分は本当は空白です。ずれるんで仕方なく・・・・・・)


............*
......***
*****
......***
............*
615デフォルトの名無しさん:2006/01/23(月) 21:44:59
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
  変数x,yに3と8を代入して,x/yを計算し、商sと余りrを表示させよ

  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1534.txt

[3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:LSI C-86試食版
 [3.3] 言語: C
[4] 期限: [2006年01月25日00:00まで]
[5] その他の制限:<stdio.h>でお願いします
 ここまで自力でやったけど、実行できません。宜しくお願いします。
616デフォルトの名無しさん:2006/01/23(月) 21:56:53
>>615
一番最後の「}」が全角になってる
617デフォルトの名無しさん:2006/01/23(月) 21:57:40
>>615

#include <stdio.h>
/* 関数は戻り値を必ず明記すること */
int main(int argc, char *argv[])
{
/* これは整数 */
int x,y,r;
/* 商は整数じゃ無理 */
double s;

x = 3;
y = 8;
/*「x / yはdouble型で計算しますよ、と指示*/
s = (double)x / y;
r = x % y;

printf("%d ÷ %d\n",x,y);
printf("商 = %lf\n",s);
printf("余り = %d\n",r);

return 0;
}
618デフォルトの名無しさん:2006/01/23(月) 22:07:21
>>612
ファイル名はわからんので、勝手に変えてちょ

#include <stdio.h>

int main()
{
  int i,n;
  double temp,sum=0,max,min;
  FILE *fp;
  if((fp=fopen("kadai.txt","r"))==NULL){
    printf("Can't open\n");
    return 1;
  }
  fscanf(fp,"%d",&n);
  fscanf(fp,"%lf",&temp);
  sum=max=min=temp;
  for(i=0;i<n-1;i++){
    fscanf(fp,"%lf",&temp);
    sum+=temp;
    if(max<temp) max=temp;
    else if(min>temp) min=temp;
  }
  printf("MAX:%lf MIN:%lf AVE:%lf\n",max,min,sum/n);
  fclose(fp);
  return 0;
}
619デフォルトの名無しさん:2006/01/23(月) 22:33:21
>>614
ごめん。こんなのしか思いつかない。
nはひし形の段数だから、適宜変更してちょ。偶数はだめだけど。
#include <stdio.h>

int main()
{
  int i,j,k=1,f=0,n;
  n=5;
  while(k>0){
    for(i=n-k;i>=1;i--) printf(" ");
    for(j=0;j<k;j++) printf("* ");
    putchar('\n');
    if(k==n) f=1;
    if(f==0) k+=2;
    else if(f==1) k-=2;
  }
  return 0;
}
620デフォルトの名無しさん:2006/01/23(月) 22:41:41
614のプログラムは激しく機種依存っつーかフォント依存な希ガス
621デフォルトの名無しさん:2006/01/23(月) 22:45:29
[1] 授業単元: 情報演習U
[2] 問題文(含コード&リンク):
以下のヒントを参考にして動的計画法を用いてナップザック問題を解くプログラムを作成せよ。
(組み合わせとその合計重量を順次出力するよう)
(ヒントは以下)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年1月26日まで

ヒントはここにあります。(1535.txt)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?

k番目の荷物のkを行、物品の合計重量を列にした二次元の表にして出力したいと思っています。
お願いします。
622デフォルトの名無しさん:2006/01/23(月) 23:55:25
>>549
お願いします、誰かといてください。
623615:2006/01/24(火) 00:02:40
>>616
>>617

おかげで完成しました。
本当にありがとうございます
624デフォルトの名無しさん:2006/01/24(火) 00:08:20
>>622
makerなんていう和製英語が嫌だから拒否する。
625デフォルトの名無しさん:2006/01/24(火) 00:55:55
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
N個の要素よりなる配列をmain関数に宣言する
配列にデータヲ読み込む関数をmainから呼んで入力を行い
データを書き出す関数を呼んで出力するプログラムを
ポインタで呼んでポインタで受け取るやりかたで表せ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月24日
[5] その他の制限: 締め切りが今日までなのでおねがいします
626デフォルトの名無しさん:2006/01/24(火) 02:09:18
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):
浮動少数型の引数3つを取り、引数の平均を戻り値とする関数。
関数名や引数名は自分できめてよい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月26日でお願いします。
[5] その他の制限:特にないです。

627質問者:2006/01/24(火) 02:27:59
【質問テンプレ】

[1] 授業
数値C言語プログラム

[2] 問題文
微分方程式
y'ーxy=0
をオイラー法ORルンゲクッタ法で計算するプログラムを作成せよ

[3] 環境
 [3.1] OS: Windows
 [3.2] すいませんちょっとわかりません
 [3.3] 言語: C

[4] 期限: 明後日まで

[5] その他の制限: 特にありません よろしくお願いします
628デフォルトの名無しさん:2006/01/24(火) 02:48:33
>>626
これでいいかな?

#include<stdio.h>

double heikin(double, double, double);

int main(){
double x,y,z;

printf("3つの数を入力\n");
printf("x = ");
scanf("%lf",&x);
printf("y = ");
scanf("%lf",&y);
printf("z = ");
scanf("%lf",&z);

printf("3つの数の平均は%fです\n",heikin(x,y,z));
}

double heikin(double x, double y, double z){
return (x+y+z)/3;
}
629デフォルトの名無しさん:2006/01/24(火) 02:55:27
>>625
本当は宿題は自分でやらないとためにならないけど、
期限が迫っているみたいだから特別。
#include <stdio.h>
#define N 50

int SetArray( int* hairetu ){
 int i;
 for (i=0 ; i< N ;i++) hairetu[i] = i*i;
 return 0;
}

int PrintArray( int* hairetu ){
 int i;
 for (i=0 ; i<N ; i++) printf("H[%d] = %d\n", i, hairetu[i]);
 return 0;
}

int main(){
 int h[N];
 SetArray( h );
 PrintArray( h );
 return 0;
}
630デフォルトの名無しさん:2006/01/24(火) 03:27:38
>>627
初期条件がないと解けんぞ。
631デフォルトの名無しさん:2006/01/24(火) 04:28:23
>>621
お願いします。
632デフォルトの名無しさん:2006/01/24(火) 07:09:01
>>622
試験前だから長いの嫌だ
633 ◆8u5v683t8. :2006/01/24(火) 07:26:24
>>619
わ、ありがとうございます
助かりました
634デフォルトの名無しさん:2006/01/24(火) 11:33:57
http://www.wit.ac.jp/~izumi/c/
この問題が解ける方いませんか?木曜日が期限なんです。お願いします
635デフォルトの名無しさん:2006/01/24(火) 11:37:51
だからテンプレに従えつっただろ
636デフォルトの名無しさん:2006/01/24(火) 11:53:50
お名前:636
返信用メールアドレス(※必入力):[email protected]
お問い合わせ内容: オセロの質問 その他
詳しい内容:
http://pc8.2ch.net/test/read.cgi/tech/1137522945/634
にて、そちらの生徒さんから、質問を受けたのですが、答えてよいか迷っています。
こちらが用意できるものは、
・コンパイラすら通らないプログラム
・コンパイラは通るがまったく動かない、評価対象外のプログラム
・一応動くがなにも考えてないプログラム
・alpha-beta法を使った、思考ルーチン付きのよわっちいプログラム
・ソースフリーで出回っている強いプログラムのコピー
637634:2006/01/24(火) 11:55:14
1] 授業単元: c言語
[2] 問題文(含コード&リンク): http://www.ime.st/www.wit.ac.jp/~izumi/c/
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:?
 [3.3] 言語: c
[4] 期限:1/26
638デフォルトの名無しさん:2006/01/24(火) 11:59:05
今から作ろう
639デフォルトの名無しさん:2006/01/24(火) 12:03:09
◆プログラムの仕様
・プレーヤーは双方とも人間とする。
・プレーヤーは標準入力から石を置く場所を入力する。
・手の合法性の判断,挟まれた石の処理,ゲーム終了の判断,勝敗の判断,ゲーム盤の再表示,これらのことをプログラムが自動的に行う。

つまらない。
640デフォルトの名無しさん:2006/01/24(火) 12:08:08
>>637
んじゃ約束どおり表示だけね
初期化やら中身はまぁ頑張って
void print_board(int board[][10]){
int i,k;
char baka[3][3]={" ","●","○"};
char num[8][3]={"1","2","3","4","5","6","7","8"};
puts("  1 2 3 4 5 6 7 8");
puts(" ┏━┳━┳━┳━┳━┳━┳━┳━┓");
for(i=1;i<9;i++){
printf("%s",num[i-1]);
for(k=1;k<9;k++){
printf("┃%s",baka[board[i][k]]);
}
puts("┃");
if(i==8)break;
puts(" ┣━╋━╋━╋━╋━╋━╋━╋━┫");
}
puts(" ┗━┻━┻━┻━┻━┻━┻━┻━┛");
}
641デフォルトの名無しさん:2006/01/24(火) 13:13:09
>>621
お願いします。
642デフォルトの名無しさん:2006/01/24(火) 13:22:52
俺頭悪いから何がしたいのかわかなんない
643デフォルトの名無しさん:2006/01/24(火) 14:33:17
644デフォルトの名無しさん:2006/01/24(火) 14:35:49
>>628
ありがとうございます。
645デフォルトの名無しさん:2006/01/24(火) 14:41:19
>>643
キモイ
646デフォルトの名無しさん:2006/01/24(火) 14:46:41
>>643
100回ほど氏ね
647デフォルトの名無しさん:2006/01/24(火) 14:49:37
>>643
お前>>586みたいなこと書いててやってもらえるとでも思ってんの?
648デフォルトの名無しさん:2006/01/24(火) 15:00:31
[1] 授業単元:生体情報工学
[2] 問題文(含コード&リンク):次のHP
http://kyoumu.educ.kyoto-u.ac.jp/cogpsy/personal/Kusumi/datasem03/nakamoto.files/frame.htm#slide0001.htmの
14数式で書くと、という数式を満たすプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows Home Edition
 [3.2] VC 6.0
 [3.3] 言語:C++
[4] 期限: 2006年1月27日
[5] 特にありません。よろしくお願いします。
649デフォルトの名無しさん:2006/01/24(火) 15:01:12
i forgot to leave a message.
i heard this place from Japanese friends that there are people that are good about C/C++.
I can only accept english.
So if there is anyone who can try these projects and have some comments.
Please leave a message in English.
Thank you and I appliciate so much!!

650デフォルトの名無しさん:2006/01/24(火) 15:07:49
教えたその友人はどいつだ
誰が英語でメッセージなんて残すか
651デフォルトの名無しさん:2006/01/24(火) 15:50:50
Yes! I am a pencil!
652デフォルトの名無しさん:2006/01/24(火) 15:51:27
いや、意味がわからん
653デフォルトの名無しさん:2006/01/24(火) 15:57:19
ちんぽがえんぴつサイズなんだとよ。
654デフォルトの名無しさん:2006/01/24(火) 17:00:41
[1] 授業単元: 情報演習
[2] 問題文(含コード&リンク):
コマンドライン引数からファイル名を入力して、そのファイルをテキストファイルと仮定して、
以下の規則に従って整形出力するするプログラムを開発したい。ソースファイルex33_1.cは
このために開発したソースコードの一部である。 ex33_1.cをダウンロードし、....の部分に
コード(1行とは限らない)を追加してプログラムを完成させよ。

[整形規則]
1行の文字数はdefine文により WIDTH として定義する。
1行の長さが WIDTH 文字以上の場合は、WIDTH 文字で強制的に改行する。
WIDTH 文字に満たない行は整形モード(左詰、右詰、中央寄せ)に従って表示する。
整形モードの初期値は左詰とする。
整形モードは/l(左詰), /r(右詰), /c(中央寄せ)のいずれかの2文字が連続して出現した直後に切り替わる。
/r, /l, /cの2文字は出力には表示されないが、/の後にr,l,c以外の文字が続いたときはそのまま表示され、
整形モードは切り替わらない。
1行中に/r, /l, /cが複数ある場合は末尾にある記号が有効。
/r, /l, /cは「1行の長さ」を数える文字数に含めない。

書式指定文字列中の *
関数 printf() や fprintf() 中の書式指定文字列中に出てくる * 記号は,数値と置き換えられることを意味する.
今回の場合だと,関数 flushline() 中の最後の fprintf() の書式文字列 "%*s" がそれである.
* は,直後の引数の値,つまり m*(........)/2 の答えに置き換えられる.これを用いることで,
s で示される文字列の表示長を状況に応じて調整して表示することができる.


655654:2006/01/24(火) 17:02:08
#include <stdio.h>

#define WIDTH 80
#define LEFT 0
#define CENTER 1
#define RIGHT 2

void fillchar(char c, int m);
void flushline(char *bp, int l, int m);

int main(int argc, char *argv[])
{
FILE *fpi;
int meta = 0;
int mode = LEFT;
char ch;

if(..........) {
fprintf(......, "Illegal number of argument.\n");
return(-1);
}

if((fpi=..........)==NULL) {
fprintf(stderr, "Can't open input file <%s>.\n", argv[1]);
return(-1);
}

656654:2006/01/24(火) 17:02:42
while((ch=fgetc(...))!=EOF) {
if(meta==1) {
switch(ch) {
case 'c': mode=......; break;
case 'r': mode=......; break;
case 'l': mode=......; break;
default: fillchar('/', mode);
fillchar(ch, mode);
break;
}
meta=...;
} else if( ch == ... ) {
meta=1;
} else {
fillchar(ch, mode);
}
}
fillchar(..........);
fclose(fpi);
return (0);
}
void fillchar(char c, int m)
{
static int length=0;
static char buf[........];



657654:2006/01/24(火) 17:04:26
if((length==........) && ( c!='\n')) {
flushline(buf, length, m);
length=0;
}
if(..........) {
flushline(buf, length, m);
length=....;
} else {
buf[.......]=....;
}
}
void flushline(char *bp, int l, int m)
{
*(......) ='\0';
fprintf(stdout, "%*s%s\n", m*(.......)/2, "", bp);
}
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
RedHat Linux
 [3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
1月26日0時0分

658654:2006/01/24(火) 17:05:13
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
....以外のコードは書き換えないこと。書き加えるのは可。
宣言済みの変数名や型の変更は禁止。
変数の追加も禁止。
<stdio.h>, <ctype.h>に含まれないライブラリ関数の使用や、新たな関数定義は禁止。

すいません氏にそうなんで助けてください・・・
よろしくお願いします。
659デフォルトの名無しさん:2006/01/24(火) 17:21:47
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): n人を合計点の小さい順に並び替え、
  出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: LSI C-86試食版
 [3.3] 言語: C
[4] 期限: 01月24日23:59まで
[5] その他の制限: Cを始めて3ヵ月程度のレベルです。
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1538.txt
  合計点まではできたけど、その先ができません。お願いします。
660659? ◆giEIO/ghnY :2006/01/24(火) 17:22:00
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1537.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C++
[4] 期限:2006年1月24日
[5] その他の制限:添付ファイルに記載

添付ファイルに書いてありますが、
mallocの動的配列確保をサンプルプログラムを基に行うものです。
サンプルの方も自作で、修正が必要だと思われます。
サンプルがおかしいせいか、詰まってしまって全く動けません。
お願いします。
661660:2006/01/24(火) 17:37:13
660の上に提出期限も1月25日でした。スイマセン。
662デフォルトの名無しさん:2006/01/24(火) 17:49:21

At first, I should tell you about this place.
This place, called "2ch" is not appropriate for serious
questions, and not so many people are kind.
Then, I'll leave a some comment about your homework.

q-1:It is a little ambiguous for us. It said,
"Represent each class using the class diagram notation
described during lecture". So I can only tell you some
hints. Three classes are, for example, movable blocks class,
piled blocks class, and judgement class. The methods are
maybe "Set valiables" and "Get valiables".

q-2:I can't get meaning of this question correctly,
but I think , for example, The answer is changing in 28th
line of the file "Bookshelf.cpp", "return( myNumberOfBooksOnShelf );"
to "if ( myNumberOfBooksOnShelf % 2 == 0){
return( myNumberOfBooksOnShelf * 2) }" and so on.

I feel a little tired, so the rest may be done in the mood. :-)
663662:2006/01/24(火) 18:31:06
>>649
The answer of 4-1 is as follows.(Attention! This code is no checked!)
class Wallet
{
private:
int my_Dollars;
int my_Cents;
public:
Wallet(){ my_Dollars = 0; my_Cents = 0;}
Wallet(int d, int c ){ my_Dollars = d ; my_Cents = c;}
int getDollars(){ return my_Dollars; }
int getCents(){ return my_Cents;}
bool canPayFor( int dollarAmount, int centsAmount );
void payFor( int dollarAmount, int changeAmount );
void visitATMForCash( int dollarAmount ){ my_Dollars += dollarAmount;}
}
bool Wallet::canPayFor( int dollarAmount, int centsAmount )
{
if( dollarAmount < my_Dollars ) return true;
else if( dollarAmount == my_Dollars && centsAmount =< my_Cents )
return ture;
else return false;

}
void Wallet::payFor( int dollarAmount, int changeAmount )
{
if( my_Cent < changeAmount && 0 < my_Dollars )
my_Dollars--; my_Cent += 100;
my_Dollars -= dollarAmount;
my_Cent -= changeAmount;
}
664デフォルトの名無しさん:2006/01/24(火) 18:42:52
>>659
一番簡単なソート。
for (i = 0; i < n; i++) {
for (j = i; j < n; j++) {
if (seiseki[i] > seiseki[j]) {
temp = seiseki[i];
seiseki[i] = seiseki[j];
seiseki[j] = temp;
}
}
}
665662:2006/01/24(火) 18:45:34
>>649
残りは、教えた友達に教えてもらってね
666デフォルトの名無しさん:2006/01/24(火) 19:23:43
[1] 授業単元: プログラミング1
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1539.txt

問題で使用するファイル
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1540.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] Borland bcc
[3.3] C
[4] 期限:1月27日
[5] その他の制限:特になし

どうかお願いします
667デフォルトの名無しさん:2006/01/24(火) 19:27:07
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://www.geocities.jp/marice999/index.html
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月27日でお願いします。
[5] その他の制限:特にないです。
668デフォルトの名無しさん:2006/01/24(火) 20:19:09
669659:2006/01/24(火) 22:41:47
>>664
ありがとうございます。
しかし、ずっと健闘しているけどまだ動きません。
どこが違うか分からないので、すいませんが宜しくお願いします。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1544.txt
670デフォルトの名無しさん:2006/01/24(火) 22:49:00
>>669
急に文字化けしたけど
671659:2006/01/24(火) 22:50:42
>>670
テキストファイルですか?
672デフォルトの名無しさん:2006/01/24(火) 22:53:58
>>669

> int ko = 0, sy = 0, su = 0, ri = 0, ei = 0;
初期化する必要はないかと

> a= tokuten[0];
なぜaに代入するのか理解できん
ソートは>>664の変数を書き換えるだけでいいかと

> printf("\n 結果 \n");
> for(i=0; i>100, i++){
すごい・・・ありえないな。iが100より大きい間とか
あと、ここは100じゃなくてnでするべき
673デフォルトの名無しさん:2006/01/24(火) 23:00:18
>>671
日本語が全滅だ。
LinuxかUnixつかった?
674デフォルトの名無しさん:2006/01/24(火) 23:01:25
>>673
エンコードの設定をShift-JISにしる
675デフォルトの名無しさん:2006/01/24(火) 23:03:35
>>674
あははっははは、本当だ、直ったw
676659:2006/01/24(火) 23:12:36
指導してくださった皆さんありがとうございます。
やっと動くようになりました。提出も何とか間に合いそうです。
本当に感謝です。
677デフォルトの名無しさん:2006/01/24(火) 23:33:55
>>668
ありがとうございます!助かりました
678660:2006/01/25(水) 00:09:37
660ですけど、本文等で何か不手際ありますでしょうか?
あれからもいろいろとやってみたんですが、
やればやるほど悪くなるばかりで一向によくなりません…
679デフォルトの名無しさん:2006/01/25(水) 00:23:32
読んだ。>>660
遺伝的アルゴリズム(GA)か。
課題全文と、参考資料を書いたほうがいいと思うぞ。
680デフォルトの名無しさん:2006/01/25(水) 00:38:47
[1] 授業
数値計算C言語プログラム

[2] 問題文
任意の微分方程式を数値解放で解きなさい
ただし解き方としてオイラー法かルンゲクッタ法を用いて計算するプログラムを作成せよ
任意の方程式として y'+xy=0 を挙げてみました
もしよければ好きなものでもかまいません

[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] 言語: C

[4] 期限: 明日まで

[5] その他の制限: 特にありません 本当によろしくお願いします
681デフォルトの名無しさん:2006/01/25(水) 00:52:15
>>660 うむ。遺伝的アルゴリズムのプログラムを組めと言われたと正直に言うべきだな。
malloc()うんぬんの問題もあるが、アルゴリズムの定義が足りない。

>>680 ルンゲクッタ 微分方程式 で ググって一発なんだが…
682デフォルトの名無しさん:2006/01/25(水) 00:56:14
>>680
オイラー法ってこんなんだっけか。
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[]){
    double x,y,h,range;
    x = atof(argv[1]);
    y = atof(argv[2]);
    h = atof(argv[3]);
    range = atof(argv[4]);
    for(;x<range;x+=h,y+=(-1)*h*x*y) printf("%f %f\n",x,y);
    return 0;
}
683デフォルトの名無しさん:2006/01/25(水) 01:04:43
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

 [T] n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,
    各科目の最高点を出力するプログラムを作成せよ。
  ただし,各科目の配列名をjap,soci,math,sci,engとすること。

 [U] 5人の学生の4科目の試験の得点(1科目につき満点は100点)を入力する.
    1人分入力する毎に「合計得点が240点以上で,
    かつ各得点が40点以上であるとき合格とする」の条件で,合否を判定せよ.

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] 初心者なんでわかりません。
 [3.3] 言語: C かな。
[4] 期限: [本日中]

C言語難しくて、僕には全くわからないです。
期限も迫ってきてるんでよろしくお願いします!!!
684デフォルトの名無しさん:2006/01/25(水) 01:10:22
>>660
geneが3以上になったときの交雑の定義は?
ペア作って入れ換え? それとも乱交?

ちなみに評価は「evaluation」(関数なら動詞の「evaluate」)。
srand抜いて、ひとつずつ変更しながら確かめていけばそんなに難しくはないと思う。
685デフォルトの名無しさん:2006/01/25(水) 01:26:18
>>683
もっとスマートな書き方があるだろうけど、一応動くから書いておく
#include<stdio.h>

int main(){
int n,i;
int jap[128],soci[128],math[128],sci[128],eng[128];
int japh=0,socih=0,mathh=0,scih=0,engh=0;

printf("人数を入力してください:");
scanf("%d",&n);

for(i=0;i<n;i++){
printf("%d人目の得点を入力して下さい\n",i+1);
printf("国語:");
scanf("%d",&jap[i]);
if(jap[i]>japh) japh=jap[i];
printf("社会:");
scanf("%d",&soci[i]);
if(soci[i]>socih) socih=soci[i];
686デフォルトの名無しさん:2006/01/25(水) 01:26:55
printf("数学:");
scanf("%d",&math[i]);
if(math[i]>mathh) mathh=math[i];
printf("理科:");
scanf("%d",&sci[i]);
if(sci[i]>scih) scih=sci[i];
printf("英語:");
scanf("%d",&eng[i]);
if(eng[i]>engh) engh=eng[i];
printf("\n");
}

printf("\n各科目の最高点\n");
printf("国語%d点 社会%d点 数学%d点 理科%d点 英語%d点\n",japh,socih,mathh,scih,engh);
}
687デフォルトの名無しさん:2006/01/25(水) 01:52:32
こっちは更に変な書き方…
[U]
#include<stdio.h>

int main(){

int i,n=5;
int jap,soci,math,sci,eng;

for(i=0;i<n;i++){
while(1){
printf("%d人目の得点を入力してください\n",i+1);
printf("国語:");
scanf("%d",&jap);
printf("社会:");
scanf("%d",&soci);
688デフォルトの名無しさん:2006/01/25(水) 01:53:41
printf("数学:");
scanf("%d",&math);
printf("理科:");
scanf("%d",&sci);
printf("英語:");
scanf("%d",&eng);
if(jap<=100 && soci<=100 && math<=100 && sci<=100 && eng<=100) break;
else printf("得点は100点満点で入力してください!!\n");
}
if(jap>=40 && soci>=40 && math>=40 && sci>=40 && eng>=40 && jap+soci+math+sci+eng >= 240) printf("合格じゃ!\n");
else printf("不合格じゃ!出直して来い!\n");
}
}
689デフォルトの名無しさん:2006/01/25(水) 02:21:35
>>660
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1545.txt
かなりテキトーに作った。文句は却下。自分で改造しなさい。
690デフォルトの名無しさん:2006/01/25(水) 03:06:33
>>680
どうも眠れないから、なんとなく解いてみた。2次のrunge-kutta法で
解いた物をアップしておく。
ttp://www.uploda.org/uporg294770.zip.html
コメント読めば、使い方は分かると思う。関数のところは、自分の好きなのに
変えて使っておくれ。
>>682
既に答えた人がいたのか・・・気が付かなくて、被った・・(´・ω・`)。
オイラーは、台形積分を使うからそれでOKだとおもふ
691680:2006/01/25(水) 03:42:43
>>682>>690
本当に忙しい中ありがとうございます
692デフォルトの名無しさん:2006/01/25(水) 08:09:04
  エロゲですか?
 ∧_∧
( ・∀・) ∧ ∧
(  ⊃ ) (゚Д゚;)
` ̄ ̄ ̄ ̄(つ_つ_
` ̄日∇ ̄\|BIBLO|
    ̄   =====
693デフォルトの名無しさん:2006/01/25(水) 10:25:02
[1] 授業単元: 情報数学
[2] 問題文(含コード&リンク):
シンプレックス法プログラミング課題

1 2変数(x,y)のシンプレックス法とする。

2 プログラミングができたら、数値を代入して確認する
@条件: 2x+y <=100,3x+6y<=240のときz=2x+3y
答え: x=40,y=20のときz=140
A条件: x=2y<=40,3x+2y<=60のときz=2500x+4000y
答え: x=10,y=15,z=85000
B条件: x+2y<=40,3x+2y<=60のときz=2000x+4800y
答え: x=0,y=20のときz=96000

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] VisualC++.NET
 [3.3] c言語
[4] 期限:2006/1/30
[5] その他の制限: とくになし
694デフォルトの名無しさん:2006/01/25(水) 10:42:19
>>693
条件Aなんかおかしくね?
695デフォルトの名無しさん:2006/01/25(水) 11:13:46
[1] 授業単元: 情報演習U
[2] 問題文(含コード&リンク):
以下のヒントを参考にして動的計画法を用いてナップザック問題を解くプログラムを作成せよ。
(組み合わせとその合計重量を順次出力するよう)
(ヒントは以下)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年1月26日まで
[5] その他の制限:動的計画法を用いる。
ヒントはここにあります。(1535.txt)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?

ナップサック問題です。
容積の決まった袋に、価値が最大になるようになるつめ方を見つけるという問題です。
制約として、「一番目の荷物から組み合わせを順番に検証し、新しい荷物を追加するたびに、『重量が同じで価値の最高が更新されればその時点時一度出力し、されなければそのまま次へいく』というのを繰り返す」というアルゴリズムでお願いします。
k番目の荷物のkを行、物品の合計重量を列にした二次元の表にして途中経過、結果を出力したいと思っています。
あまり時間が無いですがお願いします。
696デフォルトの名無しさん:2006/01/25(水) 11:24:05
>>694
すいません、間違えてました。

本当は、
A条件: x+2y<=40,3x+2y<=60のときz=2500x+4000y
です。
697デフォルトの名無しさん:2006/01/25(水) 11:31:19
>>696
それはそれで条件Bと全く同じになってしまうんだが
698693:2006/01/25(水) 11:38:45
>>697
いや、それで正しいと思います。
699デフォルトの名無しさん:2006/01/25(水) 11:42:24
>>698
あれ?俺なにか勘違いしてる?
@の条件に当てはまったら結果を表示
当てはまらなかったらAの条件で〜・・・って感じでBまで行くと思ってたんだけど
それだとAとBが全く同じ条件だと永遠にBが実行されないよね
そういう意味じゃなかった・・?
700デフォルトの名無しさん:2006/01/25(水) 11:50:52
2]
品物  個数  単価(ドル) の関係を示しているとする.
A 1 1.2
B 3 4.0
C 2 2.4
D 4 3.5
E 1 2.6
F 5 3.3
G 3 5.7
test.datを読み込み,各品物の合計金額を円に換算してファイル(enn.dat)に書き込むプログラムを作成しなさい.
ただし,1ドルは114円とする.
enn.datの中身の例(一円以下は四捨五入)
A 137
B 1368
C 547
D 1596
E 296
F 1881
G 1949
レポートにはenn.datの中身を示しなさい.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月25日まで

お願いします・・・orz

701デフォルトの名無しさん:2006/01/25(水) 11:51:32
>>695
相変わらず問題の意味がわかんね
702デフォルトの名無しさん:2006/01/25(水) 11:53:35
>>700
何故全角で書く
703デフォルトの名無しさん:2006/01/25(水) 11:56:31
あまり小難しい数学分野の問題は解けない
ナップザック問題?何それ
704デフォルトの名無しさん:2006/01/25(水) 12:00:03
>>702
コピペ&改行修正しただけなんです。すいません
705デフォルトの名無しさん:2006/01/25(水) 12:02:57
[1]授業単元:プログラミング
[2]問題文:
@abc.txtから英文を読み込み画面に表示する
A@の英文の回答をキーボードから入力し、ans.txtとして保存する
B@の英文の文字数と単語数を数え画面に表示する(例:See you laterなら文字数は11、単語数は3)
C4文字の英単語をキーボードから入力し、文字コードの合計をsum.txtに出力する
[3]環境
 [3.1]OS:Windows
 [3.2]コンパイラ名とバージョン:Visual C++ .NET
 [3.3]言語:C
[4]期限:今週中
[5]その他の制限:なし
お願いします
706デフォルトの名無しさん:2006/01/25(水) 12:12:42
>>700
(゚Д゚)ノ ァィ
#include<stdio.h>
int main(void){
float x;
int k;
char name[3];
FILE *rp,*wp;
rp = fopen("text.dat","r");
wp = fopen("enn.dat","w");
while(fscanf(rp,"%s%d%f",&name,&k,&x)!=EOF)
fprintf(wp,"%s %d\n",name,(int)(x*k*114+0.5));
fclose(rp);
fclose(wp);
return 0;
}
707デフォルトの名無しさん:2006/01/25(水) 12:15:32
>>706
有難うございます!有難うございます!ありggggggえうydヴぃks
本当にありがとう
708デフォルトの名無しさん:2006/01/25(水) 12:20:04
[1] 授業単元:
[2] 問題文(含コード&リンク):
  変数x,yにそれぞれ8と5を代入して,x/yを計算し,
  整数解と実数解を出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン: (わかりません)
 [3.3] 言語: (C)
[4] 期限: (06年01月25日14:00まで)

初心者です。
提出期限が近く、大変急いでいます。
どなたよろしくお願いします。
709デフォルトの名無しさん:2006/01/25(水) 12:20:32
>>705
数えるのは入力した方なのか?
それとも読み込んだ方なのか?
710デフォルトの名無しさん:2006/01/25(水) 12:23:01
>>708
(○口○*) ポーカン
711デフォルトの名無しさん:2006/01/25(水) 12:27:17
>>695
ヒントのほうに書いてあるんですけど
(重量、価値)=(2,4),(3,5),…,(6,11)という6個の荷物を重量制限10の鞄に入れるとき、
重量制限内&価値が最大になる組み合わせを見つける問題です。

自分はヒントのプログラムがわからなくて…。
712デフォルトの名無しさん:2006/01/25(水) 12:37:37
>>708
#include <stdio.h>
int main(){double x=8,y=5;printf("%d,%g\n",(int)(x/y),x/y);return0;}
713デフォルトの名無しさん:2006/01/25(水) 12:40:18
>>711

アルゴリズムとしてはオブジェクト(荷物)の合計が10以下の組み合わせを総当りにかけて
その中で価値がもっとも大きい組み合わせを保存するってのでいい?
美しくないけどそれしか思いつかない
714デフォルトの名無しさん:2006/01/25(水) 12:41:09
>>709
読み込んだ方でお願いします
715デフォルトの名無しさん:2006/01/25(水) 12:41:36
>>712
>int main(){double x=8,y=5;printf("%d,%g\n",(int)(x/y),x/y);return0;}
つーか、
>int main(){int x=8,y=5;printf("%d,%g\n",x/y,(double)x/y);return0;}
の方がよかないか。

>>706
>while(fscanf(rp,"%s%d%f",&name,&k,&x)!=EOF)
間違っている。nameに&は要らん。
716デフォルトの名無しさん:2006/01/25(水) 12:47:15
>>714
(゚Д゚)ノ ァィ とりあえずBまで
何か文字列関数使えば綺麗になるのかもしれないけど俺には思いつかない
#include<stdio.h>
int main(void){
FILE *fp;
char str[256],ans[256];
int cnt1=0,cnt2=0,i=0,flag=0;
fp = fopen("abc.txt","r");
fgets(str,256,fp);
printf(">%s\n",str);
fgets(ans,256,stdin);
fp = fopen("ans.txt","w");
fprintf(fp,"%s",ans);
while(1){
if(str[i]=='\0')break;
if(flag==0&&str[i]!=' '){
++cnt1;
flag = 1;
++cnt2;
}
else if(flag==1&&str[i]==' ')
flag = 0;
else if(str[i]!=' ')++cnt2;
++i;
}
printf("%d %d\n",cnt1,cnt2);
return 0;
}
717デフォルトの名無しさん:2006/01/25(水) 12:48:26
>>715
おお!しまった!
最初文字列じゃなくて文字で作ってたから消し忘れた!
でも、おもしろいからそのまま出してね♥
718デフォルトの名無しさん:2006/01/25(水) 12:57:59
>>705
(゚Д゚)ノ ァィ C
認識間違ってても知らん
#include<stdio.h>
int main(void){
FILE *fp;
char str[5];
int sum=0,i;
fp = fopen("sum.txt","w");
fgets(str,5,stdin);
for(i=0;i<4;i++)
sum += str[i];
fprintf(fp,"%d",sum);
return 0;
}
719デフォルトの名無しさん:2006/01/25(水) 13:06:20
>>716
>>718
助かります。ありがとうございました
720デフォルトの名無しさん:2006/01/25(水) 13:10:35
Cool, man!! >>662

i really appliciate that you tell me about this place and did that project!!
i can see you're good with C++.
i hope another people do my projects which i left cause' it's going to come one after another... you know?
anyway, thank you for taking your time!
i'll try to run it though!!
721708:2006/01/25(水) 13:14:51
>>712
本当に助かりました。
ありがとうございます。
722デフォルトの名無しさん:2006/01/25(水) 13:15:56
>>719
しまったfcloseしてねぇw
723デフォルトの名無しさん:2006/01/25(水) 13:30:54
>>713
アルゴリズムについて(これが制約なんで)。

「まず一個目を入れるか入れないか」で2通り、
「上の2通りに対し、二個目を入れるか入れないか」で4通り
と言うのを6個目まで繰り返していきます。

新しい荷物で組み合わせができるたびに、以前にできた同じ重さの組み合わせと比べ、
総価値が上まっていれば組み合わせを記録して新しい価値を上書き。

ヒントで大まかな形は示されてるのはわかります。
答えが「3個目と5個目を入れた総価値19」だということもわかってるんですけど、
プログラムでできない…。
724デフォルトの名無しさん:2006/01/25(水) 13:47:29
        r-──-.   __
     / ̄\|_D_,,|/  `ヽ
    l r'~ヽ ゝ__.ノヽ/~ ヽ l
    | |  l ´・ ▲ ・`━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ゝ::--ゝ,__∀_ノヽ--::ノ
      /      )
  ∩  / ,イ 、  ノ/        ドゴォォォ _  /   【呪いのトンファービームパンダ】
  | | / / |    (〈       ∧ ∧―= ̄ `ヽ, _
  | | | |  |     }    ∵. ・(   〈__ >  ゛ 、_   このコピペを見たら明日死にます。
  | | | |  ヽ   ヽ’           (/ , ´ノ \   他の場所にコピペしても無駄です。
  | |ニ(!、)   \  \          / / /
  ∪     /  ゝ  )        / / ,'
       /  / {  |       /  /|  |
      / _/  |  |_      !、_/ /   〉
      ヽ、_ヽ {_ ___ゝ         |_/

725デフォルトの名無しさん:2006/01/25(水) 13:52:25
(゚Д゚≡゚Д゚)マジか!
726デフォルトの名無しさん:2006/01/25(水) 13:54:43
ああ、各商品は1個ずつか。無限個で考えていた。
727デフォルトの名無しさん:2006/01/25(水) 13:55:38
おい!お前ら死ぬぞ!
対策を立てなければ!(・ω・)ゝ
728デフォルトの名無しさん:2006/01/25(水) 14:03:21
>>716
>>718
助かります。ありがとうございました
729デフォルトの名無しさん:2006/01/25(水) 14:07:35
何で2回お礼書いてんの?
730デフォルトの名無しさん:2006/01/25(水) 14:17:53
>>549
おねがいします。ほんとに、お願います、切実なんですよ。m(。_。)m
731デフォルトの名無しさん:2006/01/25(水) 14:21:38
もう過ぎてるじゃん
732デフォルトの名無しさん:2006/01/25(水) 14:24:35
非常難しいから俺達にも解けないんだってさ
733デフォルトの名無しさん:2006/01/25(水) 14:25:53
(゚Д゚)ノ試験勉強の気分転換だからんな長いのやりたくないお
734デフォルトの名無しさん:2006/01/25(水) 14:30:27
[1] 授業単元:ポインタ
[2] 問題文(含コード&リンク):
配列要素の合計を表示させるプログラムを
ポインタとユーザ定義関数を使用して作っています。
ユーザ定義関数が返ってきた所をどう書けば良いか悩んでいます。
ソースではなく、日本語でヒントが欲しいです。

#include <stdio.h>

int s_Total(int *n1);

int main()
{
int no[] = {32, 18, 45, 25, 62, 51, 89,100, 6, 77};
int sum = 0;
【この部分】
return(0);
}

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VisualC++6.0
 [3.3] 言語:C++
[4] 期限:今日中
[5] その他の制限:変数sumに合計を代入して使用し、合計した値のみ表示

C言語開始1週間の初心者なのですが、宜しくお願いいたします。
735デフォルトの名無しさん:2006/01/25(水) 14:35:04
半ソースにしてみた。
sum = 合計を取る関数(int* データ配列の先頭ポインタ, int 配列の要素数);
関数の中身は自分で考えな。
736デフォルトの名無しさん:2006/01/25(水) 14:35:18
感覚の問題

例えば12という定数が返す値は12
同様にno[0]の変数が返す値は32
またs_Total関数が返す値はreturn n;の値だ
737デフォルトの名無しさん:2006/01/25(水) 14:36:52
授業始まって1週間でポインタかい
738デフォルトの名無しさん:2006/01/25(水) 14:38:01
>>726
そうです。商品はひとつずつです。
お願いします。
739デフォルトの名無しさん:2006/01/25(水) 14:48:11
std::accumulateで一発解決とかは駄目なのかなぁ......
740デフォルトの名無しさん:2006/01/25(水) 14:59:41
[1] 授業単元:ホリエモン
[2] 問題文(含コード&リンク):ホリモンの目指した企業をシミュレートせよ!
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VC++
 [3.3] 言語:C++
[4] 期限:ホリエモンが出所するまで
[5] その他の制限:なんでもOK
741デフォルトの名無しさん:2006/01/25(水) 15:02:02
>>740
なぜ言語指定?
742デフォルトの名無しさん:2006/01/25(水) 15:08:14
(2, 4) 2 4
(3, 5) 3 5
(2, 4) (3, 5) 5 9
(2, 4) (4, 8) 6 12
(3, 5) (4, 8) 7 13
(2, 4) (3, 5) (4, 8) 9 17
(2, 4) (3, 5) (5, 9) 10 18
(4, 8) (6, 11) 10 19
ソースは汚いので、パス。
743デフォルトの名無しさん:2006/01/25(水) 15:13:55
>>740
そのうちRPGツクールで出てくるだろうからそれまで待て。
744734:2006/01/25(水) 15:18:57
>>734です

>>735->>736サソ
無事解決しました!
有難うございました!!
745デフォルトの名無しさん:2006/01/25(水) 16:48:55
[1] ポインタ
[2] 問題文(含コード&リンク):

5桁以下の文字(数字を除く)と5桁以下の数字からなる文字列(例えば TARO1970) を入力し(必ず、文字の固まりの次に数字の固まりがあると仮定する)、これを分解して、文字部分を文字配列へ、数字部分を整数型の変数へ格納して、それぞれを標準出力へ出力
するプログラムを書け。但し、文字列の分解にはポインタ変数を使用すること。
/* 数字の抽出に使用すること*/
 if ( (0<=(*cp-'0')) && ((*cp-'0')<=9) ){
  ・・・・・・
}

[3] 環境
 [3.1] Linux
 [3.2] gcc 2.9
 [3.3] C言語
[4] 06年2月1日まで
[5] 標準ライブラリの使用は無しです。
まだ、基礎の基礎しか習っていないのでとりあえず
「動けば」それでいいという段階です。
できるだけ、簡単な作りが好ましいです。

よろすくおながいしまふ。
746:デフォルトの名無しさん :2006/01/25(水) 16:52:13
セットアップするときプロダクトIDがわからないんですが
どうしたらいいですか?
747デフォルトの名無しさん:2006/01/25(水) 16:52:42
標準ライブラリがないと何もできないわけだが
748デフォルトの名無しさん:2006/01/25(水) 17:08:37
>>745
#include<stdio.h>
int main(void){
char in[11],str[6],*cp,*c;
int num[5],*p,i,n=0;
fgets(in,11,stdin);
cp = in;
c = str;
p = num;
while(*cp!='\0'){
if((0<=(*cp-'0'))&&((*cp-'0')<=9)){
*p = *cp-'0';
++p;
++n;
}
else{
*c = *cp;
++c;
}
++cp;
}
*c = '\0';
printf("%s\n",str);
for(i=0;i<n;i++)
printf("%d",num[i]);
return 0;
}
749:デフォルトの名無しさん:2006/01/25(水) 17:14:14
>747
さっそく回答ありがとうございます。
次にDISC2をいれてみたのですが「現在CDにあるファイル」
とでてでうすればいかわかりません。
750デフォルトの名無しさん:2006/01/25(水) 17:15:36
CD=コンパクトディスク
音楽を聞くあれだ!
決してカレントディレクトリではないから騙されるな!
751デフォルトの名無しさん:2006/01/25(水) 17:16:29
はいはい割れ割れ
752デフォルトの名無しさん:2006/01/25(水) 17:20:50
#include<stdio.h>

int main(void)
{
int c =100;
size_t sz;

sz = sizeof c;
printf("size of int = %d\n",sz);

return 0;

これでコンパイルするとCに代入した値が使われていないとでるのですが、
理由を教えてくれませんか?
753デフォルトの名無しさん:2006/01/25(水) 17:23:30
>>549
まだ間に合うの?結構めんどい&長くて疲れるので、
できればやりたくないんだが・・・
754デフォルトの名無しさん:2006/01/25(水) 17:23:41
>>752
だって100って整数使ってないじゃん
755デフォルトの名無しさん:2006/01/25(水) 17:27:54
>>754
えぇ、使ってないってどういうことですか?
756デフォルトの名無しさん:2006/01/25(水) 17:29:22
>>752
sz = sizeof c;
ここの部分をコンパイラは
sz = sizeof (int);
これと同じと解釈したんじゃね?
757デフォルトの名無しさん:2006/01/25(水) 17:32:40
>>755
cに初期化時につっこんだ100がまったく放置プレイじゃんってこと
警告なんてどうでもいいけど
出したくないなら
int c
にするか
int c=100消して
sizeof c → sizeof(int) にする
758お願いします。:2006/01/25(水) 17:47:22
[1] 授業単元: メディアシステム演習
[2] 問題文   http://www-hi.comlab.soft.iwate-pu.ac.jp/~hito/2005/mediasystems/data/ms2005_report3.pdf
     ID: ms05
Password: spectrum
です。 よろしくお願いします。
    
[3] 環境
  言語: C言語
[4] 期限: 2006年1月27日 午後6時
[5] その他の制限:
759デフォルトの名無しさん:2006/01/25(水) 18:00:16
>>758
確かアクセス制御が掛かってる領域に権限無しで入ると
不正アクセス禁止法に引っかかると思ったが、おまいに責任が取れるのか?
760お願いします。:2006/01/25(水) 18:03:43
すいませんでした。 しりませんでした。
問題文を載せます。
761デフォルトの名無しさん:2006/01/25(水) 18:09:11
>>756-757
え、っていうことはCに何が入っててもこのsizeofってやつは
charが何バイトかしか見れないってことなんですか?

俺はてっきり100っていう数字のサイズが知れるんだと思ってたんですけど
762デフォルトの名無しさん:2006/01/25(水) 18:16:18
>>761
sizeof演算子は型以外の事は一切関知しない
例えば、\0が入っていようが\x30が入っていようが
sizeof(c)は常にcの型のサイズ

つまりchar型に限って言えば、sizeof(char)=1と保証されてる
763デフォルトの名無しさん:2006/01/25(水) 18:16:37
sizeof演算子は結構いい加減
764デフォルトの名無しさん:2006/01/25(水) 18:17:45
>>762
そーなんですかー勉強になります。ありがとうございました
765デフォルトの名無しさん:2006/01/25(水) 18:18:07
>>761
100を入れようが65535やら-32767入れようが器の大きさは同じ(int型)
っていうかその器の大きさの宣言がintとかdoubleとか。
766デフォルトの名無しさん:2006/01/25(水) 18:26:20
見た目は子供,頭脳は大人ってことだな。

;y=ー(゚д゚)・∵. ターン
767デフォルトの名無しさん:2006/01/25(水) 18:35:19
[1] 授業単元: プログラミング基礎演習
[2] 問題文(含コード&リンク):
1.整数 P, X (1 < X < P で, P, X は互いに素) を与えて, X × Y を P で割った余りが 1 になるもっとも小さな正整数 Y を求めるプログラムを書いてください。
2.ユークリッドの互除法(正整数 X, Y (X > Y) の最大公約数は X を Y で割った余りと Y の最大公約数に等しい)の手順を使って最大公約数を見つけるプログラムを作れ
3.2を利用して1のプログラムを作り直せ。(P と X は「互いに素」なので,両者の最大公約数は必ず 1 というのを使う)
[3] 環境
 [3.1] unix
 [3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
 [3.3] C
[4] 期限:2006年1月末
768767:2006/01/25(水) 18:40:22
さらに
[1] 授業単元: プログラミング基礎演習
[2] 問題文(含コード&リンク):
1.getchar, putchar を用いて標準入力(stdin) からテキストデータを読み込みそのまま 標準出力(stdout) に書くプログラムを作成せよ。
ファイル末尾に達すると getchar の値が EOF になるのを利用するとよいだろう。
2.1のプログラムを改良して,アルファベット文字に関して大文字は小文字に変換,小文字は大文字に変換して表示するプログラムを作成しなさい。
3.1のプログラムを改良してそのままじゃなくて「行番号」を付けて表示させよ。
4.英文テキストファイルを読込んで,文字数,単語数,行数をカウントして表示するプログラム mywc を作成しなさい。
[3] 環境
 [3.1] unix
 [3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
 [3.3] C
[4] 期限:2006年1月末
769デフォルトの名無しさん:2006/01/25(水) 18:46:15
もう1つ
[1] 授業単元: プログラミング基礎演習
[2] 問題文(含コード&リンク):
1.2つの分数(fraction)を入力し,その四則演算(+,-,*,/)を計算するプログラムを作成してください.
ただし,次の構造体を利用すること.ここでは,四則演算を関数化しないこと.また,既約分数にしなくとも良いです.
/*fraction_t型の定義*/
typedef struct {
int numerator; /*分子*/
int denominator; /*分母*/
} fraction_t;

/*fraction_t型の変数の宣言*/
fraction_t frt;

2.和(add),差(subtract),積(multi),商(quotient)を計算する4つの関数を作成せよ.
その関数を利用し,1のプログラムと同じ構造体を利用し,同じ動作をするプログラムを作成せよ.
3.2のプログラムで,計算が正しく行われない場合を列挙して,その対応策を考えよ.
(例 1/-2 のような計算結果は,美しい表示方法とはいえません)
4.3で列挙した対応策を,2で作成したプログラム上で実現せよ.
[3] 環境
 [3.1] unix
 [3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
 [3.3] C
[4] 期限:2006年1月末
770お願いします:2006/01/25(水) 19:47:11
1] 授業単元: メディアシステム演習
[2] 問題文  http://www.geocities.jp/iwatenet/ms2005_report3.pdf

  問題文をこっちにのせましたので
 よろしくお願いします。
    
[3] 環境
  言語: C言語
[4] 期限: 2006年1月27日 午後6時
[5] その他の制限:
771デフォルトの名無しさん:2006/01/25(水) 19:48:00
[1] 授業単元:関数
[2] 問題文(含コード&リンク):
半径、高さから円柱の表面積を求める関数を
作りたいのですが、どう作って良いのか判りません。
プログラム自体は自分で考えたいので
フローチャート?のようなモノが欲しいです。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VisualC++6.0
 [3.3] 言語:C++
[4] 期限:大至急
[5] その他の制限:とくになし

初心者なので、お手柔らかにお願いします。
772デフォルトの名無しさん:2006/01/25(水) 19:48:12
>>549
どうも間に合わなかったっぽいね。途中まで着手したけど、
やめておくか。
773デフォルトの名無しさん:2006/01/25(水) 19:49:01
申し訳ないがやるやつ居ないと思うぞ
774デフォルトの名無しさん:2006/01/25(水) 19:49:46
>>771
ググれ

>>773>>770宛てね
775デフォルトの名無しさん:2006/01/25(水) 19:51:34
>>774
ごめんなさい。
ググったんですけど、プログラムそのものばかりしか
みつけられなかったんで、ここに書き込んでみたんです。
776デフォルトの名無しさん:2006/01/25(水) 19:53:51
ごめんな・・・父さんはCしかしらないんだ・・・
777デフォルトの名無しさん:2006/01/25(水) 19:58:07
>>775
半径があるだろ?
ってことは円柱の上下の円の部分の面積は計算できるよな?
高さがわかってるな?
円柱を展開した時さっきの円の部分以外のところって高さ×円の円周の長方形になるだろ?
もうわかるよね?
778デフォルトの名無しさん:2006/01/25(水) 19:59:38
>>771
半径と高さの2つから表面積を算出する方法が分からないってことだろ?
そんなのC/C++以前の問題として算数からやり直せよ
779デフォルトの名無しさん:2006/01/25(水) 20:00:28
>>771
データを入力させて、それを円柱の表面積を求める関数に渡して、
円柱の表面積=円の半径の自乗×円周率×2 +
       円の半径×円周率×2 × 高さ
に代入して、その値を返せばいい。
780779:2006/01/25(水) 20:02:17
やべっ、書きすぎたか?
781デフォルトの名無しさん:2006/01/25(水) 20:02:46
誰もフローチャートをかかない件。
782デフォルトの名無しさん:2006/01/25(水) 20:19:25
ユークリッド先生なら現在待機中です。
783デフォルトの名無しさん:2006/01/25(水) 20:19:59
何その互除法みたいな先生
784デフォルトの名無しさん:2006/01/25(水) 20:22:02
>>770
pgmファイルが無い上、
既に作成されているメソッドまで回答者が入力しろというのか?
甘えすぎ。
785デフォルトの名無しさん:2006/01/25(水) 20:26:27
配布されてるプログラムも必要だなぁ。>pgmの人
786デフォルトの名無しさん:2006/01/25(水) 20:26:45
(,,゚Д゚)∩先生C言語だとメソッドでなくて関数だと思います
787お願いします。:2006/01/25(水) 20:41:22
なんども 不手際ですいません。
770ですけども。

関数relevancy() を作ってほしいのです。

課題2に関しては、自分で考えたいと思いますので。

どうか お願いします。
788デフォルトの名無しさん:2006/01/25(水) 20:44:48
嫌です><
789デフォルトの名無しさん:2006/01/25(水) 20:46:04
やだ(´σ `) ホジホジ
790お願いします。:2006/01/25(水) 20:52:51
どうしてでしょうか?
791デフォルトの名無しさん:2006/01/25(水) 20:54:59
>>740
むしろホリエモンをシミュレート
#include <iostream>
#include <string>
int main() {
    std::string names = "ホリエモン ホラエモン ゼンカモン ホラレモン ムイチモン ドザエモン", scale = "   ┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥";
    for (int i = 0; i < 6; ++i) {
        std::cout << names << '\n' << scale << "\n   ";
        for (int j = 0; j < i; ++j) std::cout << "      ";
        std::cout << "↑今この辺\n" << std::endl;
    }
    return 0;
}
792デフォルトの名無しさん:2006/01/25(水) 20:59:51
>>770
まあこうなったらやってもらうのは、諦めた方がいいな。
この流れでやってもらった人はほとんどいないだろう。
もう少し書くと、最初大元の問題を挙げた時に、ここからの
アクセスが増えているはずだから、たぶんチェックされるだろうな。
793デフォルトの名無しさん:2006/01/25(水) 21:03:01
pdf中に書いてあるプログラムを打ち込むことまでさせますか?

なんか知らんが、パーミッションエラーになっとる。
794デフォルトの名無しさん:2006/01/25(水) 21:03:03
>>784
PDFなんだからコピペできるじゃんwww
795デフォルトの名無しさん:2006/01/25(水) 21:06:21
あれ?770のpdf、削除されてるね。諦めたのか?
796デフォルトの名無しさん:2006/01/25(水) 21:06:47
おお、そうなんだ。じゃあ、コピーしてzipでまとめてくれ。>>794
797デフォルトの名無しさん:2006/01/25(水) 21:15:31
iwatenet氏に嫌がらせのメールを送らないように。
798デフォルトの名無しさん:2006/01/25(水) 21:16:21
>>795
>>770のはまだ生きてるだろ
大元の奴はhtaccessにdeny from allでも書かれたっぽいが
799デフォルトの名無しさん:2006/01/25(水) 21:23:01
あー。まあ19時とかだったら、平気で研究室に残ってる人いるからなぁ。deny from allかぁ。
800795:2006/01/25(水) 21:28:06
>>798
あ、本当だ。早とちりスマソ。700の方は生きているね。
しかし、合コン出会い系サイトにファイルが置いてあるって・・・
激しくやる気をそぐね。
801794:2006/01/25(水) 21:28:37
>>796
俺770じゃないのに(´・ω・`)

まぁ、書き終わって自分でPGM作って認識させて遊んでたりするんだがな!
802お願いします。:2006/01/25(水) 21:46:26
教えてくださいよ
803デフォルトの名無しさん:2006/01/25(水) 21:53:46
やってもいいんだが、
1)たぶん、先生、ここ見てるぞ。それでもいいか?
2)やるにしても、提示されてるファイル(ソース、サンプル画像類)をどっかに上げてくれ
804デフォルトの名無しさん:2006/01/25(水) 21:54:05
香ばしいな
805デフォルトの名無しさん:2006/01/25(水) 22:01:07
806お願いします:2006/01/25(水) 22:35:35
ほんとうに ありがとうございます。
807ww:2006/01/25(水) 22:36:20
よかったね
808ん?:2006/01/25(水) 23:06:25
俺もここの学生だけど、805の式って 問題にあってる?
809デフォルトの名無しさん:2006/01/25(水) 23:12:10
>>808
>間違っててもしらね
810795:2006/01/25(水) 23:21:31
当然全て自己責任。しかし、先生も気づいているだろうに、
これを使おうとはなかなかチャレンジャーだな。
811デフォルトの名無しさん:2006/01/25(水) 23:25:19
相関の算出がまちがってる気もする。
812お願いします:2006/01/25(水) 23:45:12
でも、ほかに やりかた ありますか?
813デフォルトの名無しさん:2006/01/25(水) 23:50:39
ん・他の方法が出てくるのを待つ<やり方
814お願いします:2006/01/26(木) 00:17:17
やりかた というか 本気で知りたいんです。
815デフォルトの名無しさん:2006/01/26(木) 00:20:41
>>695
>>711
そろそろまじやばい。
ヒントの空欄埋めて出力する部分を作らないといけないんです。
お願いします。
816デフォルトの名無しさん:2006/01/26(木) 00:21:48
>本気で知りたいんです。
うんうん。知りたいのはわかったから。
本気なら調べるくらいはしたら?

追記:
くれぐれもセンセに教えるとかVIPに知らせるとか、
メールアドレス晒すとかしないよーに。
817デフォルトの名無しさん:2006/01/26(木) 00:24:08
んー。あのソース見づらいからビットのON/OFFで組み合わせを表現(5ビットですな)。
整数型の変数を0〜2^5-1でループさせて・・・って組んだんで、UPはできないなぁ・・・。
818お願いします:2006/01/26(木) 00:34:16
一応 平行して 調べたりしてるのですが、なかなか わからないので。。。
819デフォルトの名無しさん:2006/01/26(木) 00:46:38
iwatenet氏、私も調べてみた。

>_ [仕事] 認証のやりなおし
>
>このサーバに設置している講義のサポートページには認証をかけ、特定の人以
>外には見られないようにしている。その認証に必要な ID とパスワードが流出
>した。
>
>流出させた人は、課題が書かれた PDF を見せて質問したかったらしい。課題
>そのものが曝されるのはともかく、その他に外部に曝したくない情報までアク
>セス可能になってしまうのは好ましくないと判断し、アクセス制限とパスワー
>ドの変更で対処した。どういう経緯で知ったか、具体的に何がまずいと考えた
>かについてはここでは伏せる。
>
>それにしても、課題について訊きたいことがあるなら、メールを筆者宛に出す
>なり、直接筆者のところまで質問しに来ればいいのに。ちょっと落ち込むなあ

いい先生だなぁ。
先生。講義資料をOPENにしてくださると、独学してる人間は助かります。
それと、学校でマジメに勉強しようとは思わない人間にいくら課題だしても
自分でやらんと思います。
820805:2006/01/26(木) 00:50:06
同じ画像で1.0、反転した画像で-1.0になることは確認したけど。
正しく数値出るけど、要求してる式とは違うって事?
821デフォルトの名無しさん:2006/01/26(木) 00:58:24
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1547.txt

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: [2006年01月27
[5] その他の制限:特にないです。よろしくお願いします
822デフォルトの名無しさん:2006/01/26(木) 00:59:55
課題のPDFファイル見る限り、学生に課題投げて後シラネって感じはないな。
課題の関数部分もちゃんと簡単な擬似コーディングしてあるし、
説明も平易でわかりやすく書いてある。

823デフォルトの名無しさん:2006/01/26(木) 01:00:37
さて、浮動小数点型の「一致」をどう定義するかだが…。
824デフォルトの名無しさん:2006/01/26(木) 01:05:23
>>819
>先生。講義資料をOPENにしてくださると、独学してる人間は助かります。
俺漏れも。なんだったら月会費払ってもいいよ。1000円ぐらい。
825デフォルトの名無しさん:2006/01/26(木) 01:09:33
すまん。流出発覚は俺のアクセスかもしんない。
IPに地域名でるんだ‥九州からじゃ丸分りだったな。
826デフォルトの名無しさん:2006/01/26(木) 01:13:19
>>819
いい先生だ・・・受けるなら、こんな先生の講義を受けたいね。
普通だったらこんな事態になったら、酷い場合は退学処分にすら
なるのに。
827ww:2006/01/26(木) 01:28:02
>>819
どこの情報だよ? それ
828ぷろっぷ:2006/01/26(木) 01:33:04
たしかに いい先生だよ!!
829デフォルトの名無しさん:2006/01/26(木) 01:38:38
ソースは、センセのページのmisc.log。
正直に言うけど、Makefileまで書いてくださってるので、すんごく親切。
あの資料作るのに何時間かけてるんだろ…。
830デフォルトの名無しさん:2006/01/26(木) 01:54:55
さて、寝よ。明日のゴミだしに起きられなくなる。
831デフォルトの名無しさん:2006/01/26(木) 02:00:58
もやしうまかった
さて○○○して寝るか
832805:2006/01/26(木) 02:02:25
腹減った
833デフォルトの名無しさん:2006/01/26(木) 02:46:20
試験勉強するために3時間睡眠でおきて来た
さぁお前らの宿題なんてやってらんね勉強しよ
宿題出すやつもちっとは自分で考えてみやがれ
834デフォルトの名無しさん:2006/01/26(木) 03:18:24
依頼者はせめて回答者をやる気にさせる努力をしないとなw
835デフォルトの名無しさん:2006/01/26(木) 04:12:05
>>833
なんの試験勉強なんだ?
836デフォルトの名無しさん:2006/01/26(木) 04:19:21
>>835
確率統計と科学英語
まぁ大学の試験勉強
837デフォルトの名無しさん:2006/01/26(木) 04:24:16
>>836
そうかー
宿題はなんとかするからガンガレ! 健闘を祈る ノシ
838デフォルトの名無しさん:2006/01/26(木) 04:28:11
なんとかするってのは
回答者なのか依頼者なのか
839デフォルトの名無しさん:2006/01/26(木) 06:59:21
【質問テンプレ】
[1] 授業単元: ファイルの入出力
[2] 問題文(含コード&リンク):
3個の数を入力し、それぞれを係数a, b, cとみなして
関数f(x) = ax2+bx+cが描くグラフを'*'を用いて表示するプログラムを作成せよ。
X軸、Y軸もつけて
[3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月26日10時
[5] その他の制限:特になし

誰か助けてください。atoiでも使うんでしょうか・・・
840デフォルトの名無しさん:2006/01/26(木) 07:08:48
むしろatoiをどこで使うのか教えてください
841デフォルトの名無しさん:2006/01/26(木) 07:48:07
>>839
x,yの範囲は?
842デフォルトの名無しさん:2006/01/26(木) 08:26:03
特に指定してないです。画面上に収まればOK
843デフォルトの名無しさん:2006/01/26(木) 08:28:39
>>839
時間ないから超適当w
$ a.out .2 .4 .1 みたいな感じで。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define RANGE 20
int main(int argc,char *argv[]){
int graph[RANGE*2][RANGE*2],i,j,temp;
float x,y,a,b,c;
memset(graph,0,sizeof(graph));
a = atof(argv[1]);
b = atof(argv[2]);
c = atof(argv[3]);
for(i=0,x=(float)(-1)*RANGE/10;x<(float)RANGE/10;x+=.1,i++){
y = a*x*x + b*x + c;
temp =(int) RANGE + y * 10;
graph[temp][i]=1;
}
for(i=RANGE*2-1;i>=0;i--){
for(j=0;j<RANGE*2;j++){
if(graph[i][j]==1) printf("*");
else if (i==RANGE) printf("-");
else if (j==RANGE) printf("l");
else printf(" ");
}
printf("\n");
}
return 0;
}
844デフォルトの名無しさん:2006/01/26(木) 08:36:58
あー,配列の範囲考えるの忘れた…。
if((0<=temp)&&(temp<RANGE*2)) graph[temp][i]=1;
だな。
845デフォルトの名無しさん:2006/01/26(木) 09:54:10
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
リストA:2,5,9,10
リストB:1,4,7,11
 この2つのリストを先頭から順に読んで、以下の様なリストCを作る。
リストC:1,2,4,5,7,9,10
 この様な操作はA,Bが整列されている事を前提とした上で、各リストの長さの和に比例する時間でリストマージが終了する。アルゴリズムとして書けば以下の様になる。
リストCを空とする
リストAの先頭をtopA、リストBの先頭をtopBとする(以降の動作では現在の位置となる)
topAもしくはtopBが空でない間、以下を繰り返す

topA->data<topB->dataならばtopA->dataをリストCにつなぎ、topA=topA->nextとする。topA->data>=topB->dataならばtopB->dataをリストCにつなぎ、topB=topB->nextとする。

注1:リスト構造は一方向とし、各要素はdata領域とnext領域を持つものとする。
注2:上記のアルゴリズムのままではtopAもしくはtopBが空になっても存在しないdata領域を使おうとするので、修正の要がある。
注3:リストマージの結果としては生成されたリストCを返す事。

課題:リストマージの関数を実現し、それを利用してリストマージを行え。リストのデータとしては整数を想定せよ。データは上記のデータを想定せよ。各リストに対して標準入力から入力するものとする。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006/01/27
[5] その他の制限: 留年かかってますなんとかお願いします

846デフォルトの名無しさん:2006/01/26(木) 10:02:15
いつもは回答者の俺も単位がやばいんだ。すまんな。
土日ならやってやれるんだが…。
847デフォルトの名無しさん:2006/01/26(木) 10:13:02
高卒の漏れにも分かるな。大学のC言語はヘボいもんだな。
848デフォルトの名無しさん:2006/01/26(木) 10:14:19
高卒の漏れでも解けるんだからお前ら自分でやれよwwwwwwwww
適当に大学に入ったカスどもがwwwww
849デフォルトの名無しさん:2006/01/26(木) 10:20:07
>>845
適当に行詰めたから自分で適宜改行してくれ
>>848
口だけだから高卒止まりなんですか?
言うだけなら幼稚園児でも出来ますよ

#include<stdio.h>
#include<stdlib.h>
typedef struct list list;
struct list{list*next;int data;};
list*cons(int data,list*next){
 list*p=(list*)malloc(sizeof(list));
 p->next = next;p->data = data;return p;}
list*maaaaazi(list*a,list*b){
 list*base=NULL;list**c = &base;
 while(a && b){
  list**p=a->data < b->data ? &a : &b;*c = *p;*p = p[0]->next;c = &c[0]->next;
 }
 *c = a?a:b;
 return base;
}
int main(void){
 list*A = cons(2,cons(5,cons(9,cons(10,NULL))));
 list*B = cons(1,cons(4,cons(7,cons(11,NULL))));
 list*C = maaaaazi(A,B);list*itr;for(itr = C;itr;itr = itr->next)printf("%d,",itr->data);
 return 0;
}
850デフォルトの名無しさん:2006/01/26(木) 10:24:08
おっと、入力データは標準入力からか。
まぁ、それ位は出来ると思うからその辺は自分でやってくれ。
fgets + strtolで簡単に出来るから
851デフォルトの名無しさん:2006/01/26(木) 10:35:51
と、言いつつ暇なので書いてしまった。
上のソースのmain関数の部分をこれと置き換えて

list*inputList(char*p){
 char*next=p;
 int v = strtol(p,&next,0);
 if(p == next)return NULL;
 else return cons(v,inputList(next));
}
int main(void){ 
 list*A,*B,*C,*itr;
 char buf[80];
 printf("A:");A = inputList(fgets(buf,80,stdin));
 printf("B:");B = inputList(fgets(buf,80,stdin));
 printf("C:");C = maaaaazi(A,B);
 for(itr = C;itr;itr = itr->next)printf("%d,",itr->data); 
 return 0; 
}
852デフォルトの名無しさん:2006/01/26(木) 11:34:14
>>843
ありがとうございます。
でもコンパイルするとmemsetの前がエラーって出るんですが・・・
853デフォルトの名無しさん:2006/01/26(木) 11:38:54
>>852
エラーメッセージの内容も書かない奴に何を言えと?
854デフォルトの名無しさん:2006/01/26(木) 11:43:59
単に「error before memset」です。
855821:2006/01/26(木) 12:06:20
だれかお願いします!
856デフォルトの名無しさん:2006/01/26(木) 12:25:21
>>819
寝てる間にえらいことになってるなw
まぁ先生に通報したのは俺な訳だが。
普段ならスルーしてるが、ID/Passまで晒したのが
仮にもム板に来てる人間にしてはモラル無さ杉だと思ったんでな

ってか、ほんとにいい先生だな
857デフォルトの名無しさん:2006/01/26(木) 12:31:28
>>855
#include <stdio.h>
#include <math.h>
#define PI 3.141592653589793238462643383279502884197169399375105820974944

double deg2rad(int deg){
return ((2*PI*deg)/360);
}

main(){
int i;
double d;
for(i=0;i<=360;i++){
d=deg2rad(i);
if(
printf("%d deg=%.6f[rad], sin=%.6f, cos=%.6f, tan=%.6f\n", i, d, sin(d), cos(d), tan(d));
}
}

途中まで
858767:2006/01/26(木) 12:55:31
誰か頼む
859デフォルトの名無しさん:2006/01/26(木) 13:30:11
>>855
#include <stdio.h>
#include <math.h>
#include <float.h>
#define PI 3.141592653589793238462643383279502884197169399375105820974944

typedef struct {
int c1;
int c2;
}comp;

double deg2rad(int deg){
return ((2*PI*deg)/360);
}

main(){
int i;
double d;
comp c;c.c1=0;c.c2=0;
for(i=0;i<=360;i++){
d=deg2rad(i);
if(i==90||i==270){
printf("計算不可\n");continue;
}
if(fabs(sin(d)/cos(d)-tan(d))<DBL_EPSILON){c.c1++;}else{c.c2++;}
printf("%d deg=%.6f[rad], sin=%.6f, cos=%.6f, tan=%.6f, c1=%d, c2=%d\n", i, d, sin(d), cos(d), tan(d), c.c1, c.c2);
}
}
c1が一致回数、c2が不一致回数ね
860デフォルトの名無しさん:2006/01/26(木) 14:03:31
>>859
ほんとありがとうございます!
861デフォルトの名無しさん:2006/01/26(木) 14:34:25
>>847-848
なんというか言動から高卒臭が漂ってきます
862デフォルトの名無しさん:2006/01/26(木) 15:13:55
高卒で現在27歳年収720万円ですが何か?
863デフォルトの名無しさん:2006/01/26(木) 15:17:42
いいんじゃないでしょうか
864デフォルトの名無しさん:2006/01/26(木) 15:19:22
中卒のドカタのほうが儲けてるよな
貯金も無いようだけど
865デフォルトの名無しさん:2006/01/26(木) 15:21:13
時代は肉体労働だな
866デフォルトの名無しさん:2006/01/26(木) 15:39:17
>>862
そんな珍しくもなくね?
867デフォルトの名無しさん:2006/01/26(木) 15:55:23
>>862
先輩スゲーよ。高卒の漏れは最近まで年収240万だった。・゚・(ノД`)・゚・。
868デフォルトの名無しさん :2006/01/26(木) 15:56:32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
  以下のチャットプログラムを参考にして、特定のIPからのアクセス制限をつける。
  (アクセス権が無い旨のメッセージをクライアント側に表示)
サーバー側ソース  
  ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1548.txt
  クライアント側ソース
  ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1549.txt

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2006年1月30日]
[5] その他の制限: なるべく簡単な変更でお願いします。

過去ログにアクセス制限の宿題が載っていたのですが、
すでにリンク切れで参考にできませんでした。
よろしくお願いします。
869デフォルトの名無しさん:2006/01/26(木) 15:57:48
こりゃあまたできる人が限定されそうなの出てきたな
俺無理
870デフォルトの名無しさん:2006/01/26(木) 16:01:55
Windowsでgccか
入れるのがめんどくさい
871デフォルトの名無しさん:2006/01/26(木) 16:06:27
もうwinsock2.hに切り替えて全面改装した方が早いんじゃねーの?
872デフォルトの名無しさん:2006/01/26(木) 16:11:39
>>868
 [3.1] OS: Windows
こう書いてある割りにはやけにLinuxなソースだな
#ifdef多用で読みづらいし何て糞ースだよ
873デフォルトの名無しさん:2006/01/26(木) 16:14:46
てゆーか#ifdef使わんでいいだろ
874デフォルトの名無しさん:2006/01/26(木) 16:37:45
>>849-851
本当に感謝。
明日提出してなんとか留年免れてきます!
875デフォルトの名無しさん:2006/01/26(木) 16:39:11
教師に( ・∀)人(∀・ )通報しますた!
876デフォルトの名無しさん:2006/01/26(木) 16:41:45
この問題は信州大の奴だな。
大分前のスレで信州大の講義用ウェブサイトが貼られてて、その中で見た記憶がある。
ついでに信州大のそのサイトの講義内容は酷かった。
877デフォルトの名無しさん:2006/01/26(木) 16:42:23
よし晒せ!
878デフォルトの名無しさん:2006/01/26(木) 16:47:28
大学の留年かかった問題なら自分で解けよ。
大学のレベルを下げる生徒が卒業したら大問題だ
879デフォルトの名無しさん:2006/01/26(木) 16:50:47
今度から一見正しいけど出題者の例以外のパターンだと暴走するのでも作ろうか
880デフォルトの名無しさん:2006/01/26(木) 17:12:30
何かと思ったらIDとパスまでここに載せたのね
これって乗せた人間も不正アクセス禁止法にひっかかるんだっけ?
881デフォルトの名無しさん:2006/01/26(木) 17:37:53
[1] プログラミング演習
[2]ダイクストラ法により隣接行列で表されるグラフの最短経路を求めるプログラムを書きかけた。
このプログラムを完成させ、下の例のグラフで0番の節点から,4番の節点に至る最短経路を求めよ、
プログラム中には、動きがわかるように詳しいコメントを記すこと。
特に、shortestpath関数の詳しい説明を求める。
未完成プログラム⇒http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1550.txt
[3.1]Linux[3.2]gcc[3.3]c言語 
[4] 1/31まで
[5] (↓グラフ例)
0 1 2 3 4 ⇒最初の行は節点番号
0 2 0 2 0
2 0 2 1 3
0 2 0 5 4
2 1 5 0 2
0 3 4 2 0
因みにこれを画像で表すとこうなります。↓
http://ccfa.info/cgi-bin/up/src/up23553.bmp
念のため、ダイクストラ法の分かり易い説明が書いてあるサイトを貼っておきます。
http://karel.tsuda.ac.jp/class2005/algo/c24.html
それではお願いしますm(__)m
882デフォルトの名無しさん:2006/01/26(木) 18:54:19
>>879
鬼w
でも今回の件で、苦労して問題出す先生もいるんだから、あんまり
完全回答しない方がいいのかなって気もした。一箇所だけ空欄とかw
883デフォルトの名無しさん:2006/01/26(木) 19:05:05
IOCCCばりに読みにくいソースとか
884デフォルトの名無しさん:2006/01/26(木) 19:08:22
[1] 授業単元:c演習
[2] 問題文(含コード&リンク):個数が未知のデータをメモリにためる方法の例
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1551.txt)において
メモリがどのように確保されるかを説明せよ.説明に図を用いる場合には,
その図と図中の文字は手書きでもかまわない.
[3] 環境
 [3.1] OS: mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月27日17時まで
[5] その他の制限: 大学1年です。配列、ポインタあたりまでやりました。
885デフォルトの名無しさん:2006/01/26(木) 19:19:36
[1] 授業単元:c演習
[2] 問題文(含コード&リンク):関数 mlc1 と mlc2 の違いを以下の観点から
500字以内で説明せよ.説明にソースコードの引用を用いる場合には,
その部分は字数制限の対象にはしない.説明に図を利用する場合,
その図と図中の文字は手書きでもよい.

・「値渡し」と「アドレス渡し」

・実行時間

プログラムhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1552.txt

[3] 環境
 [3.1] OS: mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月27日17時まで
[5] その他の制限: >>894のものですが、
全部で五問あるのでお願いします。これは二問目です。
886ど素人:2006/01/26(木) 19:27:23
すんません、>>615の問題をやってみたのですが、
#include <stdio.h>

int main()
{
float x = 3.0, y = 8.0;

printf("商は%f, 余りは%f",x / y, x % y);

return0;
}

これでコンパイル通らず、%無効なオペランドです と出ます。
なんででしょうか・・・
887デフォルトの名無しさん:2006/01/26(木) 19:30:11
惜しいな%%
888デフォルトの名無しさん:2006/01/26(木) 19:30:13
[1] 授業単元:c演習
[2] 問題文(含コード&リンク):標準ライブラリとして提供されている
文字列処理の機能を使用することなく,標準関数strcmp()と同等の処理を行う
関数mystrcmp()を定義せよ.
[3] 環境
 [3.1] OS: mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月27日17時まで
[5] その他の制限: >>894のものです、これは三問目です。
889デフォルトの名無しさん:2006/01/26(木) 19:33:13
>>885 >>888

>>884の間違いです、すんません
890デフォルトの名無しさん:2006/01/26(木) 19:34:49
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): 10人の名前、年齢、電話番号の入ったファイルを作り、それを読み出すファイルを作れ。
そのとき、ファイル名は画面上で自由に設定でき、ファイルの拡張子はdatとなるようにせよ。
また、ファイル名が8文字を越えると、入力したファイル名は無効となり、再度ファイル名の入力を要請できるようにせよ。
問題上のファイルに新たに1人のデータを追加するためのプログラムを作れ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: すいませんわかりません
 [3.3] 言語:C
[4] 期限:2006年1月30日まで
[5] その他の制限: 初心者なので、あまり難しくないものでお願いします。
891デフォルトの名無しさん:2006/01/26(木) 19:35:17
>>888
int mystrcmp(const char*a,const char*b){
    int diff;
    for(;(diff = *a - *b)==0 && *a;++a,++b){}
    return diff;
}
892デフォルトの名無しさん:2006/01/26(木) 19:35:20
>>886
printf("商は%.5f, 余りは%d",x / y, (int)x % (int)y);
893デフォルトの名無しさん:2006/01/26(木) 19:37:38
>>884
字数は数えてない。ポインタ経由でのアクセスによる影響は無視。どうせ両方スタックにあるんだし。

関数 mlc1 と mlc2の引数機構(parameter mechanism)は共に値渡しである。そもそもCには値渡し以外の引数機構は存在しない。故に「「値渡し」と「XXX」」という観点からこれら2つの関数の「違い」を説明するならば、「違いはない」としか言いようがない。
また、実行時間については
mlc1はstruct data型という巨大な方の引数をとるため、仮引数オブジェクトの生成に時間がかかる可能性がある
mlc2はstruct data*型という比較的小さな方の引数をとるため仮引数オブジェクトの生成にはmlc1程には時間はかからない可能性が高い
894デフォルトの名無しさん:2006/01/26(木) 19:38:16
>>893
>>885だった。
895ど素人:2006/01/26(木) 19:39:33
>>887
ハッ

そっちの問題だったのですね・・・%fを疑ってました。
ありがとうございました!
896デフォルトの名無しさん:2006/01/26(木) 19:43:10
>>695
>>711
数日悩んだけど、わからなくて進まなくなりました。
誰か助けてください。
期限:今日中
897ど素人:2006/01/26(木) 19:43:31
>>892
ありがとうございました!
898デフォルトの名無しさん:2006/01/26(木) 20:08:13
>>891
ありがとうございます!
899デフォルトの名無しさん:2006/01/26(木) 20:10:22
その「ヒント」プログラムの穴埋めは、嫌なんだが・・・。
900デフォルトの名無しさん:2006/01/26(木) 20:12:58
>>893
どうもありがとうございます!
901デフォルトの名無しさん:2006/01/26(木) 20:34:25
>>同意。っていうか、ぱっと見た感じ、ヒント少しおかしい気がする。
最初、i=0のループを回すとき、D[i-1][???]のi-1って負になる気が
するんだが、気のせいかな?
ついでにいうと、ヒントの1535.txtはロダから流れている。
902901:2006/01/26(木) 20:57:47
>>901
あ、ごめん、流れてなかった。寝不足で見違えたか・・・スマソ
903デフォルトの名無しさん:2006/01/26(木) 21:00:38
>>695
アルゴリズムが大体同じならヒント通りじゃなくてもいいです。
904デフォルトの名無しさん:2006/01/26(木) 21:04:39
えーっと。
「全ての組み合わせのうち、最高のものを見つける」
ってアルゴリズムでOK?>>903
905デフォルトの名無しさん:2006/01/26(木) 21:06:48
695のアルゴリズムでは重量の最大を超えても制限を受けないので、全てを選択すればよい
906903:2006/01/26(木) 21:07:00
>>904
それそれ〜(・∀・)
907デフォルトの名無しさん:2006/01/26(木) 21:26:42
C言語なのにわざわざ[n+1]で宣言してfor(i=1;i<=n;i++)とループを回してるのが気に入らない。
908デフォルトの名無しさん:2006/01/26(木) 21:45:06
気に入らないときは、indentでもかますこと。
Cらしく書いたつもり。

#include <stdio.h>

/* 問題の定義 */
#define n 5 /* 品物の種類 */
#define WMAX 10 /* 重さの最大 */
static int w[n]={2,3,4,5,6}; /*各物品の重量*/
static int v[n]={4,5,8,9,11}; /*各物品の価値*/

int sum(int *p, unsigned x) { int retval = 0; for (; x; p++, x >>= 1)
if (x & 1) retval += *p; return retval; } void print(unsigned x) {
int i; int sumw = sum(w, x); int sumv = sum(v, x); for (i = 0; x;
i++, x >>= 1) if (x & 1) printf("(%d, %d) ", w[i], v[i]);
printf("%d %d\n", sumw, sumv); } int main(void) { unsigned x, best
= 0; for (x = 0; x < (1 << n); x++) { if (sum(w, x) <= WMAX &&
sum(v, x) > sum(v, best)) { best = x; print(x); } } return 0; }
909デフォルトの名無しさん:2006/01/26(木) 22:05:44
すみません。教えて下さい。リナックスでC言語を学び始めていますが、
九九の表を作るプログラミングを教えて下さい。すごく初歩的どとは思いますが、どうかお願いします。
/* kadai3.c */
/* */
#include<stdio>
int i,j;
ここまでしか出来なくて、どうやったら九九の表が作れるのか教えてください。
910デフォルトの名無しさん:2006/01/26(木) 22:06:15
C++の問題マダー?
911デフォルトの名無しさん:2006/01/26(木) 22:06:53
>>909
氏ねマルチ
向こうで答えてもらっただろ
912デフォルトの名無しさん:2006/01/26(木) 22:13:45
>>909
printf("ここに書けば全て解決");
913デフォルトの名無しさん:2006/01/26(木) 22:24:46
>>909
ほらよ。これで満足かい?
int main(){
    int x;
    for(x=81;x--;)
        printf("%2d%c",(9-x/9)*(9-x%9),x%9?' ':'\n');
}
914デフォルトの名無しさん:2006/01/26(木) 22:24:49
915デフォルトの名無しさん:2006/01/26(木) 22:29:34
>>909
#include <stdio.h>
int main(void) {
    int i, j, res[9][9];
    for (i = 1; i <= 9; i++)
        for (j = 1; j <= 9; j++)
            res[i - 1][j - 1] = i * j;
    printf("  1 2 3 4 5 6 7 8 9\n");
    for (i = 1; i <= 9; i++){
        printf("%d", i);
        for (j = 1; j <= 9; j++)
            printf("%3d", res[i - 1][j - 1]);
        printf("\n");
    }
}
916デフォルトの名無しさん:2006/01/26(木) 22:41:27
1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):
1、c言語では関数の戻り値は1変数に限られている。したがって、2変数以上
  の情報を呼び出し側(例えばmain内か呼び出された関数ならmainがその
  関数の呼び出し側となる)に戻すことはできない。2変数以上の情報を呼び
  出し側に返すためには、どのようにすればよいか。
2、3つの浮動少数型変数のポインタを引数にとり、引数のポインタの内容
  平均を4番目の引数のポインタの内容に代入する関数(関数名と引数名は
  自分で決めてよい)。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月27日でお願いします。
[5] その他の制限:特にないです。
917デフォルトの名無しさん:2006/01/26(木) 22:45:25
>>916
1、その変数が全て格納できるフラットなメモリを確保して格納し、その先頭アドレスを返す。
  呼び出し側はそれをvoid*で受け取り、ドキュメントとにらめっこしながらガンガル。
918デフォルトの名無しさん:2006/01/26(木) 22:46:37
1a構造体で返す
1b引数に戻り値を格納するアドレスを渡す
1c1変数のビットを分割して、それぞれに意味を持たせる
2 void f(double *a, double *b, double *c, double *d) {*d = (*a + *b + *c) / 3;}
919デフォルトの名無しさん:2006/01/26(木) 22:48:18
>>917
>>918
ありがとうございます。
920916:2006/01/26(木) 22:58:54
すいませんが、あと1問だけお願いします。
1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):
符号付き整数型の引数3つをとり引数のうち0以上のものの合計を戻り値(返値)
とする関数。ただし、引数全てが負の場合は-1を戻り値(返値)とする関数。
なお、関数名、引数名は自分で決めてよい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月27日でお願いします。
[5] その他の制限:特にないです。
921デフォルトの名無しさん:2006/01/26(木) 23:00:50
まあ。簡単だからやってみればよろしい。
922デフォルトの名無しさん:2006/01/26(木) 23:02:23
>>920
さすがにそのレベルはきいちゃだめだろ
923デフォルトの名無しさん:2006/01/26(木) 23:03:59
>>908
>>914
ありがとうございます!
最後ちょっとだけお願いなんですけど、出力の仕方で
(重さ、価値)で組み合わせが出るのではなく商品の番号(何個目か)で
表示されるようにはならないでしょうか?
924デフォルトの名無しさん:2006/01/26(木) 23:05:28
>>920
int positiveSum(int a,int b,int c){
    return (a>0?a:0)+(b>0?b:0)+(c>0?c:0)-((a&b&c)<0);
}
925デフォルトの名無しさん:2006/01/26(木) 23:06:20
908のはprintf("(%d, %d) ", w[i], v[i]); →printf("%d", i + 1)かな。
926914:2006/01/26(木) 23:43:38
じゃ、>>914のもそれで。
うp直前に慌ててゴミ掃除したからワーニング出てるな。笑ってゆるしておくれ。
しかし>>908のはすごいな。あんな組み方おれにはできない。
ソース出されればやってることはわかるが、いきなりそういう風には頭が働かない…

printf("(%d,%d) ",w[j],v[j]);

printf("%d ",j);
あるいは
printf("%d(%d,%d) ",j, w[j],v[j]);
927デフォルトの名無しさん:2006/01/26(木) 23:55:52
あんな詰め込みで書かれても(;_;)
928デフォルトの名無しさん:2006/01/26(木) 23:58:16
データを配列に記憶する方法と構造体をつかってリストに
記憶する方法の長所、短所を教えてください。
929デフォルトの名無しさん:2006/01/27(金) 00:04:49
(1)使用メモリ量の多寡
(2)ランダムな位置への読み書きの手間(速度)
(3)要素の削除にかかる手間(速度)
(4)可変個数のデータの扱いの対応
で、それぞれ書けばよろしい。
930デフォルトの名無しさん:2006/01/27(金) 00:06:12
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

一年三組の11人目があなただったとします。
一郎君から順に点数を入力、最後にあなたの点数を入力し、すべて入力し終わったあと、
一番成績の良い人の順から、点数を出力するプログラムを作成しなさい。
※ 入力を求める関数、並べ替える関数、出力する関数を作成すること。
  また、処理順序として、すべて入力→並び替え処理→出力 とするようにしてください。

一年三組成績
A君 50点 F 90点
B君 75点 G 67点
C君 36点 H 82点
D君 88点 I 45点
E君 68点 J 77点

[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン:初心者なので分かりません
 [3.3] 言語: C言語
[4] 期限: 1/28
[5] その他の制限
931デフォルトの名無しさん:2006/01/27(金) 00:06:58
>>927
全角スペースでインデントつけられるより774倍マシなんですが。
コピペしてメモ帳でもテキストエディタでも張り付けて
自分でタブ入れていけば、ほぉら見やすい!

基本はコピペしたものが面倒なくそのままコンパイル通ることだと思ってる。
で、タブのつぶれた縦長のレス・ソースは読みにくいし。
932デフォルトの名無しさん:2006/01/27(金) 00:09:01
>>931
自分でタブ入れするよりは、全角をタブに一括置換のほうが楽な気が
933デフォルトの名無しさん:2006/01/27(金) 00:09:44
一郎君はどこへ行ったんだ?
934デフォルトの名無しさん:2006/01/27(金) 00:11:37
整数 n (>0) をキーボードより読み込み、それを以下の様に
因数分解するプログラムを作れ。
54=2.3.3.3.
306=2.3.3.17.

#include <stdio.h>
main(){
long d,n;
printf("n=?"); scanf("%ld",&n);
d=2; /* 以下d でnを順に割って行く*/
while(1){
if (n==1) 【 A 】
if (n%d==0) { printf("%ld.",d); n=【 B 】;}
else d=【 C 】;
}
printf("\n");
}


これがわかりません、教えてください
935デフォルトの名無しさん:2006/01/27(金) 00:12:19
>>934
>>1読め
936デフォルトの名無しさん:2006/01/27(金) 00:13:03
>>930
あなたと一郎君とA君とF(呼び捨て)とニャン丸とルミ子の関係がよくわかりません。

メル友?
937928:2006/01/27(金) 00:13:19
>>929
thx
938デフォルトの名無しさん:2006/01/27(金) 00:18:04
>>934
問題の出し方として仕方ないのかもしれんが、Cのプログラムとしては気持ち悪いな。
939デフォルトの名無しさん:2006/01/27(金) 00:22:03
>>934
【A】break
【B】n/d
【C】d+1
940デフォルトの名無しさん:2006/01/27(金) 00:23:32
>>939
惜しいっ!
941>>934:2006/01/27(金) 00:23:43
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows Me
 [3.2] すいません、わかりません
 [3.3] 言語: C
[4] 期限: [2006年01月30日まで]
[5] その他の制限:特にありません。

これでよろしいでしょうか?
942>>934:2006/01/27(金) 00:37:23
>>939ありがとうございます

もう一問お願いしてもよrしいでしょうか?


1. キーボードから10個の実数を配列 double a[10] に読み込み、合計、平均、
及び最大値、最小値を求めて表示するプログラムを作れ。

ヒント: for(i=0;i<10;i++){ printf("a[%d]=??";i); scanf("%lf",&a[i]);}
でa[0],a[1],...,a[9] を入力!!
(次に) saidai=a[0];
そのあと、計算の為にforループを作るが、
(ループの中で) if (a[i]>saidai) saidai=a[i];
は何を表わすか?きっと最大値を求めるプログラム関連だろう。
しくみがわかれば最小値も同様にわかる。

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows Me
 [3.2] すいません、わかりません
 [3.3] 言語: C
[4] 期限: [2006年01月30日まで]
[5] その他の制限:特にありません。
943デフォルトの名無しさん:2006/01/27(金) 00:40:40
ヒントもなにも、答えじゃないか。
944デフォルトの名無しさん:2006/01/27(金) 00:41:11
>>925
>>926
多謝!
ところで908っていうのはどうやってるんですか?
ソース見てもイマイチよくわからない…。
945デフォルトの名無しさん:2006/01/27(金) 00:41:47
>>926>>908 ネタじゃなかったのか・・・sum(v, x)ってv配列のx個を合計・・?
しかし、xは2^n-1までループさせてるよねぇ・・・?

すまん。よくわからん。
946デフォルトの名無しさん:2006/01/27(金) 01:09:11
>>945
たぶん、xをどの荷物を加算するかのフラグ(ビット単位)にしているんだよ。
例えば、x=0b00000011だったら最初と次の荷物を加算するとか。
確かにCらしいね。スキルのない自分はなかなか思いつかないけど。
947デフォルトの名無しさん:2006/01/27(金) 01:09:35
>>945みてじぶんでやってみたけどできません
948デフォルトの名無しさん:2006/01/27(金) 01:28:45
>>946
スキルの無い自分もまだわからない。
今までやっていただいて何なんですが、アルゴリズムの制約にのっとって
もらえると非常にありがたいと言うか。
(n-1個目まで加えたときの結果を用いて、n個目加えたときの組み合わせを作る
って言うのを繰り返す。最適解の値を再帰的に定義して値の小さいところから
順に積み上げる。)
949デフォルトの名無しさん:2006/01/27(金) 01:47:40
>>767-769をお願いします。
ぜんぜん分からん
950デフォルトの名無しさん:2006/01/27(金) 01:57:46
>>930
この前シェルソート作ったからそのプログラムを流用した。
シェルソートを使う意味は全く無いが、気にするな!

#include<stdio.h>
struct data{
char name[128];
int score;
};

int i=0;
void Input(struct data *A,int n);
void ShellSort(struct data *A,int n);
void Output(struct data *A,int n);

int main(){
struct data D[128];

Input(D,11);
ShellSort(D,11);
printf("\n一年三組成績\n");
Output(D,11);
}


951デフォルトの名無しさん:2006/01/27(金) 01:58:36
void Input(struct data *A,int n){
printf("各生徒の名前と成績を入力してください\n");
for(i=0;i<n;i++){
("%d人目",i+1);
printf("名前:"); scanf("%s",A[i].name);
printf("得点:"); scanf("%d",&A[i].score);
}
}

void ShellSort(struct data *A,int n){
int j, k;
int h=1;
struct data damy;

do{h=3*h+1;}while(h<=n);

do{
h=h/3;

for (j=h; j<n; j++){
for (k=j-h; k>=0; k-=h) {
if (A[k].score>A[k+h].score) break;
952デフォルトの名無しさん:2006/01/27(金) 01:59:41
else{
damy=A[k];
A[k]=A[k+h];
A[k+h]=damy;
}
}
}
}while(h>1);
}

void Output(struct data *A,int n){
for(i=0;i<n;i++) printf("%s君 %d点\n",A[i].name,A[i].score);
}
953デフォルトの名無しさん:2006/01/27(金) 02:30:33
n-1個目まで加えたときの結果を用いて、n個目加えたときの組み合わせを作る って言うのを繰り返す。
最適解の値を再帰的に定義して値の小さいところから 順に積み上げる。

・・・うーん。>>914のどこがお気に召さないのだろうか?
穴埋めじゃないから?
954デフォルトの名無しさん:2006/01/27(金) 02:43:34
>>953
あんなヒントなんて、飾りです。偉い人には、それがわからんのです。
955デフォルトの名無しさん:2006/01/27(金) 02:56:37
>>953
>>914は答えが少ないような気が…。
n個のときの最適解が表示されてないんですかね?
956デフォルトの名無しさん:2006/01/27(金) 03:22:15
ネットで書き込むのは初めてなので無作法でしたらすいません。
C言語はまったくの初心者です。
無謀ながら3次元入力装置のデータグローブを作ってみようと、
いろいろなサイトの資料を参考に作ってきたのですが、
グローブからコンピュータにデータを送るC言語のプログラムを見つけまして、
C言語の本を読んでなんとか理解しようとしているのですが、
#include "g_lib.c" というのがどうしてもわからなくて悩んでいます。
どうか、この文がなんなのか詳しく教えて頂けないでしょうか。
957デフォルトの名無しさん:2006/01/27(金) 05:57:57
C言語なら俺に聞け! Part 120
http://pc8.2ch.net/test/read.cgi/tech/1136726279/
958デフォルトの名無しさん:2006/01/27(金) 07:44:17
>>955
してないだけだろ
959デフォルトの名無しさん:2006/01/27(金) 08:20:09
>>948
#include<stdio.h>
#define N 5
#define WMAX 10
int main() {
  int i, j, k, l;
  int w[N] = {2,3,4,5,6}, v[N] = {4,5,8,9,11};
  int D[N+1][WMAX+1], P[N+1][WMAX+1];
  for (k = 0; k <= WMAX; ++k) D[0][k] = 0;
  for (i = 0; i < N; ++i) {
    for (k = 0; k <= WMAX; ++k) D[i+1][k] = D[i][k], P[i+1][k] = 0;
    for (k = 0; k + w[i] <= WMAX; ++k) 
      if (D[i][k+w[i]] >= D[i][k]+v[i]) D[i+1][k+w[i]] = D[i][k+w[i]];
      else D[i+1][k+w[i]] = D[i][k]+v[i], P[i+1][k+w[i]] = 1;
  }
  for (k = 0; k <= WMAX; ++k) { 
    if (!D[N][k]) continue;
    for (i = N, l = k; i-1 >= 0; --i) 
      if (P[i][l]) printf("(%d,%d) ", w[i-1], v[i-1]), l -= w[i-1];
    printf("%d %d\n", k, D[N][k]);
  }
}
960デフォルトの名無しさん:2006/01/27(金) 08:58:23
標準ライブラリを使用せずに,
strcmp()と同等の処理を行える関数shukudai()をつくってください。
お願いします。
961デフォルトの名無しさん:2006/01/27(金) 09:03:19
@テンプレに従いなさい
Aあなたはどこまで考えたの?
962デフォルトの名無しさん:2006/01/27(金) 09:10:05
C/C++の宿題を片付けます 59代目
http://pc8.2ch.net/test/read.cgi/tech/1138320520/
963デフォルトの名無しさん:2006/01/27(金) 09:11:05
てかstrcmpって一致かどうかの判定にしか使ったことないから
正確な機能シラネ
964デフォルトの名無しさん:2006/01/27(金) 09:24:17
>>960
ぐぐった
http://www.bohyoh.com/CandCPP/C/Library/strcmp.html
うまく動くかなんてしらね
965デフォルトの名無しさん:2006/01/27(金) 09:25:21
>963
man 3 strcmp
966デフォルトの名無しさん:2006/01/27(金) 10:03:09
>>890
スルーされてる・・・
ほんとわからなくて困っています。
誰か助けてください。
967デフォルトの名無しさん:2006/01/27(金) 10:15:53
>>960int shukudai(const char *a,const char *b){
while(*a++ == *b++){if(*a=='\0')return 0;}return (*a - *b);}
968デフォルトの名無しさん:2006/01/27(金) 10:17:06
>>966
入出力例が示されてないとめんどくさい
ファイルを読み出すファイルってのがよく分かんない
969デフォルトの名無しさん:2006/01/27(金) 10:17:30
>>966
追記はfopen("filename","a")だよ
970デフォルトの名無しさん:2006/01/27(金) 10:18:35
>>964('A`) <僕を殺して・・・・ |彡サッ
971デフォルトの名無しさん:2006/01/27(金) 10:33:23
>>955
最大の重さ 3 で、重さと価値の組み合わせが(1, 2) (2, 3) (3, 4)のとき
どう動いて欲しいか書いてみてくれ。
1)途中経過でどう出力してほしいのか? プログラムが動いたときの出力と同じに書いてくれ。
2)で、n個のときn-1個の場合の情報を使うっていうのは、1)の場合だとどこをどう使うか書いてみてくれ。
972デフォルトの名無しさん:2006/01/27(金) 11:02:10
>>968
自分もよくわからないんですが、
ファイルをdatで作っておいて、それをfopenとかで読み出すってカンジじゃないんでしょうか・・・
入出力は名前1年齢1電話番号1とかでかまいません。
人数も多かったら3人でかまいません。
申し訳ないんですが、どなたか教えてください。

>>969
ありがとうございます。参考にさせていただきます。
973デフォルトの名無しさん:2006/01/27(金) 11:13:44
>>972
てか微妙に問題の意味がわからない
読み込むならその読み込んだデータはどうするんだ?
974デフォルトの名無しさん:2006/01/27(金) 11:25:55
>>973
すいません。問題を写し間違えていたようです。
正しくは、「10人の名前、年齢、電話番号の入ったファイルを作り、それを読み出す「プログラム」を作れ」
でした。ご指摘の通りでした。申し訳ございません。
ほかのところは確認したところ、写し間違いはしていないようです。
よろしくお願い致します。
975デフォルトの名無しさん:2006/01/27(金) 11:28:45
>>974
いや・・・そこはまあ脳内補完できるんだけど
読み込んでどうするんだってこと・・・それを画面に表示するのか
もしくは追記モードを使わないでwで上書きしろってことなのか
976デフォルトの名無しさん:2006/01/27(金) 11:32:14
教官屑だな
977デフォルトの名無しさん:2006/01/27(金) 11:34:19
後なぁ・・・読み出すって1行文字列として読み込んでそれっきりOKなのか
名前、年齢、電話番号に分解するのか?とかわかんないんだよ
978デフォルトの名無しさん:2006/01/27(金) 11:35:01
ちょっとその教師呼んで来い俺が説教してやる
979デフォルトの名無しさん:2006/01/27(金) 11:53:45
#include<stdio.h>
int main(void){
puts("  _、_\n( ,_ノ` )y━・~~~先生あんた教師向いてないぜ");
return 0;
}
980デフォルトの名無しさん:2006/01/27(金) 12:24:33
コピーするだけでいいならEOFまでputcしちゃうんだが…w
981デフォルトの名無しさん:2006/01/27(金) 12:29:45
ファイルの一番最後にAAでも書いちゃえ(・∀・)
982デフォルトの名無しさん:2006/01/27(金) 12:36:58
プロポーショナルフォントじゃないとAAは正常に出力されない罠
983デフォルトの名無しさん:2006/01/27(金) 12:40:32
#include<stdio.h>
int main(void){
puts("先生あんた教師向いてないぜ :-P");
return 0;
}
984デフォルトの名無しさん:2006/01/27(金) 12:43:34
>>982
コンソールで使えるのそれ?
985デフォルトの名無しさん:2006/01/27(金) 12:57:56
#include <windows.h>
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
MessageBox(NULL,"  _、_\n( ,_ノ` )y━・~~~先生あんた教師向いてないぜ","",NULL);return 0;}


…必死すぎw
986デフォルトの名無しさん:2006/01/27(金) 13:03:24
なんでメッセージBOXやねんw
987デフォルトの名無しさん:2006/01/27(金) 13:07:49
楽だから。
988デフォルトの名無しさん:2006/01/27(金) 13:16:13
>>959
多謝。
>>971
すいません手間かけました。重量ごとの最適解の誤りでした。
989デフォルトの名無しさん:2006/01/27(金) 13:23:31
[1] 授業単元:構造体
[2] 問題文(含コード&リンク):構造体に初期値を入れた後、表示させ、
テストの点数が高い順に並び替えた後を、表示させるプログラムを作っています。
並び替えの部分が上手く作れなくて、困っています。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++6.0
 [3.3] 言語: C++
[4] 期限: 今日中
[5] その他の制限: 表示させる所を関数化、並び替えの部分を関数化する


よろしくお願いします
990デフォルトの名無しさん:2006/01/27(金) 13:43:40
6、4、3、8、1という数字を昇順に並びかえよ。と言う問題が分かりません。
SWAPという並び替えの関数とバブルソートの関数をつかってプログラミングをつくる
のが条件です。あとwhile文は使わずにfor文だけをつかいたいです。
どなたかこの問題を解いて下さいませんか?宜しくお願いします。
991デフォルトの名無しさん:2006/01/27(金) 13:45:41
テンプレ嫁
992デフォルトの名無しさん:2006/01/27(金) 14:02:00
>>989
まず構造体の中身を教えろ
そして何を並び替えるんだ
993デフォルトの名無しさん:2006/01/27(金) 14:03:24
>>989
ソートの問題は既出なのでお断りしてるんです。
994デフォルトの名無しさん:2006/01/27(金) 14:05:00
>>989-990
ヒント:>>664
995デフォルトの名無しさん:2006/01/27(金) 14:14:34
>>990
次スレと両方に書かないでください><
996デフォルトの名無しさん:2006/01/27(金) 14:15:05
産め〜
997デフォルトの名無しさん:2006/01/27(金) 14:15:50
1000
998デフォルトの名無しさん:2006/01/27(金) 14:16:55
1000
999デフォルトの名無しさん:2006/01/27(金) 14:16:57
埋め〜♪
1000デフォルトの名無しさん:2006/01/27(金) 14:17:27
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。