C/C++の宿題を片付けます 56代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 55代目
http://pc8.2ch.net/test/read.cgi/tech/1134128493/
【過去スレ一覧】
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
0002デフォルトの名無しさん
2005/12/21(水) 10:40:240003素人 ◆g5knElKWAw
2005/12/21(水) 12:10:38[2] 問題文:正式な課題文はありません。簡易電卓(三角関数を含めた四則演算が可能)を作成せよ。
簡単に言うと、「1+5-sin30+7-tan15」などの計算ができる電卓です。
繰り返し演算が可能で、終了もできることが条件です。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)??
[3.3] 言語: C
[4] 期限: 12月22日の15:00まで
[5] その他の制限: 九月に始めたばかりです。入門用教科書が半分くらい進みました。
授業中にもらったヒントを元に途中まで
できています。
できたらこれを改良、修正するかたちで作成していただけると助かります。
次のレスに、作成したプログラムを示します。
0004& ◆Jx3uuDAUoo
2005/12/21(水) 12:18:21main(){ float x,y,z;
char mode,function,d;
int fg=0;
scanf("%f%c",&x,&d);
while(1){ printf("計算記号(+,-,*,/)を決定した後、数値を入力して下さい。
また、記号(A)を入力するとモードが切り替わり、三角関数に対応します。
sinは記号s、cosはc、tanは記号tで表し、記号のあとに角度(単位は'度')を入力して下さい。
計算モードを元に戻したい場合は記号(B)を入力して下さい。なお、qで終了します。");
scanf("%c%c",&mode,&d);
scanf("%c%c",&function,&d);
if(fg==0){
switch(mode){ case '+': scanf("%f%c",&y,&d);x = x+y;break;
case '-': scanf("%f%c",&y,&d);x = x-y;break;
case '*': scanf("%f%c",&y,&d);x = x*y;break;
case '/': scanf("%f%c",&y,&d);x = x/y;break;
case 'A': fg=1;break;
default: printf("エラーが発生しました。正しく入力し直して下さい。");
case 'q': exit(1);}
} else {
switch(function){ case 's': scanf("%f",&y);z = y/180.*pi;x = sin(z);break;
case 'c': scanf("%f",&y);z = y/180.*pi;x = cos(z);break;
case 't': scanf("%f",&y);z = y/180.*pi;x = tan(z);break;
case 'B': fg=0;break;
default: printf("エラーが発生しました。正しく入力し直して下さい。");
case 'q': exit(1);
}}
} printf("%f\n",x);}
A、Bを入力することで三角関数に対応できるモードに切り替えるようにしたいのです。
自力だとここが限界です。どなたかよろしくお願いします。
0005デフォルトの名無しさん
2005/12/21(水) 12:42:45[2] 問題文(含コード&リンク):
10個の整数の中から最大のものと最小のものを探す
関数をそれぞれ作成し、メインプログラムで与えた
10個の整数の中の最大値、最小値を求めるプログラム
(合計3個の関数から成る)を作成しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2005年12月31日23:59まで
[5] その他の制限: よろしくお願いします。
0006デフォルトの名無しさん
2005/12/21(水) 12:48:07適当に推測しながら直した。
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define pi 3.14
int main(){
float x,y;char ope;int mode=0;
printf("計算記号(+,-,*,/)を決定した後、数値を入力して下さい。\n\
また、記号(A)を入力するとモードが切り替わり、三角関数に対応します。\n\
sinは記号s、cosはc、tanは記号tで表し、記号のあとに角度(単位は'度')を入力して下さい。\n\
計算モードを元に戻したい場合は記号(B)を入力して下さい。なお、qで終了します。\n");
scanf("%f",&x);
for(;;){printf("%f\n",x);scanf(" %c",&ope);
#define ope2(ch,code) case ch:scanf("%f",&y);code;break
if(mode==0)switch(ope){
ope2('+',x+=y);ope2('-',x-=y);ope2('*',x*=y);ope2('/',x/=y);
case 'A': mode = 1;break;
default: printf("エラーが発生しました。正しく入力し直して下さい。\n");
case 'q': exit(1);
}else switch(ope){
ope2('s',x=sin(y/180.*pi));ope2('c',x=cos(y/180.*pi));ope2('t',x=tan(y/180.*pi));
case 'B': mode = 0;break;
default: printf("エラーが発生しました。正しく入力し直して下さい。\n");
case 'q': exit(1);}}}
0007デフォルトの名無しさん
2005/12/21(水) 12:57:43int min_value(int array[],int size){
if(size==0)return 0;/*Error*/
int min = array[0];
while(--size != 0)if(min > array[size])min = array[size];
return min;
}
int max_value(int array[],int size){
if(size==0)return 0;/*Error*/
int max = array[0];
while(--size != 0)if(max < array[size])max = array[size];
return max;
}
int main(){
int i=10,data[10];
while(i != 0)scanf("%d",&data[--i]);
printf("min=%d\nmax=%d\n",min_value(data,10),max_value(data,10));
return 0;
}
0008デフォルトの名無しさん
2005/12/21(水) 12:58:48(1)は何とか作成できそうなので、(2)をどなたか助けてください
985 名前:デフォルトの名無しさん 本日のレス 投稿日:2005/12/21(水) 08:55:34
[1] 授業単元: ソフトウェア
[2] 問題文(含コード&リンク):
(C、FORTRAN)の代入文が入力データとして与えられたとき、
(1) ポーランド記法に変換して出力する構文解析プログラムを作成する。
(2) 木構造表現に変換して出力する構文解析プログラムを作成する。
ただし、(C、FORTRAN)の代入文は、「単純変数=算術式」であり、算術式は、
単純変数(英字1文字)の演算数と、「+、−、*、/」の4種類の演算子および
「(」,[)]によって表現される任意の数式とする。
「+」、「-」は単純演算子としても使用されるとする。
演算子間の優先順位は{*,/}>{+,-}>{=}とする。
入力された代入文の文法的な誤りはできるだけ検出すること。
例えば、A=B+*C、A=B*(C-(D)) などをエラーとする。
[3] 環境
[3.1] OS: windouws
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:どちらでも可
[4] 期限: 明日の夜まで
[5] その他の制限: なし
宜しくお願いします。。。
0009デフォルトの名無しさん
2005/12/21(水) 12:59:08#include <stdio.h>
int max(int a[]) { int mx=a[0], i; for(i=1;i<10;i++) if(mx<a[i]) mx=a[i]; return mx;}
int min(int a[]) { int mn=a[0], i; for(i=1;i<10;i++) if(mn>a[i]) mn=a[i]; return mn;}
int main(void)
{
int num[] = {3,1,4,1,5,9,2,6,5,3}; //数値データは適当
int i;
printf("Data=[");
for(i=0;i<10;i++) printf("%d ", num[i]);
printf("]\n");
printf("Max = %d\n", max(num));
printf("Min = %d\n", min(num));
return 0;
}
0010デフォルトの名無しさん
2005/12/21(水) 13:15:59ありがとうございます!早速試してみます。
0012デフォルトの名無しさん
2005/12/21(水) 15:11:42「木構造表現」とは具体的にどういう表現を表しているのか
例示してくれ。
0013デフォルトの名無しさん
2005/12/21(水) 16:12:22[2] 問題文(含コード&リンク):
適当な整数が入った二次元配列とヒット数を引数とし
そのヒット数に応じて行番号と数字列を返す関数を作成せよ
引数と実行例
�@func(array[12][3], 3) ←第2引数が3
2,3,4
3,5,9
2,3,4
11,13,6
6,4,9
2,4,3
9,6,4
11,6,13
9,11,4
18,19,20
4,6,9
4,11,9
[結果]
1,3,6 -> 2,3,4
5,7,11 -> 4,6,9
�Afunc(array[12][3], 2) ←第2引数が2
[結果]
4,8 -> 11,13,6
9,12 -> 4,11,9
行番号1,行番号2,... -> 一致した数字列
[3] 環境
[3.1] OS: WindowsXP
[3.2] BorlandC++Compiler
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 2005/12/22 13:30
[5] その他の制限:入力配列はファイルからでもmain関数で代入してもよい
0014デフォルトの名無しさん
2005/12/21(水) 17:36:40[2] 問題文(含コード&リンク):http://making-gold-princessmaki.hp.infoseek.co.jp/510.html
計3問
[3] 環境
[3.1] OS: WindowsXp
[3.2] コンパイラ名とバージョン: V.C 6.0
[3.3] 言語:C++
[4] 期限: 早ければ早いほど助かります。
[5] その他の制限:問題文にいくつか記載されています。
よろしくお願いします。
新スレにつき再掲載。m(__)m
0015デフォルトの名無しさん
2005/12/21(水) 18:18:36の今日の課題をお願いします!死にそう…ぐふっ
0016デフォルトの名無しさん
2005/12/21(水) 19:12:07まぁ、>>1 読めや京大生。
0017教えてください!!
2005/12/21(水) 19:25:54標準入力から入力した文字列の順序をさかさまにして標準出力へ表示するCプログラムを10分で作成せよ。たとえばabcと入力するとcbaと出力する。
0018デフォルトの名無しさん
2005/12/21(水) 19:26:21一つ目だけやった。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=26547
0019デフォルトの名無しさん
2005/12/21(水) 19:27:04{
char *head=str, *tail;
char tmp;
for ( tail=str; *tail && *tail != '\n'; ++tail );
--tail;
while ( head < tail ) {
tmp = *head;
*head = *tail;
*tail = tmp;
++head;
--tail;
}
return str;
}
int main( void )
{
char buf[1024];
while ( fgets( buf, sizeof(buf), stdin ) ) {
printf( "%s", reverse(buf) );
}
return 0;
}
0020デフォルトの名無しさん
2005/12/21(水) 19:31:16#include <stdio.h>
void p() {
int c = getchar();
if (c != '\n') {
p();
putchar(c);
}
}
int main(void) {
p();
return 0;
}
0021教えてください!!もう一度
2005/12/21(水) 19:35:21できればstrlenを使ってできないでしょうか?
>>20 素敵です
0022デフォルトの名無しさん
2005/12/21(水) 19:36:09こっち置いておいた
0023教えてください!!何度でも
2005/12/21(水) 19:39:08voidを使わないでできないでしょうか?
自分は未熟でvoidを知りません。ごめんなさい
0024デフォルトの名無しさん
2005/12/21(水) 19:40:59こんな感じに結果がなれば、いいそうです。
=====実行結果=====
式を入力してください。
A=-B*C+(-D+E)/(E-F)
木構造に変換します。
T1=(#-B)
T2=(T1*C)
T3=(#-D)
T4=(T3+E)
T5=(E-F)
T6=(T4/T5)
T7=(T2+T6)
T8=(A=T7)
お願いします
0025デフォルトの名無しさん
2005/12/21(水) 19:47:470026デフォルトの名無しさん
2005/12/21(水) 19:48:50#include <stdio.h>
#include <string.h>
int main(void)
{
char str[100];
int len;
int i;
printf("文字列を入力してください:");
scanf("%s",str);
len=strlen(str);
for(i=len;i>0;i--){
putchar(str[i-1]);
}
return 0;
}
まぁ問題のレベルから察してやれなかったのも
0027デフォルトの名無しさん
2005/12/21(水) 20:14:30[2] 問題文(含コード&リンク): キーボードから入力した数値の和を求めるプログラムを作成せよ
ただし、和を表示する関数
void print_add(int a, int b)
を必ず利用すること、この問題では関数の中で結果を表示すればよい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C言語
[4] 期限: 12月22日9時まで
この課題だけが解らなくて、何卒よろしくお願いいたします。
0028デフォルトの名無しさん
2005/12/21(水) 20:22:40void print_add( int a, int b )
{
printf( "%d + %d = %d\n", a, b, (a+b) );
}
int main( void )
{
int a, b;
printf( "Input a> " );
scanf( "%d", &a );
printf( "Input b> " );
scanf( "%d", &b );
print_add( a, b );
return 0;
}
002928
2005/12/21(水) 20:25:58思ったんだけどこの時期に出る課題って結構授業の最後のほうのやつだよねぇ。
授業名「オブジェクト指向」でこの時期に >>27 とかいう問題ってどうなんだろう。
今学期中にオブジェクト指向の「オ」にさえたどり着かない予感
0030デフォルトの名無しさん
2005/12/21(水) 20:32:00仕様がようわからん
#include <stdio.h>
void print_add(int a, int b)
{
printf("%d\n", a + b);
}
int main(void)
{
int sum = 0, val;
while (printf("input>"), scanf("%d", &val) == 1) {
print_add(sum, val);
sum += val;
}
return 0;
}
0031デフォルトの名無しさん
2005/12/21(水) 22:22:47[2] 問題文(含コード&リンク):ヤコビ法、ガウスザイデル法、消去法により三元一次方程式及び四元一次方程式を解く
[3] 環境
[3.1] OS: たぶんUNIX
[3.2] コンパイラ名とバージョン: GCC
[3.3] 言語: C
[4] 期限: 明日
プログラムの方はHPをみたりしてできたのですが
考察に書くことが無くて困ってます。
ヤコビ法では解けずガウスザイデル法では解ける方程式が出されています。
何か書くことでいいことあれば教えてください
0032デフォルトの名無しさん
2005/12/21(水) 22:26:45> ヤコビ法では解けずガウスザイデル法では解ける
これが何故か書けば?
0033デフォルトの名無しさん
2005/12/21(水) 22:30:41ありがとうございます
それも書こうと思っていたのですがなぜなのかわからなくて困ってるんです
0034デフォルトの名無しさん
2005/12/21(水) 22:34:56途中経過を出力するようにしてどこで解けなくなっているかを見るとか、
三元一次や四元一次ならアルゴリズムどおりにて計算で追ってみる
こともできるだろう。
0035デフォルトの名無しさん
2005/12/21(水) 22:38:29どれが解決してるのか
よくわからん
0036デフォルトの名無しさん
2005/12/21(水) 22:46:230037デフォルトの名無しさん
2005/12/21(水) 23:42:25再依頼こなけりゃ放置でいいんじゃね?
0038デフォルトの名無しさん
2005/12/21(水) 23:49:36うお
ありがとうございます
これでレポート完成しそうです
0039デフォルトの名無しさん
2005/12/22(木) 02:06:09[2] 問題文:整数係数の2次方程式ax^2+bx+c=0(a≠0)を因数分解するプログラムを作れ。ただし、因数が全て整数値になるものだけとする。整数値にならないものは『不可能』というメッセージを出力すること。
例 a b c
1 2 1 (1x+1)(1x+1)
1 1 1 不可能
3 13 -10 (3x+-2)(1x+5)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: 12月24日
[5] その他の制限:定数a,b,cは、scanf()での入力です。
プログラミングの授業は2年目で、教科書は簡単なものを半分くらいやっています。
0040デフォルトの名無しさん
2005/12/22(木) 04:26:10できた。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=26554
↑"Download as file" のリンクをクリックしてダウンロードしてください
なんかこのスレの課題を解くことで自分の勉強している人がいるみたいだけど、
この課題はおすすめかも。
0041デフォルトの名無しさん
2005/12/22(木) 04:59:24一応根と係数の関係を使ったプログラムも置いておきますね。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1325.txt
0042デフォルトの名無しさん
2005/12/22(木) 06:06:37[2] 問題文(含コード&リンク):
ポインタのポインタ(参照渡し)を引数とする
汎用ロジック関数をC/C++言語でコンパイルできる一つの関数(呼び出し含む)で作れ。
但し、汎用ロジックのため引数の型はvoidを用いる。
[3] 環境
[3.1] OS:Windows
[3.2] VC6
[3.3] 言語: C及びC++
[4] 期限: [無期限]
[5] その他の制限: C/C++でのコンパイルが可能なこと。
0043デフォルトの名無しさん
2005/12/22(木) 06:53:41ここにネタがあるから参考にしてCに書き換えればOK
http://pc8.2ch.net/test/read.cgi/tech/1089719714/781
0044デフォルトの名無しさん
2005/12/22(木) 07:58:07>ポインタのポインタ(参照渡し)を引数とする
>引数の型はvoidを用いる。
どっちなんだよ
0045デフォルトの名無しさん
2005/12/22(木) 09:13:08関数の型はvoidって意味?
0046デフォルトの名無しさん
2005/12/22(木) 09:42:420047デフォルトの名無しさん
2005/12/22(木) 11:07:43[2] 問題文:C++を使い英和辞書を作成せよ。
構造体を用い、要素の検索・追加・削除ができるようにすること。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C++
[4] 期限: 1月中旬まで
[5] その他の制限:
作れと言って放置する授業なので関数などに特に制限はないです。今のところ線形リスト・2分木・ハッシュのどれかを
使用するよう言われています。
0048デフォルトの名無しさん
2005/12/22(木) 11:11:01その場合「引数の型はvoidを用い」はおかしいな
あくまで「引数の型はvoid*を用い」と書くべき
0049デフォルトの名無しさん
2005/12/22(木) 12:00:21[2] 問題文(含コード&リンク):for文を使って1+2+3...+100を計算するプログラムを作成
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: ボーランドC++ Compiler
[3.3] 言語:C++
お願いします。
0050デフォルトの名無しさん
2005/12/22(木) 12:01:33期限は今年までです
0051デフォルトの名無しさん
2005/12/22(木) 12:05:37#include "stdio.h"
main(){
int i,ans;
ans=0;
for(i=1;i<101;i++) ans=ans+i;
printf("ans=%d",ans);
}
0052デフォルトの名無しさん
2005/12/22(木) 12:09:33[2] 問題文(含コード&リンク):あらかじめ指定したHPを開くソフト(先生はランチャーだといっていた
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C++
[4] 期限: ([2005年12月26日15:00まで])
[5] その他の制限:特になし
0053デフォルトの名無しさん
2005/12/22(木) 12:10:09C++ではint main()と書かないといけない。
0054デフォルトの名無しさん
2005/12/22(木) 12:18:12>#include "stdio.h"
C++なら<cstdio>、Cでも<stdio.h>にするべき。
>main(){
>53
>int i,ans;
>ans=0;
int ans = 0;
どちらかと言えばこうだろう(iは後述)。
>for(i=1;i<101;i++) ans=ans+i;
問題が1から100までなんだから、
for (int i = 1; i <= 100; ++i) and += i;
とすべきだろう。101なんてのをわざわざ捻出するのはナンセンス。
>printf("ans=%d",ans);
C++ならストリームを使うべきだがそれはそれとして、
std::printf("ans=%d\n", ans);
だろうな。
>}
return 0;は省略できるとは言え書く習慣つけておこうや。
0055デフォルトの名無しさん
2005/12/22(木) 12:36:45>C++なら<cstdio>、Cでも<stdio.h>にするべき。
>return 0;は省略できるとは言え書く習慣つけておこうや。
この二つは蛇足だと思う。
0056デフォルトの名無しさん
2005/12/22(木) 12:50:550057デフォルトの名無しさん
2005/12/22(木) 13:23:26%cat ahe.c
#include <stdio.h>
typedef enum _ty {
ty_char,
ty_short,
ty_long
} ty;
int logic(void **v, ty t)
{
switch(t){
case ty_char: fprintf(stdout, "c:%d\n", *((char *)*v)); break;
case ty_short: fprintf(stdout, "d:%d\n", *((short *)*v)); break;
case ty_long: fprintf(stdout, "ld:%ld\n", *((long *)*v)); break;
default:
fprintf(stderr, "Illegal type.\n");
}
return 0;
}
0058デフォルトの名無しさん
2005/12/22(木) 13:24:10int main(void)
{
char a = '@';
short b = 32767;
long c = 2147483647;
char *pa = &a;
short *pb = &b;
long *pc = &c;
logic((void **)&pa, ty_char);
logic((void **)&pb, ty_short);
logic((void **)&pc, ty_long);
return 0;
}
%gcc -o ahe ahe.c ; ./ahe
c:64
d:32767
ld:2147483647
%
006140
2005/12/22(木) 14:35:40>>41 のプログラムだと 54x^2-3x-77 = (6x+7)(9x-11) とか
因数分解できないで「不可能」になるよ。
ちゃんとプログラムみてないけど浮動小数点数の誤差とかのせいかな。
006239
2005/12/22(木) 15:20:32何故なんでしょう?やっぱり細かいところになにかあるのかなぁ・・・
わからないですが(汗)
0063デフォルトの名無しさん
2005/12/22(木) 15:29:371から9までの階乗の値を例のように表示せよ。
例)Aの階乗はBです
整数nを与えるとn!を計算して返す関数(適当な名前を決めること)を作成し、
mainから、その関数を呼び出して結果を表示すること。
006440
2005/12/22(木) 15:32:420065デフォルトの名無しさん
2005/12/22(木) 15:33:22>>64 は >>63 に向けてです
0066デフォルトの名無しさん
2005/12/22(木) 15:56:59#include <stdio.h>
int fact(int n)
{
if(!n) return 1;
return n * fact(n - 1);
}
int main(void)
{
int i;
for(i = 1; i < 10; i++)
fprintf(stdout, "%d no kaijou ha %d desu.\n", i, fact(i));
return 0;
}
%gcc -o boke boke.c ; ./boke
1 no kaijou ha 1 desu.
2 no kaijou ha 2 desu.
3 no kaijou ha 6 desu.
4 no kaijou ha 24 desu.
5 no kaijou ha 120 desu.
6 no kaijou ha 720 desu.
7 no kaijou ha 5040 desu.
8 no kaijou ha 40320 desu.
9 no kaijou ha 362880 desu.
%
0067デフォルトの名無しさん
2005/12/22(木) 15:59:22#include <iostream>
struct intp {
int i;intp(int i):i(i){}
intp operator!(){return i?i*!intp(i-1):1;}
operator int&(){return i;}
};
int main()
{
for (intp i(1); i <= 9; ++i)
std::cout << i << "の階乗は" << !i << "です\n";
}
0068デフォルトの名無しさん
2005/12/22(木) 16:13:15[2] 問題文(含コード&リンク)
A=−2 −1 8
−1 5 4
4 8 −2
B=22 −30 x
0 7 23
−14 56 −22
ガウス・ジョルダン法を用いてAの逆行列およびAB=Cを満たす
行列Bを求めてファイルに出力する。Xは任意の数字
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows 2k
[3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: 2005年12月23日
[5] その他の制限: ガウス・ジョルダンを用いることが条件です。
よろしくお願いします。
0069デフォルトの名無しさん
2005/12/22(木) 16:29:50数学は不得意なんだけど、行列Cが定義されていなくて解けるのか?
それとも、Cを以下のように定義して良いのか?
C=c11 c12 c13
c21 c22 c23
c31 c32 c33
0070デフォルトの名無しさん
2005/12/22(木) 17:22:21C=22 −30 x
0 7 23
−14 56 −22
ってことじゃないかな?
0071デフォルトの名無しさん
2005/12/22(木) 17:35:28たぶん、そうですね。
つうか、>>68よそういう大事な所を間違えるなよ!
0072デフォルトの名無しさん
2005/12/22(木) 17:49:29[2] 問題文(含コード&リンク)
(1)
第一項がランダムなアルファベット二文字の文字列
第二項がランダムな三桁の自然数
第三項がランダムな十桁のアルファベットと自然数の混合文字列
な配列を7万行分持つcsvファイルを作成せよ。
(2)
適当な二桁のアルファベット文字列を標準入力で入力した時、(1)で作成したファイルから第一項と入力が一致する行を検索し、
一致する行数とその行の二列目の自然数を列挙して出力せよ
(3)
同様に、適当な三桁の自然数を入力し、一致する行の行数と一列目の文字列を列挙せよ
[3] 環境
[3.1] OS: (Windows/Linux/等々) Unix/Windows xp
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) c
[4] 期限: 2005年12月26日
[5] その他の制限:
授業で習った検索法は禁止とする。(BM法とKMP法を習いました)
(1)はできたので(2)と(3)をお願いします
どうすればいいのかさっぱりで・・・orz
0073デフォルトの名無しさん
2005/12/22(木) 17:56:07(1)で使った構造体もしくはclassを晒せ。
アルファベットは大文字小文字混同か?
0074classはないだろうよ
2005/12/22(木) 18:34:24>(1)で使った構造体もしくはclassを晒せ。
テンプレ書いてくれているんだから読もうね。
0076デフォルトの名無しさん
2005/12/22(木) 19:00:55とりあえず(2)だけ
(3)はこれを僅かに書き換えるだけなので自分でやってくれ。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct{char a[3];int b;char c[11];}csv_dat;
int main(){
int nsize=0,i;
csv_dat*p=NULL;
char buf[80];
FILE*fp=fopen("a.csv","r");
while(p=realloc(p,(nsize+1)*sizeof(csv_dat)),
fscanf(fp," %[^ ,] , %d , %s",p[nsize].a,&p[nsize].b,p[nsize].c)==3
) ++nsize;
scanf("%s",buf);
for(i=0;i<nsize;++i)
if(strcmp(p[i].a,buf) == 0)printf("%d %d\n",i,p[i].b);
return 0;
}
0078デフォルトの名無しさん
2005/12/22(木) 21:05:40[1] 授業単元:プログラミング
[2] 問題文:2点間の距離計算を関数としてプログラムせよ.ただし構造体を引数とし,戻り値は実数であるとする.
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:あした
[5] その他の制限:kannsuuを関数としてreturnで返す。
007978
2005/12/22(木) 21:06:30#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
struct point
{
double x;
double y;
};
struct point data[2];
int i;
double a;
for(i=0;i<2;i++)
{
scanf("%lf",&data[i].x);
scanf("%lf",&data[i].y);
}
for(i=0;i<2;i++)
{
printf("%lf\n",data[i].x);
printf("%lf\n",data[i].y);
}
a=sqrt((data[0].x-data[1].x)*(data[0].x-data[1].x)+(data[0].y-data[1].y)*(data[0].y-data[1].y));
printf("%lf\n",a);
0080デフォルトの名無しさん
2005/12/22(木) 21:20:16#include <stdio.h>
#include <math.h>
#include <string.h>
struct point
{
double x;
double y;
};
double kyori(struct point *a,struct point *b){
return sqrt((a->x-b->x)*(a->x-b->x)+(a->y-b->y)*(a->y-b->y));
}
int main()
{
struct point data[2];
int i;
double a;
for(i=0;i<2;i++)
{
scanf("%lf",&data[i].x);
scanf("%lf",&data[i].y);
}
for(i=0;i<2;i++)
{
printf("%lf\n",data[i].x);
printf("%lf\n",data[i].y);
}
a=kyori(&data[0],&data[1]);
printf("%lf\n",a);
}
0081デフォルトの名無しさん
2005/12/22(木) 21:22:02修正ヨロ
0082デフォルトの名無しさん
2005/12/22(木) 22:22:22[2] 問題文(含コード&リンク):
入りきらないので次の場所に書きます。大変申し訳ありません
[3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ [3.3] 言語:C++
[4] 期限: 12月26日
008378
2005/12/22(木) 22:23:08((data[0].x-data[1].x)*(data[0].x-data[1].x)+(data[0].y-data[1].y)*(data[0].y-data[1].y))
を使ってってできませんかね・・・?
0084デフォルトの名無しさん
2005/12/22(木) 22:29:17意味は全く同じわけだが。
0085デフォルトの名無しさん
2005/12/22(木) 22:29:40自分でやりゃいいじゃん
0086デフォルトの名無しさん
2005/12/22(木) 22:30:20このクラスには値二つが等しいかどうかを返す関数same()があります. templateの特殊化を用いて, Pair::same()が Tがcharもしくはstringのときに大文字小文字を区別しない等しさを返すように書き換えて下さい. 以下の例では, a, d, f, gのsame()がtrueを返すはずです.
#include <iostream>
#include <string>
using namespace std;
template <class T>
class Pair { T fst; T snd;
public: Pair(const T& f, const T& s) {
fst = f; snd = s;}
virtual ~Pair(){}
bool same() { return fst == snd; }};
int main(){
Pair<int> a(1,1);
Pair<int> b(1,2);
Pair<char> c('a','b');
Pair<char> d('a','A');
Pair<string> e("abc","bcd");
Pair<string> f("abc","abc");
Pair<string> g("abc","AbC");
cout << a.same() << endl;
cout << b.same() << endl;
cout << c.same() << endl;
cout << d.same() << endl;
cout << e.same() << endl;
cout << f.same() << endl;
cout << g.same() << endl; return 0;}
008778
2005/12/22(木) 22:30:50double kannsuu(struct point *a,struct point *b)
を書き換えたいんですけど、どうすればいいですか??
0088デフォルトの名無しさん
2005/12/22(木) 22:37:02じゃぁ
kannsuu関数を
double kannsuu(struct point data[]){
return sqrt((data[0].x-data[1].x)*(data[0].x-data[1].x)+(data[0].y-data[1].y)*(data[0].y-data[1].y));
}
にして
main関数の最後から三行目を
a=kannsuu(&data[0]);
これでいける
008988
2005/12/22(木) 22:37:43次からは自分でも頑張ってクレ
0090デフォルトの名無しさん
2005/12/22(木) 22:38:16a=kannsuu(data);
意味論的にはこっち。
009178
2005/12/22(木) 22:39:42ありがとうございました!!
0092デフォルトの名無しさん
2005/12/22(木) 22:41:41アッー!そですね。
ただ、自分もかなり初心者なんでいかにも配列の戦闘アドレスを渡してます的な書き方しないと
錯乱しちゃうんですよね・・・_| ̄|○
0093デフォルトの名無しさん
2005/12/22(木) 22:44:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1326.txt
lexicographical_compareがまずいなら、for文で回せばよい。
0094デフォルトの名無しさん
2005/12/22(木) 22:45:590095デフォルトの名無しさん
2005/12/22(木) 22:52:45[2] 問題文(含コード&リンク)
A=−2 −1 8
−1 5 4
4 8 −2
C=22 −30 x
0 7 23
−14 56 −22
ガウス・ジョルダン法を用いてAの逆行列およびAB=Cを満たす
行列Bを求めてファイルに出力する。Xは任意の数字
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows 2k
[3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: 2005年12月23日
[5] その他の制限: ガウス・ジョルダンを用いることが条件です。
>>68
でCのところをBとしてしまいました。すみません
>>69-71
その通りです。間違えていましたorz
よろしくお願いします。
0096デフォルトの名無しさん
2005/12/22(木) 23:30:06ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1327.txt
比較的新しいgccとかVC7ではtemplate class内での
オーバーロード関数な特殊化もサポートされた気がする。
0097デフォルトの名無しさん
2005/12/23(金) 01:13:52下を参考にしてみたら。(もう、参照済みかな?)
ttp://www.akita-nct.jp/~yamamoto/lecture/2004/5E/linear_equations/how_to_make_GJ/html/
0098デフォルトの名無しさん
2005/12/23(金) 07:08:50IE連動なのか?
それなら、HPのURLうちこんで、IEに入力だな
それでランチャーっていってたのか?
もう少し、詳細ない?
仕様がわかりにくいのは、レスされねえからな
0099デフォルトの名無しさん
2005/12/23(金) 09:09:17教官も×は付けまい
0100デフォルトの名無しさん
2005/12/23(金) 10:04:47ありがとうございます。
これはまだ見ていませんでした。参考にしてみます。
0101デフォルトの名無しさん
2005/12/23(金) 10:49:52ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1329.zip
CIEView::OnInitialUpdate()でURLを指定しろ!
0102デフォルトの名無しさん
2005/12/23(金) 13:14:28データを読み込み2進、8進、10進、16進で表示せよ。
ただし、読み込みはgetchar()で4桁入力。表示はputchar()で必要桁数表示する。
データが0の時処理を終了、データ入力はXXXXとする。
環境
OS: XP
コンパイラ名とバージョン: VC 6.0
言語: C
期限: 無期限
その他の制限:
正直どのように進数変換していけばいいのかわかりません。
int main(void)
{
int dt;
while(1)
{
dt = getchar();
if(!(dt - '0'))break;
putchar(dt);
printf("整数 = %d", dt - '0');
}
return 0;
}
0103デフォルトの名無しさん
2005/12/23(金) 13:20:35そのコードは何?教官が作ったものでそれを利用して作れってことか?
0104102
2005/12/23(金) 14:18:50getcharの戻り値整数を入力数値に一度変換して進数変換するのかなーと思って
即席で作ったコードなんですが、どの道putchar()で変換しろと指定があるので
どうしようかと路頭に迷って作りかけたコードを一応載せていたのです。
多分もっと別な方法があるとは思うんですが・・・。
とりあえず>>102に書いてるコードは無視しててください
0105デフォルトの名無しさん
2005/12/23(金) 14:35:11これは満たしてない?
#include <stdio.h>
#include <string.h>
void to_radix_n(unsigned int x, int n) {
int digit;
if (x / n != 0) {
to_radix_n(x / n, n);
}
digit = x % n;
putchar(digit > 9 ? digit - 10 + 'A' : digit + '0');
}
unsigned int from_input(void) {
unsigned int x = 0, i;
for (i = 0; i < 4; i++) {
x *= 10;
x += getchar() - '0';
}
return x;
}
int main(void) {
unsigned int x;
printf("Enter Number:"); x = from_input(); getchar();
to_radix_n(x, 2); putchar('\n');
to_radix_n(x, 8); putchar('\n');
to_radix_n(x, 10); putchar('\n');
to_radix_n(x, 16); putchar('\n');
return 0;
}
0106105
2005/12/23(金) 14:36:040107105
2005/12/23(金) 14:42:550109デフォルトの名無しさん
2005/12/23(金) 15:01:49ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1331.txt
0110デフォルトの名無しさん
2005/12/23(金) 15:24:22> getchar()
> putchar()
0111デフォルトの名無しさん
2005/12/23(金) 15:27:580112>>105 == >>110
2005/12/23(金) 15:38:13俺は依頼者ではないぞ。ま、どうでもいい話だが。
0113デフォルトの名無しさん
2005/12/23(金) 17:41:050114デフォルトの名無しさん
2005/12/23(金) 17:58:02>>1 嫁
0115デフォルトの名無しさん
2005/12/23(金) 18:08:04[2] 問題文:自然数N、Mが与えられたとき、1からNまでの異なる数字をM個並べる順列組み合わせを全て列挙せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:26日午前11時
[5] その他の制限:N、Mは32bit符号付整数の範囲でよい
例:
N=4、M=3のとき、
123, 124, 132, 134, 142, 143,
213, 214, 231, 234, 241, 243,
312, 314, 321, 324, 341, 342,
412, 413, 421, 423, 431, 432,
などと出力する。
意外と難しくて悩んでいます。よろしくお願いします。
0116デフォルトの名無しさん
2005/12/23(金) 18:24:45113さんの質問(疑問?)は妥当かなと思う。
0117デフォルトの名無しさん
2005/12/23(金) 18:28:38そういえば無期限の問題もちらほら
0118デフォルトの名無しさん
2005/12/23(金) 18:31:31組み合わせが級数的に大きくなりそうだ
0119デフォルトの名無しさん
2005/12/23(金) 19:20:26Nが10以上の数値も有り?
0120デフォルトの名無しさん
2005/12/23(金) 19:25:46Nが10以上の数値も有りです。
とりあえず、
1 2 10
1 2 11
1 2 12
のように間に空白入れて、
一行につき一つの組み合わせを出力して頂いても結構です。
0121デフォルトの名無しさん
2005/12/23(金) 19:28:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1334.c
0122デフォルトの名無しさん
2005/12/23(金) 19:49:18でもうちのPCでコンパイルするとエラーになります。すみません。
1334.c: In function `next_permutation':
1334.c:22: syntax error before `int'
1334.c:25: `i' undeclared (first use in this function)
1334.c:25: (Each undeclared identifier is reported only once
1334.c:25: for each function it appears in.)
0123デフォルトの名無しさん
2005/12/23(金) 20:02:08私の環境ではコンパイルが通りましたけど。
gcc=gcc version 3.3.3 (cygwin special)
0124デフォルトの名無しさん
2005/12/23(金) 20:03:24解決しました。
22-24行を書き換えたらコンパイル出来ました。
int i;
if(size == 0 || size == 1)
return 0;
i = size - 1;
重ね重ねありがとうございます。
これで安心して彼女とセックスできます。
0125デフォルトの名無しさん
2005/12/23(金) 20:06:25>>121 >>123 さんありがとうございます。
0127デフォルトの名無しさん
2005/12/23(金) 20:07:38オマイ、>>121さんが怒るぞ。
彼女とのセックスは、せめて明日に延ばせ。
0129デフォルトの名無しさん
2005/12/23(金) 21:57:55[2] 問題文(含コード&リンク):
(1)下のプログラムで、配列を宣言しないで、calloc関数を使って確保するものに書き換えよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1335.txt
(2)strcpy関数などの文字列操作関数を自分で定義して実行せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
[4] 期限:12月31日
よろしくお願いします。
0130デフォルトの名無しさん
2005/12/23(金) 22:03:11(1)
int n;
-double data[100];
+double * data = calloc(sizeof(double), 100);
double total;
---
}
+free(data);
}
(2)
char * myStrcpy(char * foo, const char * bar)
{
for (int ic = 0; bar[ic] != '\0'; ++ic) {
foo[ic] = bar[ic];
}
return foo;
}
0131102
2005/12/24(土) 01:51:49期限が無期限なのは単位等関係なく、自主的に問題集を解いているからです。
故に授業単元などは記載していませんし、テンプレートの無期限が一番該当していると
判断したので無期限を選びました。
宿題じゃねーよ!と言われればそれまでですが、他にこういうスレがないのでここに投稿しました。
>>105-107
返事がかなり遅れましたが回答ありがとうございました。
再帰については今まで使った事がなかったので解析するのにかなり苦労しましたが
何とか処理の流れが繋がった様な気がします。
0133デフォルトの名無しさん
2005/12/24(土) 01:53:58自主的にやってるならここで聞かずに自力でやればいいじゃまいか
分からなきゃ他の所を先にやればいいじゃまいか
0134102
2005/12/24(土) 02:00:01いや、恥ずかしい話だけどこの問題4日ぐらい悩んだ末にここに投稿した
それに人にやってもらったのをできたからとそのままにしてるんじゃなく
自分で納得いくまでコードを解析してるから勉強になる
まあ、甘えるなボケといわれればそれまでだけど('A`)
だからわからないから速攻ここに投稿したわけじゃない
0135デフォルトの名無しさん
2005/12/24(土) 02:05:17そういうことならスマンカッタ
%o変換指定子つかえばいいじゃまいかと思ったがputcharのみか
普通に手計算で10進→X進の変換するときのを実装すりゃいいんじゃね?
0136デフォルトの名無しさん
2005/12/24(土) 02:14:57俺も以前に3日程悩んでできなかった問題をココで出題したから気持ちわかるよ。
俺も自主的だが、一応課題という事で偽装してたんだけどね。
あと、個人的な事だけど天プレの[1]とか[2]とか付けて欲しいな。
ココの課題も自主勉強のためにやってたりするから、検索し易い。
0137135
2005/12/24(土) 02:48:07ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1337.txt
ついでだから書いてみたが、手抜きしまくってるせいで
びっくりするほどバグありまくるので直してみてくれ
0138デフォルトの名無しさん
2005/12/24(土) 05:38:52N == M のとき
next_permutation内の
if(data[i-1] < data[i]){
とか
swap(&data[i-1], &data[j]);
とかのところで領域外にアクセスor壊してますよ。
0139デフォルトの名無しさん
2005/12/24(土) 06:07:42[2] HEADコマンドを実装せよ
構文head[-Ln][filename]
実現する機能:ファイルの先頭の複数行を画面に出力する。
引数:Ln:出力する行数nを指定する(デフォルトは10行)
[3] 環境
[3.1] OS:WinXP
[3.2] BCC
[3.3] 言語:C
[4] 期限:12/28
基本的なファイル操作のソースならかけるのですが・・・10行をデフォルトにする
方法がわかりません。ポインタをまだ理解できていないので、ファイルポインタの
使いかたもわかってない状況です・・・
大変申し訳ないのですが、どなたか教えていただけますでしょうか・・
0140デフォルトの名無しさん
2005/12/24(土) 06:32:260141デフォルトの名無しさん
2005/12/24(土) 06:51:16そうですね、特にその辺に関しては指示はありませんでした。
0142デフォルトの名無しさん
2005/12/24(土) 07:43:48ほとんど動確とってない。不具合あれば適当に直して。
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
FILE *fp = stdin;
int i, c, line = 10;
for(i = 1; i < argc; i++) {
if(!strncmp(argv[i], "-L", 2)) {
if(sscanf(argv[i] + 2, "%d", &line) != 1) {
fprintf(stderr, "usage: head [-Ln][filrname]\n");
return -1;
}
} else if(!(fp = fopen(argv[i], "r"))) {
fprintf(stderr, "no such file, %s\n", argv[i]);
return -1;
}
}
for(i = 0; i < line && (c = fgetc(fp)) != EOF;) {
if(c == '\n') {i++;}
putchar(c);
}
fclose(fp);
return 0;
}
0143デフォルトの名無しさん
2005/12/24(土) 07:55:23[2] 以下の規則に従い tail コマンドを実装すること。
実現する機能:ファイルの末尾の複数行を画面に出力する。
構文 tail [-n|-f] [filename]
引数:-n 出力する行数 n を指定する。省略時は 10行とする。
引数:-f ファイルをクローズせず、入力が継続される限りプログラムを続行し、出力を続ける。
引数:filename 入力ファイル。省略時は標準入力 stdin とする。
[3] 環境
[3.1] OS:Windows (XP/2000/NT)
[3.2] BCC / gcc / VC 等
[3.3] 言語:C
[4] 期限:12/28
[5] 引数 -n と -f が同時に指定された場合、n行表示後出力を続行する。
0144デフォルトの名無しさん
2005/12/24(土) 12:20:540145デフォルトの名無しさん
2005/12/24(土) 12:39:50そういう疑問を持つ人間か見たいんだろ。
0146デフォルトの名無しさん
2005/12/24(土) 12:50:02>>143
-f指定された場合どうやってプログラム終了するんだよ
EOFに到達したら終了するのか?
filename
なに、stderrじゃなくてstdinに出力しろと?
0147デフォルトの名無しさん
2005/12/24(土) 12:54:040148デフォルトの名無しさん
2005/12/24(土) 14:25:22tail -f については>147だし、stdinについても
>143にちゃんと引き数としてファイルが指定されていないときは標準入力からと書いてあるわけだが。
0149デフォルトの名無しさん
2005/12/24(土) 14:53:46解答出せ
0150デフォルトの名無しさん
2005/12/24(土) 14:57:54指摘ありがとう
訂正版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1338.c
0152デフォルトの名無しさん
2005/12/24(土) 15:32:23146ではない。めんどうならいいや。
0153デフォルトの名無しさん
2005/12/24(土) 17:37:27-fの仕様が意味不明
入力が全部終わらんと、何も表示できんだろ
0154デフォルトの名無しさん
2005/12/24(土) 17:42:32それはUnix系OSのtailコマンドと同じ動作だと思われ。
Windowsにもあったような気もするがWindowsはよーわからん。
0155デフォルトの名無しさん
2005/12/24(土) 18:05:56UNIXコナンドが便利すぎて離れられなくなるかもよ
0156デフォルトの名無しさん
2005/12/24(土) 18:09:04でも課題として提出するのはライセンス的にダメかな。
0157デフォルトの名無しさん
2005/12/24(土) 18:32:242 sin(x)のマクローリン展開からの近似値を計算するプログラムを作成せよ。
sin(π/4)の値を2倍して求めること。
階乗と累乗の計算は各々関数で行うこと。
πの値(例えば3.141592)はプログラムに与える。
3.1 Windows
3.2
3.3 C
4 2005/1/5
5 入出力・変数・演算子・条件判断・計算処理・繰返し処理・配列・文字列・関数呼び出し
よろよしくお願いします
0158デフォルトの名無しさん
2005/12/24(土) 18:35:34配列に保存して処理を行おうと思ったのですが、うまくいきません(´・ω・`)
0159デフォルトの名無しさん
2005/12/24(土) 18:51:43int random_select(int range)
{
int r = range * (rand() / ((double)RAND_MAX + 1));
return r == range ? range - 1: r;
}
void swap(int *p, int *q)
{
int t = *p;
*p = *q;
*q = t;
}
void random_shuffle(int *array, int size)
{
while(size > 1)
{
swap(&array[0], &array[random_select(size)]);
size--;
array++;
}
}
0160158
2005/12/24(土) 18:56:090161デフォルトの名無しさん
2005/12/24(土) 18:58:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1340.txt
「階乗と累乗の計算は各々関数で」ってのが非効率ですが…
教育的配慮なんでしょーかねぇ。
0162159 じゃないけど
2005/12/24(土) 19:05:42C++ なら STL で一行ですよ…
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
const int N = 10;
vector<int> a(N);
for (int i = 0; i < N; i++)
a[i] = i;
random_shuffle(a.begin(), a.end());
for (int i = 0; i < N; i++)
cout << a[i] << endl;
return 0;
}
0163デフォルトの名無しさん
2005/12/24(土) 19:10:08再帰が好きならmy_sinも再帰にすればいいのに......
0164デフォルトの名無しさん
2005/12/24(土) 19:17:000166163
2005/12/24(土) 19:42:31俺も関数型の人じゃないから、
ヘルパ関数を用意する方法しか思いつかないけどなw
double my_sin_helper(double x,double sum,int i)
{
double next = sum + (i % 2 == 0 ? 1 : -1) * my_pow(x, i * 2 + 1) / factorial(i * 2 + 1);
if(sum==next)return sum;
else return my_sin_helper(x,next,i+1);
}
double my_sin(double x)
{
return my_sin_helper(x,0,0);
}
0167デフォルトの名無しさん
2005/12/24(土) 23:36:47http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=26581
できた。
0168デフォルトの名無しさん
2005/12/25(日) 00:28:16先生凄いですね。このソース参考にもらってもいいですよね?
てか張ってあるソース全部コピってるけど平気ですよね。間違いない。
0169デフォルトの名無しさん
2005/12/25(日) 00:31:12"Download as file" っていうリンクをクリック
0170デフォルトの名無しさん
2005/12/25(日) 00:33:45うはっwww先生なんですかこの画期的なシステムはwwww
保存できたんですか?もう興奮しちゃってどうしよう(^ω^;)
0171デフォルトの名無しさん
2005/12/25(日) 02:14:170172デフォルトの名無しさん
2005/12/25(日) 02:30:27そんな宿題ってw
0173デフォルトの名無しさん
2005/12/25(日) 02:54:060174デフォルトの名無しさん
2005/12/25(日) 03:05:230175デフォルトの名無しさん
2005/12/25(日) 03:43:47組んでみたからうpするお。1行が1023文字超えるようなファイルは知ったこっちゃねーお。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1341.txt
0176初心者です。
2005/12/25(日) 05:02:21[2] 問題文(含コード&リンク):順列を生成するプログラムを作成せよ。ただし、実行時に大文字半角英字を1文字入力することとする。例
えば、「C」と入力したらA,B,Cの順列を表示し、「E」と入力したら、A,B,C,D,Eの順列を表示する。
(なお、グローバル変数の利用は認めない。)
[3] 環境
[3.1] OS: WindowsXp
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:12/27
[5] その他の制限:permutation再帰関数を用いる。
よろしくお願いします。
0177デフォルトの名無しさん
2005/12/25(日) 05:30:39permutation再帰関数とは?
0178デフォルトの名無しさん
2005/12/25(日) 05:58:330179デフォルトの名無しさん
2005/12/25(日) 07:45:200180デフォルトの名無しさん
2005/12/25(日) 08:35:20http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1342.txt
関数 try() を permutation() と名前を替える必要があるならそうしてくれ。
0181デフォルトの名無しさん
2005/12/25(日) 11:36:20[2] 問題文(含コード&リンク):
下記templateクラスMyArrayのnumberが0のときは
長さ10の配列を意味するクラスが生成されるようにして下さい
#include <iostream>
using namespace std;
template<class Type, unsigned int number>
class MyArray {
Type data[number];
void check_valid(int ind) {
if (ind < 0 || ind >= (int)number){
cout << "領域外アクセス" << endl;
exit(1); } }
public:
MyArray() {
for(int i=0 ; i < (int)number ; i++) data[i] = Type() }
Type& operator [] (int ind) {
check_valid(ind);
return data[ind]; } };
int main(){
int i;
MyArray<int, 10> a;
for (i=0 ; i < 10 ; i++) a[i] = i*2;
for (i=0 ; i < 10 ; i++) cout << a[i] << endl;
return 0; }
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: ビジュアルスタジオ
[3.3] 言語: C++
[4] 期限: 12月26日
[5] その他の制限: これは型抽象でないtemplateの課題です
0182デフォルトの名無しさん
2005/12/25(日) 11:47:09> [3.3] 言語: C++
…??? ( ゚д゚)
0183デフォルトの名無しさん
2005/12/25(日) 11:50:18#include <iostream>
using namespace std;
template<class Type, unsigned int number>
class MyArray {
Type *data;
void check_valid(int ind){
if (ind < 0 || ind >= (int)number){
cout << "領域外アクセス" << endl;
exit(1);
}
}
public:
MyArray(){
data = new Type[number];
for(int i=0 ; i < (int)number ; i++) data[i] = Type();
}
~MyArray(){ delete[] data;}
Type& operator [] (int ind){ check_valid(ind); return data[ind]; }
};
int main(){
int i;
MyArray<int, 10> a;
for (i=0 ; i < 10 ; i++) a[i] = i*2;
for (i=0 ; i < 10 ; i++) cout << a[i] << endl;
return 0;
}
0184183
2005/12/25(日) 11:52:01#include <iostream>
using namespace std;
template<class Type, unsigned int number>
class MyArray {
Type *data;
void check_valid(int ind){
if (ind < 0 || ind >= (int)number){
cout << "領域外アクセス" << endl;
exit(1);
}
}
public:
MyArray(){
data = new Type[number == 0 ? 1 : number];
for(int i=0 ; i < (int)number ; i++) data[i] = Type();
}
~MyArray(){ delete[] data;}
Type& operator [] (int ind){ check_valid(ind); return data[ind]; }
};
0185183
2005/12/25(日) 11:53:05× data = new Type[number == 0 ? 1 : number];
○ data = new Type[number == 0 ? 10 : number];
0186デフォルトの名無しさん
2005/12/25(日) 11:57:21クラス宣言の部分をこう書き換えるだけで良いじゃん。
なんでわざわざ動的確保?
template<class Type, unsigned int number_>
class MyArray {
enum{number = number_ ? number_ : 10};
0187デフォルトの名無しさん
2005/12/25(日) 12:01:44MyArray() : data(new Type[number == 0 ? 10 : number])
でしょ
0188初心者です。
2005/12/25(日) 12:39:49ありがとうございます。とても助かりました。
0189デフォルトの名無しさん
2005/12/25(日) 12:40:19住所入れる変数ってどれくらい領域確保しとけばOKかな?
0190デフォルトの名無しさん
2005/12/25(日) 12:43:14動的に確保。以上
0192デフォルトの名無しさん
2005/12/25(日) 13:06:330193デフォルトの名無しさん
2005/12/25(日) 14:26:16std::stringやstd::wstringを使っておく。
0194デフォルトの名無しさん
2005/12/25(日) 14:32:01[2] 問題文(含コード&リンク):ファイルからデータ(迷路空間)を読み込む処理と構造体・リストを用いた、
迷路空間を作成せよ。
読み込むデータは右図のような形式であり、 ******
各記号は次の意味を持つものとする。 *8000*
* : 壁 ****0*
0 : 通路 **000*
8 : 通路 & スタート *90*0*
9 : 通路 & ゴール ******
迷路空間は、必ず長方形であることを前提とする。
そして、再帰を用いた迷路空間の探索プログラムも作成せよ。
最短経路と後戻りした記録付き経路のどちらを表示しても構わないが両方表示した方がポイント高し。
[3] 環境
[3.1] OS: (Windowsxp
[3.2] コンパイラ名とバージョン: gcc 2.9 VC 6.0
[3.3] 言語: どちらでも可
[4] 期限: 12/28
[5] その他の制限:特になし。
0195デフォルトの名無しさん
2005/12/25(日) 14:34:17*8000*
****0*
**000*
*90*0*
******
0196デフォルトの名無しさん
2005/12/25(日) 17:58:33> 構造体・リストを用いた、迷路空間
これについて詳しく。
0197デフォルトの名無しさん
2005/12/25(日) 20:09:360198デフォルトの名無しさん
2005/12/26(月) 07:51:34最短経路と後戻りした記録付き経路のどちらを表示しても構わないが両方表示した方がポイント高し。
という意味です。わかりづらくて申し訳ない。。
0199デフォルトの名無しさん
2005/12/26(月) 14:31:41という問題だから
>構造体・リストを用いて、再帰を用いた迷路空間の探索プログラムを作成せよ。
と勝手に解釈を変えるのはまずいでしょ。
0200デフォルトの名無しさん
2005/12/26(月) 15:17:270201デフォルトの名無しさん
2005/12/26(月) 15:28:24いあ、迷路空間を実現するプログラムと
探索プログラムの二つ作れってことでしょう?
>>194を読む限りではそう読み取れる
0202デフォルトの名無しさん
2005/12/26(月) 16:10:050203デフォルトの名無しさん
2005/12/26(月) 16:12:08相談に乗ってやらないでもないから詳しく。
0204デフォルトの名無しさん
2005/12/26(月) 16:16:10相談しちゃう(´;ω;`)
0205デフォルトの名無しさん
2005/12/26(月) 16:20:02漏れは怒りはしない。
多分しないと思う。
しないんじゃないかな。
まちょと覚悟はしておけ。
0206デフォルトの名無しさん
2005/12/26(月) 16:24:01神様!!覚悟しておきます!!出来るだけの荒を減らして
提出します。
0207デフォルトの名無しさん
2005/12/26(月) 16:38:320208デフォルトの名無しさん
2005/12/26(月) 16:56:38どんなコンパイラ使ってるねん
0209デフォルトの名無しさん
2005/12/26(月) 17:01:22どうしても見つかりません!!
1個に抑えましたから平気ですよね・・・・・・( -_-)
問題→ファイル標準入力から読み込み内容を標準出力せよ。
言語→C言語
期日→ありません。
OS winMX
コンパイラ→bcc32
制限→一切ありません。
include <stdio.h>
include <stdlib.h>
int main(void)
{
FILE fp;
int getf,filename;
printf("ファイル名の入力");
scanf("%s",&filename);
if((fp=fopen("filename","r")==NULL){
printf("ファイルオープン失敗");
exit(1);
}
getf = fgetc(fp);
if(!feof(fp))printf("%c",getf);
fclose(fp);
return 0;
}
0210デフォルトの名無しさん
2005/12/26(月) 17:09:17>OS winMX
なめとんのか。まあいいけど。
FILE fp; → FILE *fp;
0211デフォルトの名無しさん
2005/12/26(月) 17:12:50釣れますか?
int getf,filename; → int getf;char filename[80];
0212デフォルトの名無しさん
2005/12/26(月) 17:14:15工エエェェ(´д`)ェェエエ工工
×if((fp=fopen("filename","r")==NULL){
○if((fp=fopen(filename,"r")==NULL){
0213デフォルトの名無しさん
2005/12/26(月) 17:15:16いい感じにワラタ
scanf("%s",&filename); → scanf("%s",filename);
0214212
2005/12/26(月) 17:17:33まぁ良いや。突っ込みどころ多すぎるし
0215デフォルトの名無しさん
2005/12/26(月) 17:18:23うpしたな。
0216デフォルトの名無しさん
2005/12/26(月) 17:19:04すいません・・・1個どころではありませんでした。
OS→MXは焦ってつい。すいません
int型ではなくchar型でしたか!変数名に惑わされましたorz
&演算子も配列ですから必要ないですよね。
ファイルポインタもつけてないし。すいませんでした(´;ω;`)
0217デフォルトの名無しさん
2005/12/26(月) 17:19:51>include <stdlib.h>
この辺が思いっきりネタくさい。
0218デフォルトの名無しさん
2005/12/26(月) 17:20:470219デフォルトの名無しさん
2005/12/26(月) 18:04:59いっぱい釣れて良かったな
0220デフォルトの名無しさん
2005/12/26(月) 18:06:30別にどっちでもいいんでね?
出力の時に気をつければ
>>217
バロスwwww
エラー1個なわけねぇwwww
0221デフォルトの名無しさん
2005/12/26(月) 18:19:06コンパイルエラーで構文エラーってのが一つだったから一個かと。
実際皆さんの指摘でもコンパイルできず、さっきやっと気づき#を
含んでなかったorz
しかも完璧だと思ってたif(!feof(fp))printf("%c",getf); も
無限ループで無理で焦った。でもやっとでけた!!!
ご指摘本当にありがとうございました。
0222デフォルトの名無しさん
2005/12/26(月) 18:30:07表示されたエラーが1個だけでも、実はたくさんある場合もある。
コンパイラはエラーから何とか復帰して続きを見ようとするん
だけど、それでも不可能な場合があるから。
0223デフォルトの名無しさん
2005/12/26(月) 19:12:02ふざけんなゴルァ
だけだったりして……
0224デフォルトの名無しさん
2005/12/26(月) 20:28:53int main()
{
printf("Hello World!\n");
return 0;
}
0225デフォルトの名無しさん
2005/12/26(月) 21:50:20int main()
{
printf("Hello World!\n");
return 0;
}
0226 ◆EFAoij/eso
2005/12/26(月) 21:58:38久々に来ると決まってエサがないねん
0227デフォルトの名無しさん
2005/12/26(月) 22:14:020228デフォルトの名無しさん
2005/12/26(月) 22:16:26質問テンプレに従え
0229デフォルトの名無しさん
2005/12/26(月) 22:17:07従ったら作ってくれるんかいwwww
0230デフォルトの名無しさん
2005/12/26(月) 22:19:34宿題じゃないのか?
0231デフォルトの名無しさん
2005/12/26(月) 22:20:41だからからヤメタwwwwwww奥フカス。
0232デフォルトの名無しさん
2005/12/26(月) 22:25:25どこの学校の宿題だw
0233デフォルトの名無しさん
2005/12/26(月) 23:22:37#include <stdio.h>
int main()
{
puts("(・・)\n) x (\n( Y )\n");
return 0;
}
0234デフォルトの名無しさん
2005/12/26(月) 23:52:48100行以内で書けると教授は言ってました。
0235デフォルトの名無しさん
2005/12/27(火) 00:03:03半勃起した
0236デフォルトの名無しさん
2005/12/27(火) 00:03:370237デフォルトの名無しさん
2005/12/27(火) 00:11:010238デフォルトの名無しさん
2005/12/27(火) 01:35:43[2] 問題文:文字列string1の先頭が文字列string2なら真を返す関数begins(string1,string2)を作成しなさい。
また、この関数をテストするプログラムを作成してください。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2005年12月31日まで]
[5] その他の制限:strncmpでやってはいけないと言われました。よろしくお願いします
0239デフォルトの名無しさん
2005/12/27(火) 02:07:08#include <stdio.h>
#include <string.h>
int begins(const char *string1, const char *string2) {
unsigned char uc1, uc2;
size_t n = strlen(string2);
if (n == 0) return 0;
while (n-- > 0 && *string1 == *string2) {
if (n == 0 || *string1 == '\0') return 0;
string1++; string2++;
}
uc1 = *(unsigned char *)string1;
uc2 = *(unsigned char *)string2;
return uc1 < uc2 ? -1 : uc1 > uc2;
}
int main(void) {
char s1[] = "Hello, world!", s2[] = "Hell", s3[] = "Heaven";
printf("%d\n", begins(s1, s2));
printf("%d\n", begins(s1, s3));
}
0240デフォルトの名無しさん
2005/12/27(火) 02:11:58int begins(const char* string1, const char* string2)
{
for (; *string1 && *string2; ++string1, ++string2) {
if (*string1 != *string2) {
return false;
}
}
return *string2 == '\0';
}
0241デフォルトの名無しさん
2005/12/27(火) 02:15:01すまんが、未だに問題の意図が読み取れん。とりあえず配列に迷路を
読み込んで(最短とは限らないが)ゴールまでの道順を表示するC++の
プログラムを書いてみた(65行)から、参考にしてみてくれ。力になれず
残念だが。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1347.cpp
0242デフォルトの名無しさん
2005/12/27(火) 02:32:01>>240
ありがとうございました。
写して出せば終わりですがまだ期日まであるので
お手本にして自分なりに考えてみます
0243デフォルトの名無しさん
2005/12/27(火) 02:53:18int begins(const char *string1, const char *string2)
{
return strstr(string1, string2) == string1 ;
}
0244デフォルトの名無しさん
2005/12/27(火) 09:35:020245デフォルトの名無しさん
2005/12/27(火) 09:43:40あと、memcmp()でもできるとかってのもあったけど流石にやめておこう。
0246ハル
2005/12/27(火) 10:06:33例)20051227→2+0+0+5+1+2+2+7=19
1+9=10→1+0=1で終了
0247デフォルトの名無しさん
2005/12/27(火) 10:11:48unsigned sum = 0;
for (unsigned ic = 0; ic < sizeof(buf) -1; ++ic) {
sum += buf[ic] - '0';
}
0248デフォルトの名無しさん
2005/12/27(火) 10:13:45sum = sum / 10 + sum % 10;
}
0249デフォルトの名無しさん
2005/12/27(火) 10:50:01マルチ死ね。
そんなクソな問題少し頭ひねっても出来ねえんだったらやめちまえ。
0250デフォルトの名無しさん
2005/12/27(火) 11:07:21あなたの脳みそビチグソ
0251238
2005/12/27(火) 12:25:59strncmpを使うのは構わないので2つの文字列を比較するbegins関数とそれをテストするプログラムを作ればよい事でした
もう一度ご教授してくれないでしょうか?
おねがいします
0252デフォルトの名無しさん
2005/12/27(火) 13:11:58二度と来るな
0253デフォルトの名無しさん
2005/12/27(火) 13:18:510254デフォルトの名無しさん
2005/12/27(火) 13:19:190255デフォルトの名無しさん
2005/12/27(火) 13:27:25本当のことを言ってください
0256デフォルトの名無しさん
2005/12/27(火) 13:32:53正しくは「アイルトン・セナ」の間違いでした
訂正してお詫び申し上げます。
0257デフォルトの名無しさん
2005/12/27(火) 14:18:21ありがとう!
自分ではどうすることもできずに半ば挫折していたけれど、助かりました。
残りの提出期限までに読解してアレンジして行きたいと思います。
0258デフォルトの名無しさん
2005/12/27(火) 15:42:28アレ ジ
今日はF1ネタですか?
0259デフォルトの名無しさん
2005/12/27(火) 17:33:44[2] 問題文:n次の連立方程式の解を求めるプログラムを作成する。
LU分解法とガウスザイデル法それぞれ用いる。
[3] 環境
[3.1] OS:ソラリス8
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2005年1月11日まで]
[5] その他の制限:方程式は外部ファイルから取り込む。
という課題で、一応作ったんですが…http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1355.txt
ファイルオープンでセグメント例外が起きます…ポインタ関連だと思うのですが、どこが問題なのか判りません。
ご教授お願いします。
0260デフォルトの名無しさん
2005/12/27(火) 17:38:35fpが未初期化。
fpをscanfするのに%cを使っているけどたぶん%s
そこより下はやる気が出ないので読んでいない
0261デフォルトの名無しさん
2005/12/27(火) 17:41:35fprintf(stdout,"input filename\n");
scanf("%c",fp);/*ココまでは動く ...(2) */
dataFile=fopen(fp,"r");
(1) ではポインタを宣言しているけれども、ポインタの保持している値は未知だよね。
(1) は char fp[20] ; として (2) は gets(fp) ; とすればいいんじゃないかな。
0262259
2005/12/27(火) 18:31:22>>260
fpの初期化はchar *fp=0でいいんですよね?
>>261
配列を文字列に直す関数ってありますか?
このままだと開けない方に分岐してしまって・・・
0263デフォルトの名無しさん
2005/12/27(火) 18:43:05だいぶ、配列と文字列をごっちゃにしてしまっているようだね。
fprintf (stdout, "input filename\n");
でコンソールに input filename を出力しているのだけれども、
次の scanf が問題で、これからも文字列を読み込むことができるけれどもスペースが来たときにそこで読み込みが終わってしまうから、
gets(fp) としてポインタを渡してファイル名を入力させたほうがいいね、このポインタがもんだいで、ただのポインタじゃあいけない。
配列として char fp[20] ; と確保したものと一緒に生成されたポインタ fp を渡さなくてはならない。
どちらにしろ、ポインタとしての fp は文字列配列 fp の先頭を指さなければならない。
0264デフォルトの名無しさん
2005/12/27(火) 18:51:460265デフォルトの名無しさん
2005/12/27(火) 18:51:58誤解を招く表現があります。
Line:8
間違いがあります。
Line:3
一文が長すぎます。
0266デフォルトの名無しさん
2005/12/27(火) 18:52:25getsよりもfgetsだろ。
0267デフォルトの名無しさん
2005/12/27(火) 18:52:36getsよりもscanf("%19s",fp)のほうが安全じゃね?
# 自分も手を抜くときはgets使うんですけどね
0268デフォルトの名無しさん
2005/12/27(火) 18:54:18fgetsだと改行を除去するのが面倒じゃん。
と言ってもgetsをお勧めできんのは同感。
0269デフォルトの名無しさん
2005/12/27(火) 18:56:27指摘するのは簡単だわな
0270デフォルトの名無しさん
2005/12/27(火) 19:12:530271デフォルトの名無しさん
2005/12/27(火) 19:13:48指摘される側の問題。
0272デフォルトの名無しさん
2005/12/27(火) 19:18:080273デフォルトの名無しさん
2005/12/27(火) 19:19:010274デフォルトの名無しさん
2005/12/27(火) 19:21:47Line:7
誤解を招く表現があります。
Line:8
間違いがあります。
Line:3
一文が長すぎます。
0275デフォルトの名無しさん
2005/12/27(火) 19:51:280276デフォルトの名無しさん
2005/12/27(火) 21:22:080277デフォルトの名無しさん ◆eJHWmx2R0g
2005/12/27(火) 22:19:36[2] 問題文(含コード&リンク):
実数値を入力した変数xの値を下記の表に照らして、nを求める。
ただし、xの値の小数点以下第3桁を四捨五入した値がyの値
また、xからnを求める計算をするときに、if、for、while、switch および !、?演算子を使わない。
yの値 nの値
0.00 〜 0.07 5
0.08 〜 0.11 7
0.12 〜 0.13 6
0.14 〜 0.19 0
0.20 2
0.21 〜 0.29 3
0.30 〜 0.33 1
0.34 〜 0.36 4
0.37 〜 0.41 6
0.42 8
0.43 〜 0.55 3
0.56 9
0.57 〜 0.60 8
0.61 〜 0.64 5
0.65 〜 0.72 7
0.73 〜 0.79 2
0.80 〜 0.83 0
0.84 9
0.85 〜 0.96 1
0.97 〜 1.00 9
0278デフォルトの名無しさん ◆eJHWmx2R0g
2005/12/27(火) 22:20:24[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 特にありません
宜しくお願いします。
0279デフォルトの名無しさん
2005/12/27(火) 23:04:08えーと、テーブルを使って欲しそうな問題だったので
#include<stdio.h>
int main(){
double d;
scanf("%lf",&d);
putchar("55555555777766000000233333333311114446666683333333333333988885555777777772222222000091111111111119999"[(int)(d*100+0.5)]);
putchar('\n');
}
0280デフォルトの名無しさん
2005/12/27(火) 23:14:230281デフォルトの名無しさん
2005/12/27(火) 23:17:58工エエェェ(´д`)ェェエエ工工
0282デフォルトの名無しさん
2005/12/27(火) 23:20:320283デフォルトの名無しさん
2005/12/27(火) 23:22:460284デフォルトの名無しさん
2005/12/27(火) 23:23:390285デフォルトの名無しさん
2005/12/27(火) 23:30:11ただの度数分布表と思われ。
0286279
2005/12/27(火) 23:50:50一応、四捨五入はしてるつもり(0.5を足してintにキャスト)なんだけど何か問題あるっけ?
あと、範囲外アクセスも考えたかったけど、
if文なしじゃ関数ポインタの配列を使って
fn[expr]()とやる方法しか思いつかないので諦めた。
0287デフォルトの名無しさん
2005/12/27(火) 23:55:21小数部を四捨五入してそこだけ見るのかと思ってた・・・
勘違いですた(´・ω・`)
0288デフォルトの名無しさん
2005/12/28(水) 01:23:43俺も同じこと考えてた。
0289デフォルトの名無しさん
2005/12/28(水) 01:50:18そこで assert() ですよ
0290デフォルトの名無しさん
2005/12/28(水) 02:58:40if (value < 0) error("...");
↓
value < 0 || error("...");
課題を見る限りテーブル使うようだけど・・・制限があほらし。
0291r ◆qBT.f4tFkU
2005/12/28(水) 05:04:02[2] 問題文:bmp画像を取り込んで、1ピクセルあたりの輝度分布を求めよ
[3] 環境
[3.1] OS: WindowsXp
[3.2] コンパイラ名とバージョン: V.C 6.0
[3.3] 言語:C++
[4] 期限: 可能な限り早くしろとのこと
[5] その他の制限:取り込む画像は白黒の画像
急に言われて必死に勉強していますが、手がかりさえも掴めず、マジで悩んでいます。
馬鹿丸出しな質問ですいませんが、どなたか助けてください。
0292デフォルトの名無しさん
2005/12/28(水) 05:09:51ttp://www.kk.iij4u.or.jp/~kondo/bmp/
これみながらやってみてはどうか
0293デフォルトの名無しさん
2005/12/28(水) 16:42:51[2] 問題文:各個人の名前、住所、郵便番号を格納するためのファイル形式を設計し、そのファイルを読み
郵送用のラベルを作成するプログラムを作成せよ
[3] 環境
[3.1] OS: WindowsXp
[3.2] コンパイラ名とバージョン: LSI C-86
[3.3] 言語:C言語
[4] 期限: 今年中
[5] その他の制限:特になし
0294デフォルトの名無しさん
2005/12/28(水) 16:55:58つーか、今時intが2バイトなんてやってらんねぇって。
0295デフォルトの名無しさん
2005/12/28(水) 17:04:44ごちゃごちゃ言わないで答え書いて下さい。LSI-Cは私が好きで
使っているわけではありません。
0296デフォルトの名無しさん
2005/12/28(水) 17:19:030297デフォルトの名無しさん
2005/12/28(水) 17:23:34このキャベツ頭が!!!!
で、画面上に出力するだけじゃあかんのか。
0298デフォルトの名無しさん
2005/12/28(水) 17:27:53画面上に出力させるだけで良いらしいです
0299デフォルトの名無しさん
2005/12/28(水) 17:35:22なるじゃないですか?
その場合scanfだと「−」を入力した時点で終了してしまいますよね?
これを入力しても終了させない方法はありますか?
0300デフォルトの名無しさん
2005/12/28(水) 17:36:400301デフォルトの名無しさん
2005/12/28(水) 17:43:160302デフォルトの名無しさん
2005/12/28(水) 17:57:11#include <stdlib.h>
#define NM_MAX 30
#define AD_MAX 200
#define POSTAL 7
#define ELM 100
#define FILE_NAME "" /* ファイル名をここに入力 */
struct {
char Name [NM_MAX] ;
char Address [AD_MAX] ;
char PostCode [POSTAL] ;
} DataBase [ELM] ;
int main (void)
{
short Select ;
char szBuffer [10] ;
FILE *DataFile ;
if ((DataFile = fopen (FILE_NAME, "rb")) == NULL) {
puts ("File Open Error.") ;
exit (1) ;
}
fread (DataBase, sizeof DataBase, 1, DataFile) ;
puts ("何番目のデータを表示するか.") ;
Select = atoi (gets (szBuffer)) ;
printf ("[%d] 名前: %s\n"
" 住所: %s\n"
" 番号: %s\n", Select, DataBase[Select].Name,
DataBase[Select].Address,
DataBase[Select].PostCode) ;
fclose (DataFile) ;
return 0 ;
}
0303デフォルトの名無しさん
2005/12/28(水) 18:03:24intがいやならlongを使えばいいじゃない。
0304デフォルトの名無しさん
2005/12/28(水) 18:14:17これでOKw
0305デフォルトの名無しさん
2005/12/28(水) 18:22:21#つーか、LSI-Cはsscanf()にバグあるしな。
0306デフォルトの名無しさん
2005/12/28(水) 18:25:08scanf() 関係は強力ではあるがやはり邪道な香りがぷんぷんするので
やっぱあまりおすすめな関数じゃないな。
0307デフォルトの名無しさん
2005/12/28(水) 19:21:05ありがとうございます。
年が越せそうです
0308712
2005/12/28(水) 20:49:04END
expr_list END
expr_list:
expression PRINT
expression PRINT expr_list
expression:
expression + term
expression - term
term
この記法の意味するところを教えて欲しいのですが、詳しく説明したサイトは
ないでしょうか?
よろしくお願いします。
0309デフォルトの名無しさん
2005/12/28(水) 20:50:28それはともかく、住所録&印刷かー・・・
#include <stdlib.h>
int main(void) { system("start excel"); return 0; }
たしか、ハガキに直接印刷とかもできるぞ。
0310デフォルトの名無しさん
2005/12/28(水) 20:56:18おそらく、BNF記法の一種
BNF記法でググって適当に理解してくれ。
0311712
2005/12/28(水) 20:57:25消えます。(笑)
0312259
2005/12/28(水) 22:17:41文字列が内部で配列として扱われているって事であってますかね?
今のところ以下のようにしたのですが…
int main(int argc, int *argv[]){
int i,j,k,N;
int s=0;
FILE *dataFile;
char *fp[20];
double **array1,**array2,**array3,*array4;
char line[256];
fprintf(stdout,"input filename\n");
gets(fp);/*ココまでは動く*/
printf("%c",fp);
&dataFile=fopen(fp,"r");
if(dataFile==NULL){
printf("File read error\n");
return 1;/*ココまでで例外発生*/
セグメント例外は起きませんが、ファイルがあるのにdataFile==NULLに分岐してしまいます。
…どうしてでしょう?ファイルを開くのを失敗する要因ってファイルが存在しない以外に思い当たらないのですが…
0313デフォルトの名無しさん
2005/12/28(水) 22:20:060314デフォルトの名無しさん
2005/12/28(水) 23:03:01突っ込みどころが多すぎるな…
0315デフォルトの名無しさん
2005/12/28(水) 23:11:40char *fp[20]
はchar*の要素を持つ配列を宣言してる
>>261にあるように
char fp[20]
でいい
0316デフォルトの名無しさん
2005/12/28(水) 23:15:19そこに書いてある部分だけ直してみた。
int main(int argc, int *argv[]) {
int i, j, k, N;
int s = 0;
FILE *fp;
char *dataFile[20];
double **array[4];
char line[256];
puts("input filename");
fgets(dataFile, sizeof dataFile, stdin);
printf("%s", dataFile);
fp = fopen(dataFile, "r");
if (fp == NULL) {
fputs("File read error\n", stderr);
return 1;
0317デフォルトの名無しさん
2005/12/28(水) 23:15:530318デフォルトの名無しさん
2005/12/28(水) 23:24:00fgetsだと改行を省かないと
それかscanf("%19s",dataFile)
0319259
2005/12/29(木) 00:26:49こうしてみたんですが…
int main(int argc, int *argv[]){
int i,j,k,N;
int s=0;
FILE *fp;
char dataFile[20];
double **array1,**array2,**array3,*array4;
char line[256];
puts("input filename");
fgets(dataFile, sizeof dataFile, stdin);
dataFile[strlen(dataFile)-1]="\0";
printf("%s", dataFile);
fp = fopen(dataFile, "r");
if (fp == NULL) {
fputs("File read error\n", stderr);
return 1;
実行すると以下のように出力されます
input filename
data.dat
data.datFile read error
何が起きてるんでしょうか?
0320デフォルトの名無しさん
2005/12/29(木) 00:32:36'\0'
0321259
2005/12/29(木) 00:57:27その後に
fgets(line,sizeof(line),fp);
sscanf(line,"%d",N);
とつながるのですが、このsscafでもエラーが発生し、停止します。
ビジュアルスタジオのコンパイラは詳細を表示しないのでよくわかりませんが、おそらくセグメント例外なのだと思います。
そんなに変なことをしているつもりはないのですが…
0322デフォルトの名無しさん
2005/12/29(木) 01:05:07工エエェェ(´д`)ェェエエ工工
なぜこんな初歩のミスを
0323デフォルトの名無しさん
2005/12/29(木) 01:10:040324デフォルトの名無しさん
2005/12/29(木) 01:10:38sscanfの引数Nに&がないでしょ。
あー、しかしこのソース、変数名と型が不一致、変数の型が適当だし。
しかも、本人は自分でエラーの原因をろくに考えもせず、すぐ人に聞くし
なんというか、入門書を読んで自分で最低限の勉強をしてください。
ここは貴方のプログラミング相談所じゃなくて宿題スレ。
貴方のソースのバグなんぞ聞きたくないです。
0325デフォルトの名無しさん
2005/12/29(木) 01:12:24[2] 問題文:マトリクス乗算関数を記述し、テストプログラムを作成せよ。関数をテストするだけでなく、実行時間も計測
出来るようにし、さらにポインタを使ってプログラムを最適化し、短縮時間を割り出しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C
[4] 期限:
[5] その他の制限:なし
どう作ればいいのか分からずお手上げ状態です・・・
0326デフォルトの名無しさん
2005/12/29(木) 01:21:36・正方行列だけでいいのか他のもなのか
・そもそも行列のサイズは?
・ってか短縮時間なんてサイズ次第で変わるだろうが
∴課題が曖昧杉
0327デフォルトの名無しさん
2005/12/29(木) 01:22:32“マトリクス”は普通の行列?成分は整数or実数or複素数orその他?
マトリクスのデータ形式は?配列?だとしたら大きさ固定?それとも
汎用的なマトリクスのデータ形式を自分で作るの?
0328デフォルトの名無しさん
2005/12/29(木) 01:41:00↓の動きが分かってから、scanf使うとよろしい。
void set1(int d)
{
d = 10;
}
void set2(int* d)
{
*d = 10;
}
void test(void)
{
int x = 5;
printf("%d",x);
set1(x);
printf("%d",x);
set2(&x);
printf("%d",x);
}
0330デフォルトの名無しさん
2005/12/29(木) 04:09:04どうか皆さんよろしくお願いします。
ほんと、どうしたら良いのか分かりません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1358.txt
0331デフォルトの名無しさん
2005/12/29(木) 04:51:47http://www5.airnet.ne.jp/tomy/cpro/sslib7.htm
ここに行列計算のソースあるから見てみるといいんだお。
0332デフォルトの名無しさん
2005/12/29(木) 07:15:32http://pc8.2ch.net/test/read.cgi/tech/1135125328/194-195
0333a
2005/12/29(木) 10:30:260334デフォルトの名無しさん
2005/12/29(木) 10:38:58[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
スタックを使ってグラフの経路を全て出力するプログラムを作りなさい
グラフのつながりは
A->B A->C B->D B->E C->F C->G C->H D->I E->J E->K G->L
H->M H->N K->O M->O となっています
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc ?
[3.3] 言語: C
[4] 期限:2006年12月31日まで
[5] その他の制限:
出力は A-B-D-I の形にする
経路が出力される順番は問わない
XからYへ辿れるという情報からYからZへ辿れるという情報を検索できれば良い
スタックを使って先に来たデータを後回しで処理(AからはBへもCへも行けるが、
Cを後回しにしてBヘ行く経路を処理する等)
最近の授業ではニュートン法やガウスの消去法、ハノイの塔、逆行列の計算をやりました。
どうか動作確認をお願いします
0335デフォルトの名無しさん
2005/12/29(木) 11:04:52[2] 問題文:ページをフォーマットにしたがって出力するモジュールを記述してください
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:今年中
[5] その他の制限:モジュールには以下の関数が含まれるようにしろとのことです
open_file(char *name) 出力ファイルをオープンする
define_header(char *heading) 見出しテキストを定義する
print_line(char *line) 1行をファイルに送る
page(void) 改ページを行う
close_file(void) 出力ファイルをクローズする
0336デフォルトの名無しさん
2005/12/29(木) 11:56:19>どうか動作確認をお願いします
なんの?
>>335
フォーマットは?
0337デフォルトの名無しさん
2005/12/29(木) 11:58:380338デフォルトの名無しさん
2005/12/29(木) 12:24:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1359.zip
こんなんでいいのか?
0339デフォルトの名無しさん
2005/12/29(木) 12:32:260340デフォルトの名無しさん
2005/12/29(木) 12:57:40そうそう、その問題と同じやつ!
意味が伝わってなかったようなので、
問題をあげてみたんです。
0341デフォルトの名無しさん
2005/12/29(木) 13:04:03ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1360.txt
0342デフォルトの名無しさん
2005/12/29(木) 13:13:27これの3番がわかりません・・・
空欄にソースを入れるらしいのですが・・・
0343デフォルトの名無しさん
2005/12/29(木) 13:14:570344デフォルトの名無しさん
2005/12/29(木) 13:21:50・>>1に則って書け。
→いきなり書かれても回答する方も困る。
・大学名や担当教官(?)名を晒すな。
→大学などに迷惑が掛かる恐れがあると同時に、このスレを通報される可能性が高い。
0345デフォルトの名無しさん
2005/12/29(木) 15:03:23こういう迷路ファイルを
読み込めるようにしなくちゃいけないんですが、
どうしても実行エラーになってしまいますよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1361.txt
0346デフォルトの名無しさん
2005/12/29(木) 15:37:210347デフォルトの名無しさん
2005/12/29(木) 15:42:19[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1363.zip
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual studio.NET 2003
[3.3] 言語: C
[4] 期限: 2006年1月10日23:59まで
[5] その他の制限: 一応、総合問題なので、何を使ってもかまわないと思います。
問題の丸投げになってしまいますが、全然分からないので、よろしくお願いします。
0349デフォルトの名無しさん
2005/12/29(木) 15:48:31無料でやる気が起きない
1000円よこせ
0350デフォルトの名無しさん
2005/12/29(木) 16:34:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1365.txt
0351デフォルトの名無しさん
2005/12/29(木) 16:37:20http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1366.c
0352デフォルトの名無しさん
2005/12/29(木) 16:52:34実行したときに同じファイルにmeirodata.txtを入れても
file read error になっちゃうんですよ
0353341
2005/12/29(木) 17:04:31'void*' から非 'void' 型への変換には明示的なキャストが必要です。
って出ます。
if(!(*w = malloc(sizeof(struct box)))) { ←この部分です
if(!(*w = (box *)malloc(sizeof(struct box))))
ってして実行すると上手くいきますが、
ファイルを読み込むと「問題が発生したため..」って出てしまいます。
0354デフォルトの名無しさん
2005/12/29(木) 17:08:43fopenでこけてるだけじゃないか。meirodata.txtの置き場所を間違ってるだけじゃないの?
>>353
そりゃすまんかった。うちのコンパイラじゃ警告もエラーも出なかったもんで。
0355デフォルトの名無しさん
2005/12/29(木) 17:10:15なんでJavaやねん
0356352
2005/12/29(木) 17:23:35ファイルを読み込むと「問題が発生したため..」って出ますね。
0358デフォルトの名無しさん
2005/12/29(木) 18:41:250359デフォルトの名無しさん
2005/12/29(木) 18:43:010360352
2005/12/29(木) 18:46:46今まで上手くいかなかったのは、
「迷路データに改行がない」ためでした。
迷惑かけてすいません。
0361デフォルトの名無しさん
2005/12/29(木) 18:56:50というバグもあるな
0362デフォルトの名無しさん
2005/12/29(木) 18:58:22>>346 が
それだな
0364デフォルトの名無しさん
2005/12/29(木) 19:06:440365c++初級者
2005/12/29(木) 19:08:53そのための問題を出してください。
0366デフォルトの名無しさん
2005/12/29(木) 19:10:320367デフォルトの名無しさん
2005/12/29(木) 19:11:100368c++初級者
2005/12/29(木) 19:14:11すれ違いのようなので、去ります。
0369デフォルトの名無しさん
2005/12/29(木) 19:15:49[2] 問題文(含コード&リンク): 下記の通りです
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc/VC等
[3.3] 言語: C++
[4] 期限: 2005年12月29日20:00まで
[5] その他の制限:特になし
カンマ区切りでコマンドライン引数から与えられた数列を利用して
合計値を求めるプログラムを以下の仕様に基づき作成せよ。
1、起動関数 main:合計計算クラスを使い、引数の数列を合算する
2、合計計算クラス execメソッド:calcメソッドを使い数列を合計し、OutputAnswerクラスを使って結果を出力する
calcメソッド:数列の合計を計算する
3、計算結果出力クラス answerメンバ:計算結果、setAnswerメソッド:計算結果をanswerにセットする
displayメソッド:計算結果を画面表示する
お願いします。
0370デフォルトの名無しさん
2005/12/29(木) 19:18:07数値は実数?整数?
0371デフォルトの名無しさん
2005/12/29(木) 19:20:53$ ./hoge 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
55
$
こんな風になればよいとおもいます
よろしくおながいします
0372デフォルトの名無しさん
2005/12/29(木) 19:22:29[2] 問題文(含コード&リンク): 下記の通りです
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C++
[4] 期限: 2005年1月10日まで
[5] その他の制限:特になし
スタックを使った経路検索の問題です。
ttp://pl.eek.jp/up/uploader/src/up1627.zipで拡張子はpdfに変えてください。
お願いします
0373デフォルトの名無しさん
2005/12/29(木) 19:22:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1367.txt
興味があったのでやってみた
0374372
2005/12/29(木) 19:24:14の間違いでした。
本気で分からないんで、よろしくお願いします。
0375デフォルトの名無しさん
2005/12/29(木) 19:29:451. コマンドライン引数がスペース区切りかどうかでかなり変わってくる。
2. どのようなクラスを作るか明確でない。
3. どのようなメンバを持つか明確でない。
0376デフォルトの名無しさん
2005/12/29(木) 19:35:10>>373
0377デフォルトの名無しさん
2005/12/29(木) 19:38:04適当に書いてみた。1レスに詰めるために少し圧縮気味
#include<iostream>
#include<sstream>
#include<numeric>
#include<string>
class OutputAnswer{int answer;public:
void setAnswer(int answer){this->answer = answer;}
int getAnswer(){return this->answer;}
void display(){std::cout << answer << std::endl;}};
class Calc{public:
int calc(int argc,char**argv){
std::istringstream in(std::accumulate(argv+1,argv+argc,std::string()));
int sum=0,val;for(char ch;in >> val;in >> ch)sum += val;
return sum;}
void exec(int argc,char**argv){
OutputAnswer o;
o.setAnswer(calc(argc,argv));
o.display();
}};
int main(int argc,char**argv){Calc c;c.exec(argc,argv);}
0378デフォルトの名無しさん
2005/12/29(木) 19:38:150379347
2005/12/30(金) 03:06:18かなり面倒な問題だと思いますが、どうかよろしくお願いします。
0380デフォルトの名無しさん
2005/12/30(金) 03:11:38お前様は他人の置いた怪しげなアーカイブに入った怪しげなワードファイルを開けと申されるのか。
0381デフォルトの名無しさん
2005/12/30(金) 03:13:26マインスイーパなら7行(だっけ?)プログラムスレにあった気がするから
それを改造でもしたらいいんじゃね?
ライフゲームは面白そうだからちょっとやってみるが
それと>>380の言う通り
テキストとかLaTeXとかでうp汁
0382デフォルトの名無しさん
2005/12/30(金) 11:38:31[2] 問題文(含コード&リンク):下記の通りです
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C言語
[4] 期限: 2006年1月2日まで
[5] その他の制限: 特になし
乱数を利用したコンピュータとのジャンケンゲームを作成せよ。
また5回連続ジャンケンを行って、最終的な勝敗を表示せよ。
ご助力お願いします。
0383382
2005/12/30(金) 11:46:42問題文中の「また5回連続ジャンケンを行って、最終的な勝敗を表示せよ。 」を
「また5回連続ジャンケンを行い、最終的な勝敗を表示するプログラムを作成せよ」に変えてください。
スレ汚し申し訳ありません。
0384デフォルトの名無しさん
2005/12/30(金) 11:47:43めんどうくせーなぁ程度でこのスレ利用されてる希ガス
0385デフォルトの名無しさん
2005/12/30(金) 12:01:24食指の動かない問題はスルーで良いだろ。
別に義務じゃないし。
0386デフォルトの名無しさん
2005/12/30(金) 12:40:20少し不真面目なじゃんけん
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(){
int i,t,k;
char* a[]={"グー","チョキ","パー"};
char* b[]={"あなたの負けです","引き分けです","あなたの勝ちです"};
int count[3]={0};
srand(time(NULL));
for(i=0;i<5;++i){
puts("あなたの出す手を入力してください。");
for(t=0;t<3;++t)printf("%-6s -> %d (mod 3)\n",a[t],t);
scanf("%d",&t);
++count[k = rand()%3];
printf("あいての出した手は%sです\n%s\n",a[(k+t+2)%3],b[k]);
}
printf("勝ち %d回\n負け %d回\n引き分け %d回\n",count[2],count[0],count[1]);
}
0387デフォルトの名無しさん
2005/12/30(金) 13:50:58え?そういう用途でここ利用するんでしょ?
俺も学生のときはここに宿題丸投げしてから、女の子と遊んでたよ。ww
帰ってくると大体できてるんで大助かりwww
おかげで充実した学生生活をおくれました。
童貞君たちご苦労様といいたい。
0388デフォルトの名無しさん
2005/12/30(金) 13:56:21こういう投稿を見ると、わざと間違えた解答を書いて、困らせて
やりたくならないか?
0389デフォルトの名無しさん
2005/12/30(金) 14:10:15正確わるー
0390デフォルトの名無しさん
2005/12/30(金) 14:11:53正直、お前は一体何様?と言いたい。
それならこっちにも考えがあ(ry
0391デフォルトの名無しさん
2005/12/30(金) 14:25:02え?LinuxだからEXEは困る?そんなのこちらの知ったこっちゃない。
0392デフォルトの名無しさん
2005/12/30(金) 14:32:08ま、>>387は歪んだ性格してるとは思うけど、放置で良いじゃん。
0393デフォルトの名無しさん
2005/12/30(金) 14:33:480394デフォルトの名無しさん
2005/12/30(金) 20:10:15[2] 問題文(含コード&リンク):下記参照
[3] 環境
[3.1] OS:とくになし
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2005年12月31日まで
[5] その他の制限: 特になし
1と0とその他の文字(スペース等)が繰り返し現れる文字列において、
1と0の部分のみ抽出後、先頭から8bit毎に1オクテットとしてまとめ、
ファイルに出力するプログラムを作ってください。
例:
適10当000に01010ならんで1000いても001000001必要な部分だけ0110集めます11001
-> 82 A0 82 D9
->ファイルの中身は「あほ」になります。
0395デフォルトの名無しさん
2005/12/30(金) 21:04:30ファイルへの出力は適当にリダイレクトしてくれ
#include<stdio.h>
int main(){
int n=0,c,t=0;
while((c=getchar())!=EOF)
if(c-'0'<=1u) t = t+t+c-'0',++n&7 || putchar(t);
return 0;
}
0396デフォルトの名無しさん
2005/12/30(金) 22:43:550010000000111100011100110111010001100100011010010110111100101110
0110100000111110000010100000101001101001011011100111010000100000
0110110101100001011010010110111000101000011101100110111101101001
0110010000101001000010100111101100001010000010010110100101101110
0111010000100000011011100010000000111101001000000011000000101100
0010000001110100001000000011110100100000001100000010110000100000
0110001100111011000010100000100101110111011010000110100101101100
0110010100101000001010000110001100100000001111010010000001100111
0110010101110100011000110110100001100001011100100010100000101001
0010100100100000001000010011110100100000010001010100111101000110
0010100100001010000010010000100101101001011001100010100001100011
0010000000101101001000000010011100110000001001110010000000111100
0011110100100000001100010111010100101001001000000111010000100000
0011110100100000011101000010000000101011001000000111010000100000
0010101100100000011000110010000000101101001000000010011100110000
0010011100101100001000000010101100101011011011100010000000100110
0010000000110111001000000111110001111100001000000111000001110101
0111010001100011011010000110000101110010001010000111010000101001
0011101100001010000010010111001001100101011101000111010101110010
01101110001000000011000000111011000010100111110100001010
0397347
2005/12/31(土) 02:07:22すいません。ワードにしたのは、説明文に図が入っていたからで、アーカイブに入れたのは、そのままではうp出来なかったためです。
問題はこんな感じです。
よろしくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1370.txt
0398デフォルトの名無しさん
2005/12/31(土) 03:25:09>>350-351
0399デフォルトの名無しさん
2005/12/31(土) 03:50:48[2] 問題文(含コード&リンク):アラインメント
http://briefcase.yahoo.co.jp/bc/c_gengo_gyo/lst?&.dir=/&.src=bc&.view=l
[3] 環境
[3.1] OS: (Windowsxp)
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語:どちらでも可
[4] 期限:2006年1月1日
[5] その他の制限: なし。
急ですいません。ソースファイルはレベル別で1・2・3とあります。
可能なものでお願いします。
0400デフォルトの名無しさん
2005/12/31(土) 07:17:01[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1371.txt
[3] 環境
[3.1] OS:Windowsxp
[3.2] Borland C++
[3.3] 言語: どちらでも(できればC)
[4] 期限: ([2006年1月5日まで]
[5] その他の制限: 多分ないですが、基礎しか習ってないです
0401デフォルトの名無しさん
2005/12/31(土) 08:08:39#include <stdio.h>
#include <stdlib.h>
int main(){
int i;
for(i=0;i<5;i++){
printf("%sを出して下さい\n",rand()>RAND_MAX/2?"ぐー":"ぱー");
}
printf("ごめんなさい。5回すべて私の負けでした。\n");
return 0;
}
0402デフォルトの名無しさん
2005/12/31(土) 10:08:49_( ・ω・) (・ω・ )
三(⌒), ノ⊃ (>>401) はいはいわろすわろす
 ̄/ /) ) | | |
. 〈_)\_) (__(___)
∧_∧ .∧_∧
( ・ω・) (・ω・ )
≡≡三 三ニ⌒)>>401) はいはいわろすわろす
/ /) )  ̄.| | |
〈__)__) (__(___)
∧_∧ ,__ ∧_∧
( ・)ノ ):;:;)ω・)
/  ̄,ノ'' >>401 ) はいはいわろすわろす
C /~ / / /
/ / 〉 (__(__./
\__)\)
ヽ l //
∧_∧(⌒) ―― ★ ―――
( ) /|l // | ヽ はいはいわろすわろす
(/ ノl|ll / / | ヽ
(O ノ 彡'' / .|
/ ./ 〉
\__)_)
0403デフォルトの名無しさん
2005/12/31(土) 10:55:24/* 1 */
#include <stdio.h>
int main(){
int r,h;
float S,V;
printf("input r : ");scanf("%d",&r);
printf("input h : ");scanf("%d",&h);
S=3.1416*2*r*h + 2*r*r*3.1416;
V=r*r*3.1416*h;
printf("S=%f.\n",S);
printf("V=%f.\n",V);
return 0;
}
/* 3 */
#include <stdio.h>
int main(){
int n1,n2;
printf("input n1 : ");
scanf("%d",&n1);
printf("input n2 : ");
scanf("%d",&n2);
if(n1*n2%12==0)
printf("%d*%dは12の倍数です。\n",n1,n2);
else
printf("%d*%dは12の倍数じゃないよ。\n",n1,n2);
return 0;
}
0404デフォルトの名無しさん
2005/12/31(土) 12:54:10}と
{
をお忘れなく
0405デフォルトの名無しさん
2005/12/31(土) 13:50:52エラーになります。
0406デフォルトの名無しさん
2005/12/31(土) 14:02:382 と 4 の問題は今年中には書き込むからまってろ
0407デフォルトの名無しさん
2005/12/31(土) 14:11:46さらっとレスしたらいいのに…
0408デフォルトの名無しさん
2005/12/31(土) 15:01:37[2] 問題文:HEADコマンドを実装せよ。実現する機能は、ファイルの先頭の複数行を画面に出力する。
HEADコマンド構文head[-Ln][filenname]
引数は、Ln。出力する行数を指定する
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン:BCC
[3.3] 言語: C
[4] 期限: 2006/1/5
0409デフォルトの名無しさん
2005/12/31(土) 15:03:32#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char *argv[])/*パラメーターを一個ずつ渡すようにする*/
{
FILE *fopen(char *name ,char *mode);
FILE *fp = stdin;
int i,c,line = 10;
for(i = 1;i < argc;i++)
{
if(!strncmp(argv[i],"-L",2))
{
if(sscanf(argv[i] + 2,"%d",&line)!= 1)
{
fprintf(stderr,"入力フォーマット:head[-Ln][filename]\n");/*入力ミス時の表示*/
exit (1);
}
}else if(NULL == (fp = fopen(argv[i],"r")))
{
fprintf(stderr,"ファイルが見つからなかった>%s\n",argv[i]);/*該当ファイルが見つからなかった場合の処理*/
exit (1);
}
}
0410デフォルトの名無しさん
2005/12/31(土) 15:04:28for(i = 0;i < line && (c = fgetc(fp)) != EOF;i++)
{
if(c == '\n')
{
i++;
}
putchar(c);
}
fclose(fp);
fflush(stdin);
getchar();
return 0;
}
とここまでコーディングができたんですが、実行してみるとどうも指定した分だけの文字数しか出力
されてこないんです。行数を指定した分だけ表示させるにはどうしたらよいのでしょうか?
0411デフォルトの名無しさん
2005/12/31(土) 15:05:430412デフォルトの名無しさん
2005/12/31(土) 15:11:430413デフォルトの名無しさん
2005/12/31(土) 15:12:22for分のi++削れ。
0414デフォルトの名無しさん
2005/12/31(土) 15:13:46for文でfor(...;...;i++)にしているよ。
癖でi++を書く気持ちは分からなくはないけど、そこでのインクリメントは不要
0415デフォルトの名無しさん
2005/12/31(土) 15:23:01#include<stdio.h>/* 2 */
int main(void){
int total=1000,r,pb=210,pc=105,b=0,c=0;
while(pb*b<total){
while(pb*b+pc*c<total){
r=total-(pb*b+pc*c);
if(b) printf("ハンバーグ %dつ ",b);
if(c) printf("コーヒー %d杯 ",c);
if(b|c) printf("で釣り %d円\n",r);
c++;
}
c=0,b++;
}
return 0;
}
if(n1*n2%12==0) /* 3 修正*/
↓
if(((n1%12)*(n2%12))%12==0)
※n1=1000005 n2=1000004にして確かめてみよう
4 while以降を下のようにして {} の対応があっているか確認しる
for(i=0;i<5;i++){
scanf("%d",&n);
sum=sum+n;
printf("%d個のデータの合計=%d\n",i+1,sum);
}
}
0416デフォルトの名無しさん
2005/12/31(土) 16:31:19>>142を態々、劣化させたようなソースだな。
0417デフォルトの名無しさん
2005/12/31(土) 17:10:38[2] 問題文:リンクリストの要素を削除する関数を記述せよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:BCC
[3.3] 言語: C
[4] 期限: 2006/1/6
ただ一言[2]だけを言い渡されました、Cはド素人で何をどうすればよいのか分かりません、どうかよろしくお願いします
0418デフォルトの名無しさん
2005/12/31(土) 17:14:16リンクリストの構造体の定義は?
定義が無いなら勝手に定義して書くがそれで良いのか?
0419デフォルトの名無しさん
2005/12/31(土) 17:22:18これやっておる人いるか?
0420デフォルトの名無しさん
2005/12/31(土) 17:45:06真面目に話を聞いていたつもりですが他に条件のような物は言われていなかったので
自由にしてもらって構わないと思います。
0421デフォルトの名無しさん
2005/12/31(土) 18:09:48一応、単方向リストと仮定して書いた。
もし、要求しているのが双方向なら書き直すわ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1372.c
0422デフォルトの名無しさん
2005/12/31(土) 19:03:38単方向で大丈夫のようです。ありがとうございました
0423C初心者
2005/12/31(土) 19:48:15このプログラムがコンパイルうまくとおりません
特に課題とかではなく教科書のプログラム例を
そのまま入力して走らせております。
エラー内容 不明です(エラー内容がなぜか文字化けしてしまい)
使用ツールcygwin
OS winXPです。
0424C初心者
2005/12/31(土) 19:50:46すみません
0425C初心者
2005/12/31(土) 20:42:20よろしくお願いします。
0426デフォルトの名無しさん
2005/12/31(土) 21:13:12void sort(int date[],char name[][20],int n)
void sort(int data[],char name[][20],int n)
swap(&date[i],&date[j]);
swap(&data[i],&data[j]);
printf("%2d:%-8s%4d\n",i,name[i],heigt[i]);
printf("%2d:%-8s%4d\n",i,name[i],height[i]);
0427347
2006/01/01(日) 01:05:12350はJavaですし、351はwindows.hを用いているので、コンソールでは出来ません。
すみませんが、本当によろしくお願いします。
マインスイーパーに関しては、コンソール画面に”窓”を表示させる方法が分かれば、どうにかなると思うのですが・・・
0428デフォルトの名無しさん
2006/01/01(日) 04:28:01□□□
□□□
□□□
こんなんでいいじゃん
0429デフォルトの名無しさん
2006/01/01(日) 04:54:51[2] 問題文(含コード&リンク): 下記参照
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++
[3.3] 言語:C言語
[4] 期限:2006年1月11日15時まで
[5] その他の制限: 特になし
While文を用いて次のように表示するプログラムを作りなさい。
(1)
○○○○○○○○○
○○○○○○○
○○○○○
○○○
○
(2)
*
***
*****
*******
*********
(3)
*
○○
***
○○○○
*****
…
○○○○○○○○○○
0430デフォルトの名無しさん
2006/01/01(日) 05:31:19[2] 問題文(含コード&リンク): 下記参照
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++
[3.3] 言語:C言語
[4] 期限:2006年1月11日15時まで
[5] その他の制限: 特になし
キーボードから0〜9の数字をでたらめに打つとき、
各文字の出現頻度を答えなさい。ただし、文字数は
10〜20文字に制限して良い。
例)
Input 10 Numberrs(from 0〜9!)
【ユーザー入力部】(1個毎にEnter Keyを押す形で入力)
1234543210
↓
【プログラム表示部】
0は1個です
1は2個です
2は2個です
3は2個です
4は2個です
5は1個です
6は0個です
7は0個です
8は0個です
9は0個です
0431デフォルトの名無しさん
2006/01/01(日) 05:38:19[2] 問題文(含コード&リンク): 下記参照
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++
[3.3] 言語:C言語
[4] 期限:2006年1月11日15時まで
[5] その他の制限: 特になし
(1)「2進数」⇔「10進数」変換するプログラムを作りなさい。
(2)また、「16進数」に変換できるようにプログラムを拡張しなさい。
(3)さらに、「x進数」に変換できるようにプログラムを拡張しなさい。
0432デフォルトの名無しさん
2006/01/01(日) 06:10:39[2] 問題文(含コード&リンク): 下記参照
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++
[3.3] 言語:C言語
[4] 期限:2006年1月11日15時まで
[5] その他の制限: 特になし
ゲーム「1H1B」を作りなさい。
(1)システム:あらかじめ4桁の数を決める(乱数でも可)
(2)ユーザー:キーボードから4桁の数を入力
(3)システム:入力された数と(1)で決めた数が場所・数ともに一致
していれば「H」、数のみ一致していれば「B」と判定する。
【例】(決めた数)1234、(入力)1546なら「1H1B」
(決めた数)1234、(入力)1844なら「2H0B]
(Hit優先、3桁目の4は"B”扱い)
(4)(2)・(3)の作業を当たるまで繰り返し、何回目で当てるか(4Hで終了)判定する。
※余分な入力(%や改行など)を受け付けないように改良せよ。
0433デフォルトの名無しさん
2006/01/01(日) 06:16:20[2] 問題文(含コード&リンク): 下記参照
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++
[3.3] 言語:C言語
[4] 期限:2006年1月11日15時まで
[5] その他の制限: 特になし
キーボードから入力した数(入力後Enterを押すものとする)
を順次昇順に表示するプログラムを作成せよ。
0434デフォルトの名無しさん
2006/01/01(日) 06:27:38[2] 問題文(含コード&リンク): 下記参照
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++
[3.3] 言語:C言語
[4] 期限:2006年1月11日15時まで
[5] その他の制限: 特になし
電卓を作りなさい。
(1)基本入出力部分の作成:「数値」、「演算子(+,-,*,/,%)」
を分けて読込む。
(2)計算部分の作成(メインルーチン)
(3)演算子の優先度を考慮する。また、カッコを使えるように
改良する。
(4)エラー処理を行う。数式以外の文字や、間違った数式に"Wrong Number!"
とメッセージを出す。
0435デフォルトの名無しさん
2006/01/01(日) 08:35:16#include<stdio.h>
int main(void){
int a[10]={0},i=0;
char b,c[21];
printf("Input 10 Numberrs(from 0〜9!) ");
scanf("%s",c);
while(c[i]){
b=c[i++]-'0';
if(b>=0 || b<=9) a[(int)b]++;
}
for(i=0;i<10;i++)
printf("%dは%d個です\n",i,a[i]);
return 0;
}
0436デフォルトの名無しさん
2006/01/01(日) 09:13:10/* 2 */
#include <stdio.h>
int main(){
int var_h, var_c, var_m;
printf("1個210円のハンバーグを何個買うだ\n");
scanf("%d",&var_h);
printf("1杯105円のコーヒーを何杯買うだ\n");
scanf("%d",&var_c);
var_m=1000-((210*var_h)+(105*var_c));
printf("おつりは %d だ\n",var_m);
}
/* 4 */
#include <stdio.h>
int main(){
int i,n,sum=0;
printf("5個のデータを入力してください。\n");
for(i=0;i<5;i++){
scanf("%d",&n);
sum=sum+n;
printf("%d個のデータの合計=%d\n",i,sum);
}
}
1、3は>>403,404
0437デフォルトの名無しさん
2006/01/01(日) 10:05:542進数の「1000」を5進数に変えたい場合
2(enter)1000(enter)5(enter)と入力する
#include<stdio.h>
#define BUF 1024
int main(void){
int a[BUF]={0},b1,b2,i,j,k=0,c;
char b[BUF],t[37]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/* 入力 */
printf("入力したい数は何進数?(2-36) ");
scanf("%d",&b1);
printf("数は?");
scanf("%s",b);
printf("何進数に変換しやすか?(2-36) ");
scanf("%d",&b2);
if(b2<2 || b2>36 || b1<2 || b1>36) return printf("ダメじゃん");
/* ヘシン */
while(b[k]){
for(i=0;b[k]!=t[i] && i<36;i++);
if(i==36 || i>b1-1) return printf("ありえねぇ");
for(j=0;j<BUF;j++)a[j]*=b1;
a[0]+=i,c=0,k++;
for(j=0;j<BUF;j++){
a[j]+=c;c=a[j]/b2;a[j]%=b2;
}
}
for(j=BUF-1;!a[j];j--);
while(~j)printf("%c",t[a[j--]]);
return 0;
}
0438デフォルトの名無しさん
2006/01/01(日) 12:34:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1378.c
0439デフォルトの名無しさん
2006/01/01(日) 12:43:56#include<stdlib.h>
#include<stdio.h>
int compare(const void*a,const void*b){
return *(const int*)a-*(const int*)b;
}
int main(){
int array[200];
int*i=array,*j;
while(scanf("%d",i++)>0){
qsort(array,i-array,sizeof(int),compare);
for(j=array;j != i;++j)
printf("%d ",*j);
printf("\n");
}
return 0;
}
0440デフォルトの名無しさん
2006/01/01(日) 14:04:39http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1379.lzh
0441デフォルトの名無しさん
2006/01/01(日) 17:47:25[2]問題文(含コード&リンク):
ソースはだらだらと長いですが,要はテンプレートの特殊化についてです.
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1380.txt
内のテンプレートクラスExpで,
1. LのみがVectのとき
2. RのみがVectのとき
3. ともにVectのとき
の3つの場合で,メンバ関数evalの動作を変たいと思っていますが,書き方が分からんのです.
ちなみに,出展はhttp://homepage1.nifty.com/herumi/index.html
誰かおせーてください.よろしこ.
[3]環境
[3.1]OS:Windows XP Pro SP2
[3.2]コンパイラ名とバージョン: VC++ 7.1
[3.3]言語:C++
[4] 期限:とくになし.早ければ嬉しいです.
[5] その他の制限:特になし
0442デフォルトの名無しさん
2006/01/01(日) 19:12:55ぱっと考えて思いつくのは
template<typename T>
struct isV{enum{r = 0};};
struct isV<Vect>{enum{r = 1};};
みたいなコンパイル時関数を作って
isV<L>::r| isV<R>::r<<1
を計算する。そうすると
0 両方Vectでないとき
1 LのみがVectのとき
2 RのみがVectのとき
3 両方Vectのとき。
というふうになるから
それをヘルパ関数に渡してその値で特殊化するとか。例えば
void eval(Vect& dest) const{
helper<Exp<L,R>,isV<L>::r| isV<R>::r<<1>::eval(dest);
// helper<Exp,n> で実際の特殊化を行う
}
0443442
2006/01/01(日) 19:38:00まぁ、その辺は適当に書いてなー
単に俺が言いたいのは数値で特殊化するという案だからー
0444デフォルトの名無しさん
2006/01/01(日) 20:02:410445デフォルトの名無しさん
2006/01/01(日) 20:19:44そんなに込み入った話ではないですよ.
107行目以降の3つのケースなんだが,単なる文法間違いかなんかだと思うんだよね.
このやり方でごく普通に(?)特殊化する方法無いかな,と思ってさ.
これ以上聞いたら叩かれそうなので,さんくす.
テンプレートメタプログラミングはまだよく分からんので,>>442も今後勉強の参考にすると思う.
ありが�d.
0446デフォルトの名無しさん
2006/01/01(日) 20:24:16日本人なら句読点ぐらいちゃんと打ってくれ
0447デフォルトの名無しさん
2006/01/01(日) 20:30:29横からだが、レポートとかだと、/。の代わりに,/.を使うことが多々ある
とゆうか、/。じゃ見栄えが悪いんだよな
まぁ完全な蛇足だが
0449デフォルトの名無しさん
2006/01/01(日) 21:20:46#include <stdio.h>は全て共通。行数の問題があるからレイアウトは自分で修正せよ。
/* (1) */ int main(void) {
int i = 9, j;
while (i > 0) {
for (j = 0; j < i; j++) printf("○");
printf("\n");
i -= 2;
}
return 0;
}
/* (2) */ int main(void) {
int n = 5, i = 0, j;
while (i < n) {
j = n - i - 1; while (j--) printf(" ");
j = 2 * i++ + 1; while (j--) printf("*");
printf("\n");
}
return 0;
}
/* (3) */ int main(void) {
int n = 10 / 2, i = 0, j;
while (i < n) {
j = 2 * i + 1; while (j--) printf("*");
printf("\n");
j = 2 * ++i; while (j--) printf("○");
printf("\n");
}
return 0;
}
0450!kuji 【1800円】
2006/01/01(日) 21:27:090452デフォルトの名無しさん
2006/01/01(日) 21:32:560455441
2006/01/01(日) 23:08:48パラメータを1つ指定しただけのクラス・テンプレートにおけるメンバ関数は特殊化できますが、
テンプレート・パラメータを複数指定したテンプレートにおけるメンバ関数群を特殊化することはできません。
> このやり方でごく普通に(?)特殊化する方法無いかな,と思ってさ.
その方法が無いみたいですね。
だから>>442はメタ関数使ってやってたのかなぁ。
ということで解決です。
ども、すんません。
0456デフォルトの名無しさん
2006/01/01(日) 23:45:49[2] 問題文:
実行例を含めて結構長いのでろだ使わせてもらいます
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1381.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語: C++
[4] 期限: ([2006年1月4日18:00まで] )
[5] その他の制限: リンク先参照です
新年早々ですがどなたかお願いします。
0459デフォルトの名無しさん
2006/01/02(月) 07:14:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1382.zip
0460デフォルトの名無しさん
2006/01/02(月) 08:41:070461デフォルトの名無しさん
2006/01/02(月) 13:41:43数字並べゲームで、初期配置に戻してクリアしたときにメッセージが出るようにしたいのですが…
配列で数値を並べたときの初期状態を、ゲームクリアしたときに判定させる方法がわかりません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1384.txt
どなたかヒントお願いします…
0462461
2006/01/02(月) 13:46:07[1] 授業単元: C言語
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1384.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C
[4] 期限:2006年01月04日18:00まで
[5] その他の制限: コンパイルして下さると、現在どんな状態か良くわかると思います…
0463デフォルトの名無しさん
2006/01/02(月) 14:01:31/* PROGRAM 9 1月18日 S50048TE.c */
0464デフォルトの名無しさん
2006/01/02(月) 14:03:18table(n);
のあとに並んでいるかのチェック用の関数入れたら?
その中で並んでいた場合にメッセージをだす。
0465デフォルトの名無しさん
2006/01/02(月) 14:04:17のあとに、並んでいるかのチェック用の関数入れたら?
0466デフォルトの名無しさん
2006/01/02(月) 14:12:22なるほど、そこに関数放り込むのが一番適切ですか…
有難う御座います。早速組んでみますね。
指定期限までは覗きに来るので他にもヒントあったら宜しくお願いします〜。
>>463
只のプログラムの課題番号と宿題の提出期限ですので気にしないで下さい…orz
0467デフォルトの名無しさん
2006/01/02(月) 14:15:24これは課題番号というより学籍番号っぽくね?
0468デフォルトの名無しさん
2006/01/02(月) 14:17:510469デフォルトの名無しさん
2006/01/02(月) 14:28:550470デフォルトの名無しさん
2006/01/02(月) 15:03:510472デフォルトの名無しさん
2006/01/02(月) 16:38:200473デフォルトの名無しさん
2006/01/02(月) 16:39:240474デフォルトの名無しさん
2006/01/02(月) 17:05:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1386.zip
数字重複チェック関数なんかは自分で作って
0475デフォルトの名無しさん
2006/01/02(月) 17:49:43とりあえず動くようにした
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1388.txt
0476デフォルトの名無しさん
2006/01/02(月) 20:25:14[2] 問題文(含コード&リンク): 下記参照
[3] 環境
[3.1] OS:Knoppix
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年1月10日12時まで
ローマ字かな変換ソフトを作りなさい。
(1)”a,i,u,e,o”を"あ,い,う,え,お","ka,ki,ku,ke,ko"を"かきくけこ","kya,kyu,kyo"を"きゃ,きゅ,きょ"にする。
ただし、"sakur"と入力したときは、"sakurはかなに変換できません。"と表示する。
(2)母音と子音の区別のために int bo_si[26]; とし、アルファベット1文字のローマ字のために、char table1[26][3]; を、
アルファベット2文字でローマ字に対応するために、 char table2[26][26][3]; を、1番目の添数には(k,s,t,n,h,m,y,r,w,g,d,b,p)に2番目の添数には(a,i,u,e,o)に対応する。
アルファベット3文字でローマ字に対応するために、 char table3[26][26][5]; を用意する。
(3)文字が子音かどうか判別する関数を int isShiin(char c); とし、テーブルを初期化する関数を void initialize(); とし、
アルファベットを母音に変換する関数を char *get_kana1(char b); とし、2文字のアルファベットを子音に変換する関数をchar *get_kana2(char s,char b); とし、
3文字のアルファベットを子音に変換する関数を char *get_kana3(char s1,char s2,char b); とする。
メイン関数は状態推移を実現して、ローマ字をかなに変換する処理を行う。
(4) tramslate.c をメイン関数を持つファイルに、kana.c をグローバル変数の宣言とすべての関数を、kana.h で、関数のプロトタイプ宣言を行う。
0477魚チョコ
2006/01/02(月) 20:40:40char table2[26][26][3]; だあ? いくつあると思ってんだよっ
そんなまんどくせえ課題を出しやがる教員を毒殺するという相談なら乗ってやらんでもない。青酸塩なら何種類か持ってるし ▲_ミ゚∇ ゚ "ミ
――ああそうだ。「日本語文字コードが指定されてないので解けません」と書いて出せ。
0478デフォルトの名無しさん
2006/01/02(月) 21:07:20初期化の時点ですでにバカ
終了
0479デフォルトの名無しさん
2006/01/02(月) 21:14:02そんな糞課題出したやつなんて殺してしまえ
0480デフォルトの名無しさん
2006/01/02(月) 21:15:14日本語コードは、アルファベットが1文字と2文字のときが
int hyo1_code[26]={
a,b, c, d, e,f, g, h,i,j, k,l,m,n,o,p, q, r,s,t,u,v, w,x, y,z
0,14,-1,13,3,17,11,5,1,16,1,8,6,4,4,15,-1,8,2,3,2,-1,9,-1,7,12}
で、アルファベットが3文字の時が、
int hyo2_code[26]={
a,b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
-1,32,33,30,-1,-1,28,25,-1,-1,18,-1,26,24,-1,33,-1,27,19,21,-1,-1,-1,-1,-1,29}
です。めんどうですが、お願いします。
0481デフォルトの名無しさん
2006/01/02(月) 21:16:22そいつのアドレスに悪質プログラム送れ
0482デフォルトの名無しさん
2006/01/02(月) 21:46:38んな面倒なの誰もしねーよ
0483デフォルトの名無しさん
2006/01/02(月) 22:08:00[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?
[3] 環境
[3.1] OS:linux (unix)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年1月15日10時まで
迷路巡回プログラムの作成
0484デフォルトの名無しさん
2006/01/02(月) 22:20:32[2] 問題文(含コード&リンク):1から100万までの間に双子素数(pが素数のとき、p+2も素数となるもの)は何組あるか。求めよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年1月5日18時
[5] その他の制限:なし
0485デフォルトの名無しさん
2006/01/02(月) 22:28:27[2] 問題文(含コード&リンク):角谷(かくたに)予想を1から1000まで確認せよ。すなわち2以上の整数nについて、
(a)偶数ならば2で割る。 (b)奇数ならば3倍して1を加える。
を実行すると、いつか1になるというものである。その中で最大のステップ数を必要とするnとステップ数も出力せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年1月5日18時
[5] その他の制限:なし
0486デフォルトの名無しさん
2006/01/02(月) 22:41:40http://chiebukuro.yahoo.co.jp/service/question_detail.php?queId=7118148
0487デフォルトの名無しさん
2006/01/02(月) 23:03:16#include<stdio.h>
#define MAXN 1000
int kakmap[MAXN+1];
int kak( int n ) {
if( n <= 1 ) return 0;
if( n <= MAXN && kakmap[n] > 0 ) return kakmap[n];
if( n&1 ) return 1+kak( n*3+1);
return 1+kak(n>>1);
}
int main( void ) {
int i;
int maxsteps = 0, maxindex = 0;
for( i = 0; i <= MAXN; ++i ) kakmap[i] = 0;
for( i = 1; i <= MAXN; ++i ) kakmap[i] = kak( i );
for( i = 1; i <= MAXN; ++i ){
if( kakmap[i] > maxsteps ) {
maxsteps = kakmap[i];
maxindex = i;
}
}
printf( "Max steps between 1 and %i is %i at %i", MAXN, maxsteps, maxindex );
}
0488デフォルトの名無しさん
2006/01/02(月) 23:18:26#include <stdio.h>
int main(void){
int step, n, i;
int maxstep = 0, maxn = 0;
for(i = 1; i <= 1000; i++){
step = 0;
n = i;
for(;;){
if(n == 1){
break;
}else if((n % 2) == 0){
n = n / 2;
}else{
n = (n * 3) + 1;
}
step++;
}
if(maxstep < step){
maxstep = step;
maxn = i;
}
}
printf("最大ステップ数:%d, その場合のn:%d\n", maxstep, maxn);
return 0;
}
0489デフォルトの名無しさん
2006/01/02(月) 23:46:13[2] 問題文:迷路巡回ソフト 下図参照
[3] 環境
[3.1] OS:Knoppix
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2006/1/9
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1395.txt
やり方はある程度分かったので、この方法にあうプログラムを作ってほしい。
0490デフォルトの名無しさん
2006/01/02(月) 23:50:56気に入らん
0491デフォルトの名無しさん
2006/01/02(月) 23:55:03最近迷路問題が多すぎる
同じヤツが口調変えてやってるんじゃないか
0492489
2006/01/02(月) 23:59:320493デフォルトの名無しさん
2006/01/03(火) 00:10:090494489
2006/01/03(火) 00:18:31||
!|_
〃ヽ:::ヽ
レ`゙ヽ:;;ノ 絶望した!
/井i #i^ >>493の発言に絶望した!
/ i | キ!
/ |ニ!井 |
ノ ノ´! ___!
ヽlii::ii└! r'"!
lii::ii::ィ'rノ、_|
!ii::ii::`´ii::|
,!ii::ii:::ii:::ii::l
!:ii::ii:::ii:::ii::i|
.l::ii::ii::::ii:::ii:::l
l_;;;ii;;--r、;;;ii|
`ーFl-‐|_,l-'"
(ヽ! (-、゙!
ヽiノ `、y'
0495デフォルトの名無しさん
2006/01/03(火) 00:59:31回答できるかもしれないがお前の態度が気に入らない
0496デフォルトの名無しさん
2006/01/03(火) 02:30:37;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
'、;: ...: ,:. :.、.∩.. .:: _;.;;.∩‐'゙  ̄  ̄
`"゙' ''`゙ //゙`´´ | |
//Λ_Λ | |
| |( ´Д`)// <うるせぇ、エビフライぶつけんぞ
\ |
| /
/ /
__ | | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
0497デフォルトの名無しさん
2006/01/03(火) 03:24:18push/popを使うんなら、キューじゃなくてスタックじゃないのか?
0498デフォルトの名無しさん
2006/01/03(火) 05:25:36[2] 問題文:a[first〜last]をマージソートで整列させる。
[3] 環境
[3.1] OS:WindousXp
[3.2] コンパイラ名とバージョン:MVS2003
[3.3] 言語: C
[4] 期限: 2006/1/9
http://syobon.com/mini/src/mini13396.zip.html
このマージソートはあっているのでしょうか。 計算量がO(n*log n)に
ならないと思うのです。時間がかかりすぎな気がします。
どうかよろしくお願いします。
0499489
2006/01/03(火) 08:16:36>>497
この問題はキューでもスタックでもどちらでもいいと聞いています。
キューのほうが分かりやすいといわれたので、お願いしました。
私にはこの問題と解くだけの力はありません。
お願いします。教えてください。
0500デフォルトの名無しさん
2006/01/03(火) 08:31:38そのとおりに実装するだけの話しでは
再帰で瞬殺かと
0501デフォルトの名無しさん
2006/01/03(火) 08:36:42リストなら素直な結果が出るんだが。
0502デフォルトの名無しさん
2006/01/03(火) 09:58:43[2] 問題文(含コード&リンク):乱数を使ったおみくじプログラムを作成せよ。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C言語
[4] 期限:2006年1月4日18時
[5] その他の制限:なし
0503489
2006/01/03(火) 10:33:59アルゴリズムがあっても、ここからプログラムにすることが
どうしてもできないんです。再帰は苦手で・・・。
非常に申し訳ないんですが、誰か教えてください。
0504489
2006/01/03(火) 11:03:09大口叩いておいて結局できねーのかよ。
もういいよ。知り合いの博士に頼んでみるから。
0505デフォルトの名無しさん
2006/01/03(火) 11:11:45> アルファベット3文字でローマ字に対応するために、 char table3[26][26][5];
table3 は [26][26][26][5] ではないのか?
0506デフォルトの名無しさん
2006/01/03(火) 11:22:33よくわからんけど、こんなのでいいのん?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1397.txt
0507489
2006/01/03(火) 11:31:06ありがとうございます。これで、進級ができそうです。後は自分でやってみます。
本当にありがとうございます。
0508476
2006/01/03(火) 11:34:41table3は[26][26][26][5]のまちがいでした。
面倒な問題ですが、よろしくお願いします
0509489
2006/01/03(火) 12:25:00壁は "*" で、通路は " " で、道は "+"で表示するように修正お願いします。
迷惑をおかけしますがお願いします。
0510デフォルトの名無しさん
2006/01/03(火) 12:33:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1398.txt
0511489
2006/01/03(火) 13:05:22書き方が悪く誤解させてしまいました。ごめんなさい。
1は "*" で、0は " " で表示させてから、スタート(2)からゴール(3)までの
道を探し、結果を"+"で表示する。
111111111111
130010000001
101010101001 1が壁で、0が通路
100010001011
101111101001
100010001001
101010101001
100010001101
110110111001
100010001001
101000101021
111111111111
よろしくおねがいします。
0512デフォルトの名無しさん
2006/01/03(火) 13:29:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1399.txt
袋小路に迷い込んだ時に歩いた道も表示されるが、設問通りにプログラム
したので、問題ないと思う。
0513モンモン
2006/01/03(火) 13:32:24[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等
0514モンモン
2006/01/03(火) 13:37:16[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): ax^2+bx+c=0をとくプログラミングを作れ
a=0とa=0でない場合に分ける
a=b=0ならば解なしと表示
a=0でない場合は判別式を用いて実数解 虚数解 二重解にわけて解の公式を用いて解を表示する
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (不明)
[3.3] 言語: (C)
[4] 期限: ([2006年m1月9日
[5] その他の制限: ない
0515デフォルトの名無しさん
2006/01/03(火) 13:53:51> a,b, c, d, e,f, g, h,i,j, k,l,m,n,o,p, q, r,s,t,u,v, w,x, y,z
> 0,14,-1,13,3,17,11,5,1,16,1,8,6,4,4,15,-1,8,2,3,2,-1,9,-1,7,12}
> int hyo2_code[26]={
> a,b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
> -1,32,33,30,-1,-1,28,25,-1,-1,18,-1,26,24,-1,33,-1,27,19,21,-1,-1,-1,-1,-1,29}
なんか間違ってね?
,が足りないのかとおもたら要素が配列の宣言より多いし...
0516デフォルトの名無しさん
2006/01/03(火) 13:57:36戻り値は
・子音
・母音
・不明
なのかしら?
0517デフォルトの名無しさん
2006/01/03(火) 14:00:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1400.txt
0518デフォルトの名無しさん
2006/01/03(火) 14:44:590519デフォルトの名無しさん
2006/01/03(火) 14:51:04[2] 問題文(含コード&リンク): 18の倍数で300以下の最大の整数を求めるプログラムを作成せよ
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン:ボーランドC++ Compiler
[3.3] 言語:C++
[4] 期限:あさってまで
[5] その他の制限:最初は問題文に書いてありました。この先お願いします
#include <stdio.h>
void main(void)
{
int i;
0520デフォルトの名無しさん
2006/01/03(火) 14:56:01printf( "%d", 300/18*18 );
}
0521デフォルトの名無しさん
2006/01/03(火) 15:17:180522デフォルトの名無しさん
2006/01/03(火) 15:19:28iを使わないとセンセがへそ曲げそうだから。
#include <stdio.h>
main( void )
{
int i;
for( i=300;i>0;i--)
if( i%18 ==0 ){
printf( "%d\n", i );
return;
}
printf( "Not exist such number!\n" );
}
0523デフォルトの名無しさん
2006/01/03(火) 15:20:460524デフォルトの名無しさん
2006/01/03(火) 15:23:22ちょっとまて。最大の*整数*をもとめろ、だから勝手に負数を除外してはまずいのではないか?
0525デフォルトの名無しさん
2006/01/03(火) 15:27:45本職になろうってんなら自分で考えればいい
0526デフォルトの名無しさん
2006/01/03(火) 15:28:17main( void )
{
int i;
i=300-300%18;
printf( "%d", i );
return 0;
}
0527デフォルトの名無しさん
2006/01/03(火) 15:30:420528デフォルトの名無しさん
2006/01/03(火) 15:50:57センセー!俺が間違ってましたー!!
ってふうに、相手が望んでる答えを書いとけばいい。
グラマーなんてどうせ負け組みだから… orz
0529502
2006/01/03(火) 16:44:27皆様ご協力よろしくお願いします
自分の力の無さが不甲斐ないです orz
0530デフォルトの名無しさん
2006/01/03(火) 16:54:18ワロス
0531デフォルトの名無しさん
2006/01/03(火) 17:15:332通り
int main()
{
int user;
printf("数値を入力してください--");
scanf("%d",&user);
if(rand()==user)
printf("大吉です\n");
else
printf("大凶です\n");
getch();
return 0;
}
>>530
はいはい、VIPに帰りましょうね
0532デフォルトの名無しさん
2006/01/03(火) 17:53:08int main()
{
while(!puts("何でプログラマーになろうなんて思ったんだろう……")){}
return 0;
}
0533デフォルトの名無しさん
2006/01/03(火) 18:01:50[2] 問題文(含コード&リンク):
Web ページの探索アルゴリズム
1.文字列操作を使ったURLの比較アルゴリズムの作成
2.HTML文書からハイパーリンクを抽出するアルゴリズムの作成
3.Webページの構成を解析するアルゴリズムの作成
という問題です。
詳しくは http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1401.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C言語
[4] 期限: 1月10日まででお願いします。
大学での課題なのですが、自力では無理なので誰か教えてください。
というより、大学2年生でこんな問題解ける人がどのくらいいるんでしょうか?
私が馬鹿なだけかもしれませんが・・・。
0534デフォルトの名無しさん
2006/01/03(火) 18:22:55プリーズ
0535デフォルトの名無しさん
2006/01/03(火) 18:25:46boostを使わずに、正規表現を解析できるライブラリを作れ。
0536デフォルトの名無しさん
2006/01/03(火) 18:31:42ありがとうございます。
さっぱり分かりません。
出なおしてきます。
0537デフォルトの名無しさん
2006/01/03(火) 18:33:14それ、
私利私欲で掲示板の画像ファイルを掻き集めたいんじゃないの?
0538デフォルトの名無しさん
2006/01/03(火) 18:34:38俺の会社の入社前研修よりムズいやんけ
0539デフォルトの名無しさん
2006/01/03(火) 18:40:561→URLを正規化する。
./はスキップ。../はディレクトリを一つ削る。ディレクトリを削り過ぎないように注意。
2,3→字句解析。下向き再帰型構文解析ならそんなにむづかしくなかろう。再帰ないし。
>>537 そんなん、ツール使えばいいでないの。
0540デフォルトの名無しさん
2006/01/03(火) 21:23:11[2] 問題文(含コード&リンク):下記参照
[3] 環境
[3.1] OS:(Windowsxp)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C/C++
[4] 期限: 2006年1月9日まで
[5] その他の制限: 特になし
0と1を使用した32桁の文字列を入力
0が1つの場合1と置く 0が2つ連続すると2と置く 0が3つ連続すると3と置く
0が4連続=4 0が5連続=5 0が6連続=6 0が7連続=7 0が8連続=8 0が9連続=9
1が1連続=a 1が2連続=b 1が3連続=c 1が4連続=d 1が5連続=e
1が6連続=f 1が7連続=g 1が8連続=h 1が9連続=i
上のように変換した文字列を表示する
(0や1が10個以上連続した場合下の例のように置き換える
{例}1が12個連続→1が9連続のiと1が3連続のcに置き換える
)
最後に最初に入力した0と1を使用した32桁の文字列を表示
全体的の例
11111001100000000000000111111110
e2b95h1
11111001100000000000000111111110
自分の力ではまったくもって無理なのでよろしくお願いします。
0541533
2006/01/03(火) 21:34:25私の力では、アルゴリズムや方針が分かってもそこからプログラムを完成させることはできません。
非常に自分勝手ですが、誰か作ってください。
>>537
あと、進級のためにというのは私欲といえますが、それ以外に使うつもりまありません。
0542デフォルトの名無しさん
2006/01/03(火) 21:46:48おもしろそう。
だけど今は頭が揺れるぐらい酔ってるしムリポ
0543デフォルトの名無しさん
2006/01/03(火) 21:55:11i=0;j=0;
gets(str);
first=ONE;
if(str[0]=="0")
first=ZERO;
while(1){
while(str[i]=="1")
cnt[j]++;
j++;
while(str[i]=="0")
cnt[j]++;
j++;
if(str[i]!="0" && str[i]!="1")
break;
}
こんな感じか。前半だけだが。
0544デフォルトの名無しさん
2006/01/03(火) 21:55:18期日まで時間があるし、だれかが作ってくれるまで待つべし。
>540 概要だけど。
while (注目している文字が0か1の間つづける) {
for (count = 1; 注目している文字から右にcount個目の文字が注目している文字と同一の間ループ; count++)
;
while (count > 0) {
if (count < 10)
対応する文字を出力;
else {
9個の時の文字を出力;
count -= 9;
}
}
注目している文字を進める
}
出力の末尾の処理
}
いや、プログラム作るのメンドイので。
0545デフォルトの名無しさん
2006/01/03(火) 21:55:17期限内ならいつでもいいのでよろしくお願いします!
0546デフォルトの名無しさん
2006/01/03(火) 21:56:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1402.cpp
0547デフォルトの名無しさん
2006/01/03(火) 21:59:090548デフォルトの名無しさん
2006/01/03(火) 22:11:160549デフォルトの名無しさん
2006/01/03(火) 22:20:18すみません。コンパイルしてもエラーが出たのですが・・・
0550デフォルトの名無しさん
2006/01/03(火) 22:23:24C++としてコンパイル(g++ 546.cpp)してる?
もしそうなら、エラーメッセージを書いてくれ。
0551デフォルトの名無しさん
2006/01/03(火) 22:31:03すみません。Cでコンパイルしていました。
きちんとできました!どうもありがとうございます!
0552347
2006/01/03(火) 23:48:18爆弾の配置を以下の方法でやろうと思っているのですが、どうやれば良いのかわかりません。
・int型のポインタ*arrを宣言
・nを入力し、mallocでn*n分のメモリを確保
・配列の要素をすべて0で初期化
・ランダムな場所にn個だけ1を代入する
たとえば、n=5だったら、
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
と初期化し、ランダムに
0 1 0 0 0
0 0 0 1 0
1 1 0 0 0
0 0 1 0 0
0 0 0 0 0
こんな感じにしたいのですが、ランダムな場所に1を代入するところが出来ません。
その前のコードはこんな感じです。
int i,n;
int *arr;
n=5;
arr=(int *)malloc(sizeof(int)*n*n);
for(i=0;i<n*n;i++){
*(arr+i)=0;
}
よろしくお願いします。
0553デフォルトの名無しさん
2006/01/03(火) 23:48:25[2]問題文
以下の解答欄�@�Aをを埋めて実行中のプロセスから3個のプロセスを新たに生成し4つそれぞれのプロセスが1から4の数字の中から一文字だけかつ重複なく選んだものを出力するプログラムを作成せよ。
#include<stdio.h>
int
main() {
int i; for(i=1;i<4;i++)
if(�@) break; }
printf("%d",�A); return 0; }
[3.1]OS : Linux
[3.2]コンパイラ名とバージョン : gcc
[3.3]言語 : C
[4]期限 : 1月4日10時
よろしくお願いします
0554デフォルトの名無しさん
2006/01/04(水) 00:06:290555デフォルトの名無しさん
2006/01/04(水) 00:30:481案
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int i, n = 5, pos;
int *arr = (int *)malloc(sizeof(int) * n * n);
for(i = 0; i < n * n; i++) arr[i] = 0;
srand((unsigned int)time(NULL));
for(i = 0; i < n; )
if (arr[pos = (int)((n * n + 1) * rand() / (RAND_MAX + 1.0))] == 0) {
arr[pos] = 1;
i++;
}
for (i = 0; i < n * n; i++) {
printf("%1d", arr[i]);
if (i % n == n - 1) printf("\n");
}
}
0556デフォルトの名無しさん
2006/01/04(水) 00:57:58while(k){
if(!*(arr+rand()%(n*n)){
*arr=1;
input(n,--k,arr);
}
else input(n,k,arr);
}
}
int main{
input(n,n,arr);
}
再帰使ってみた...あってるかはわからん
0558デフォルトの名無しさん
2006/01/04(水) 01:09:38*(arr+i)?input(n,k,arr):input(n,--k,arr);
whileの中身これに交換して
0559デフォルトの名無しさん
2006/01/04(水) 01:39:46Please Japanese
0560デフォルトの名無しさん
2006/01/04(水) 01:41:21俺は木構造やマージソート、クイックソートみたいな
型が決まってる様な奴じゃないと使えない
0561デフォルトの名無しさん
2006/01/04(水) 04:05:00MTがいいと思うが
0562デフォルトの名無しさん
2006/01/04(水) 09:06:08[2] 問題文(含コード&リンク):tailコマンドを実装せよ
【機能】ファイルの最後の複数行を画面に出力する
【引数】Ln:出力する行数nを指定する(デフォルト値は10行)
【コマンドの構文】tail [-Ln][filename]
[3] 環境
[3.1] OS:winXP
[3.2] BCC
[3.3] 言語: C言語
[4] 期限: 2006/01/05
[5] その他の制限:特になし
どうかよろしく御願いしますペコリ(o_ _)o))
0563デフォルトの名無しさん
2006/01/04(水) 09:27:01おそらくfork()を使って4つのプロセスを作り、1から4の数字を割り振れということだと思います
0564デフォルトの名無しさん
2006/01/04(水) 09:55:50�@ !fork
�A i
0565デフォルトの名無しさん
2006/01/04(水) 11:33:18MT車がどうしたって?
0566デフォルトの名無しさん
2006/01/04(水) 11:39:42まあまあ、そうボケないで。
0567デフォルトの名無しさん
2006/01/04(水) 11:58:530568デフォルトの名無しさん
2006/01/04(水) 12:02:140569デフォルトの名無しさん
2006/01/04(水) 12:23:400570デフォルトの名無しさん
2006/01/04(水) 12:45:280571デフォルトの名無しさん
2006/01/04(水) 12:46:420572571
2006/01/04(水) 12:47:540573570
2006/01/04(水) 13:13:22それ以来かなり苦手意識。
スレ違いここまで。
以下なにごともなかったかのように再開
0574デフォルトの名無しさん
2006/01/04(水) 13:14:13俺も同じ経験が
記憶から抹消してー
[1] プログラミング中級
[2] csvファイルを読み込んで何らかの処理をするアプリケーションを作成する。
プロジェクトのフォルダおよびcsvファイルを提出のこと。(コンパイル及び)実行を講師がおこない、評価する。
提出日:1月17日もしくは1月24日の授業時。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名:授業では"visual studio"を使っていますが
自宅では以下のURLを参考にしてBorland C++ Compiler 5.5を使っています。
http://ja2yka.homeip.net/aki/freedev.htm
[3.3] 言語: C++
[4] 期限 1月17日もしくは1月24日の授業時。
[5] その他の制限: 授業では教科書に沿ってif文,for文,ポインタ,配列,クラスなどを習いました。
宿題では授業で習った物をできるだけ使った方が良いようです。
教科書は"優しいC++(高橋麻奈,soft bank publishing"を使用しています。
色々頑張ってみましたが、経験が浅いのと論理的に考えられないので全然ダメでした。
依頼文も意味間違って書いているかも知れませんが、どうぞよろしくお願いしますorz
0576デフォルトの名無しさん
2006/01/04(水) 13:49:500578デフォルトの名無しさん
2006/01/04(水) 13:52:44Cだったら暇だからアンケート集計&統計ソフトでも作っちゃるんだけど
実は授業用に間違ってCの本買っちゃったんですけど、
ちょっと違いますよね。授業はC++です。C++ですいません。
0580デフォルトの名無しさん
2006/01/04(水) 14:08:07ttp://cm.bell-labs.com/cm/cs/tpop/csvgetlinec++.c
使い方は本みてくれ。
0581デフォルトの名無しさん
2006/01/04(水) 14:11:130,2,3,1,5,2,6,4,1,2,3,1,5,3,5,2,……みたいな数字の羅列読み込んで
平均出すだけとか(ry
0582デフォルトの名無しさん
2006/01/04(水) 14:14:01CSVも、入力を限定してしまえば楽だなぁ・・・。
んー・・・1フィールドしかないCSVで、出現数をカウントとか。
0583デフォルトの名無しさん
2006/01/04(水) 14:18:36んな事やってもクラスのありがたみがさっぱり分からん気がする
>>581 どの学部の学生も参加できる授業なので、
そこまで高等な処理は必要ないと思います。
>>583 すいません。Cの本は間違って買ったんです。
最初++の部分は飾りかなんかだと思ってたんです。
確かにクラスのありがたみとか全然分かりません。
0585583
2006/01/04(水) 14:24:58すまん、CじゃなくてC++だった
トイレの落書きだからスルーでおk
ちなみに、>>581や>>582が言ってるのは
課題から思いつく物中では簡単な部類だから、
これで駄目ならもっと難しいのしかないよ
>>583 本当簡単なので良いとおもいます。難しいの出すと却って変かも知れません。
csv.とエクセルの違いも分からないので…
フィールドが多数になると、フィールド間の処理が面倒なので、
1つのフィールドにデータを入力して、そこから、
決まった数字とかを出してくる。という解釈で良いのでしょうか?
フィールドって意味も分からないので…
0588デフォルトの名無しさん
2006/01/04(水) 14:36:402521,612,345,12463,23451,1234325
2944,342,3215,135213,12341,63326
8091,12636,134364,12341,6463,1234
134143,36346,123412,45674,789879,
↑これをテキストファイルにコピペして拡張子.csvにしてクリックすれば
どんなもんか分かると思う
即やりました。
","が消えて、区切られていた部分が
各々のセルに収まりました。
0590デフォルトの名無しさん
2006/01/04(水) 14:54:54[2] 問題文:問題1 文字列の結合
文字列str1,str2それぞれに文字列を入力し、str1←str1&' '&str2の
操作をして、str1の内容を表示させる。
実行例
str1? 2
str2? chan
2 chan
問題2 文字列内の指定文字カウント
文字列strの中に、文字cが含まれている個数(含まれていなければ0とする)
を返す関数
int str_chnum(const char str[], int c)
を作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5日の12時まで
[5] その他の制限: 動作確認のためのmain関数を作成する。
問題1、問題2をそれぞれ別のプログラムとして作成する。
0591デフォルトの名無しさん
2006/01/04(水) 16:08:53{
/* sprintf()は宿題っぽくないので使わない */
char *p = buf;
while (*p++ = *str1++) ;
p[-1] = ' ';
while (*p++ = *str2++) ;
return buf;
}
int str_chnum(const char str[], int c)
{
int count = 0;
for (; *str; str++) if (*str == c) count++;
return count;
}
0592デフォルトの名無しさん
2006/01/04(水) 16:11:31どのレベルの物が欲しいのか分からんので、最近の課題とか例題をup。
分かりました。上手く説明できないので
ttp://www.aoni.waseda.jp/ouchi/2005/cpp/index.html
これでどうでしょう?多分、自分が言うより分かりやすいと思いますが…
0595デフォルトの名無しさん
2006/01/04(水) 16:50:36int main()
{
static const int STRING_LENGTH = 200;
printf("str1?");
char str1[STRING_LENGTH];
fgets(str1, sizeof(str1), stdin);
printf("str2?");
char str2[STRING_LENGTH];
fgets(str2, sizeof(str2), stdin);
sprintf(str1, "%s %s", str1, str2);
printf("%s\n", str1);
return 0;
}
0596デフォルトの名無しさん
2006/01/04(水) 16:56:13そのサイトを見る限り、もう偏差値計算までやってるんでしょ?
そのプログラムを利用して、成績順にソートするとかでどう?
#つーか、それくらい自分で考えつかなきゃダメだがや。
0597デフォルトの名無しさん
2006/01/04(水) 17:04:52すいません○| ̄|_
あんまり身になってなかったみたいです。
0599デフォルトの名無しさん
2006/01/04(水) 17:15:220600デフォルトの名無しさん
2006/01/04(水) 17:17:14tail は >>175 にあるよ
0602デフォルトの名無しさん
2006/01/04(水) 17:17:57まずは作りたいプログラムの概要決めて、次にそれに応じたフィールドとかを決めてcsv作成
そしてプログラム作成
0603デフォルトの名無しさん
2006/01/04(水) 17:19:59うーん、「どんなプログラムを作るか」は知識や知能の問題だけじゃ解決しないよなぁ。
想像力と創造力が必要なんでないかい?
・csvファイルを使った簡単な成績表を授業で作った
→成績表なら、点数順に並べ替えてみよう ・ グラフにしよう ・ その他
→→「並べ替え」でこのスレやWebを検索してみよう ・ 「グラフ」で(以下ry ・ その他
→→→例があるな、使えるかな? ・ 実際のグラフは難しそうだから文字でできないかな? ・ その他
分かりました。やりたい事決めて、検索してみます。
矢っ張り"成績順に並べる"が良さそうですね。
"csvファイルを使った簡単な成績表を授業で作った"
→csvファイル使った覚えがないです。
txtファイルの入出力はしたんですけど
>>602
まずは作りたいプログラムの概要決めて、
次にそれに応じたフィールドとかを決めてcsv作成 そしてプログラム作成
先ほど教えて頂いて1つcsvファイルは作れたんですが、
フィールドとは何なのかよく分からないです。
0605デフォルトの名無しさん
2006/01/04(水) 17:32:12サイトを見ると、成績表作ってるじゃん。授業でやってないの?
あー、csvファイルって拡張子こそ換えているけど中は只のテキストファイルだから
拡張子がtxtのファイルと取り扱いは同じって認識できてなかったりする?
それと、「フィールド」はこの場合、Excelで言う"Column"のことね。
0606デフォルトの名無しさん
2006/01/04(水) 17:37:48フィールド=列項目名
0607デフォルトの名無しさん
2006/01/04(水) 17:39:39最後の方、授業計画が遅れてグダグダになっていたので、あまり分かりません。
成績表っていうのはURLの表をtxtにコピペした物です。
っていうか扱いtxtファイルと同じなんですか!?
txtファイルと同じやり方でifstreamしても毎回失敗するんですけど何故でしょうか?
引数として指定した範囲の列番号を返します。
0609デフォルトの名無しさん
2006/01/04(水) 17:44:58一番いいのは諦めて放置することか…
自分でも何でこんな分からないのか分からない。
分からないところが分からないような状況なので。
0611デフォルトの名無しさん
2006/01/04(水) 17:51:16int str_chnum(const char str[], int c)
{
int rtn = 0;
if (str == NULL) return rtn;
for (; *str; ++str) {
if (*str == c) ++rtn;
}
return rtn;
}
int main(int argc, char **argv)
{
if (argc < 3) {
return 0;
}
printf("str_chnum(%s, %c)'s return value is %d\n", str_chnum(argv[1], argv[2][0]));
return 0;
}
0612デフォルトの名無しさん
2006/01/04(水) 18:07:39成績表を作ったんだったらこんなのどう?
1. csvファイルを双方向リスト(メモリを動的に確保していくアレ)に一行ずつ格納
2. 双方向リストを、点数をキーにソート(マージソートを利用)
3. ソートしたデータをcsvファイルに出力
0613デフォルトの名無しさん
2006/01/04(水) 18:10:19◆rp8BbJeZ0Iのレベルを考えてものを言え
0614デフォルトの名無しさん
2006/01/04(水) 18:40:020615魚チョコ
2006/01/04(水) 18:41:451. にゅる力された数を3桁ごとにコンマで区切って出力する。
2. こしゃくなことに小数点以下がありうる。小数点以下は5桁ごとに空白1つ空ける。
3. 小数点から始まったら1の位に0を補う。
4. 小数点で終わったら小数点を取る。
5. エラーがあったら "E" と出力する。
6. 小数点だけの入力はエラーとする。
これ実現しようとすると難しくはないがちょいと面倒ではないか?
ここにコード書いてやってる人びとみなさんどんくらい時間を費やして組んでるんでしょか。
0616デフォルトの名無しさん
2006/01/04(水) 18:51:140617デフォルトの名無しさん
2006/01/04(水) 18:51:420618デフォルトの名無しさん
2006/01/04(水) 19:08:260619デフォルトの名無しさん
2006/01/04(水) 19:50:20[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1403.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限: 1月7日まで
[5] その他の制限: なし
私には無理なので、誰か手伝ってください。
本当に皆さんの力が全てなんです。お願いします
0620デフォルトの名無しさん
2006/01/04(水) 19:58:31氏名(ローマ字)を表す文字列型の欄name、3つの整数型の要素
を持つ配列型の欄scoreと、実数型の欄aveをもつ次のレコード型
で定義する。
type student = record
no : array [1..7]of char;
name : array [1..25]of char;
score : array [1..3]of char;
ave : real;
end;
実数型の欄aveには配列型の欄scoreの3つの要素の平均点を入れる。
5人分のデータを標準入力から入力し(aveはscoreからプログラム内で算出)
最も平均点の高い学生の学籍番号・氏名・平均点を出力しまた、5人全員を
平均点の低い順に並べて、学籍番号・氏名・平均点を出力する問題。
pascalでもCでもいいのでヒントをください。答えを書いてもらったら
うれしいのですが、お願いします。
0621デフォルトの名無しさん
2006/01/04(水) 20:03:43>>1読め。しかもPascalはスレ違い。
0622デフォルトの名無しさん
2006/01/04(水) 20:22:37tp://lmj.nagaokaut.ac.jp/~lu/edu/computer/info.html#little_prog
以下のプログラムは入力した成績を平均点の高い順に並べ替えて
出力する .これをソートと呼ぶ
#include <iostream.h> // 課題3.3
#include <iomanip.h>
#include <vector.h> // vectorのheaderファイル
typedef struct student { // 学生の成績
char name[64]; // 名前
char yomi[64]; // 名前のよみ
char id[12]; // 学籍番号
int heikin; // 成績の平均
int math; // 数学の成績
int phys; // 物理の成績
int eng; // 英語の成績
} student;
0623619
2006/01/04(水) 21:10:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1404.txt
よろしくおねがいします。
0624デフォルトの名無しさん
2006/01/04(水) 21:17:09[1] 授業単元:情報処理演習
[2] 問題文(含コード&リンク):自然数で約数の和がその数の二倍に等しいものを完全数という、たとえば1+2+3+6=2×6なる6は完全数である
10000以下の完全数を全部見つけよ、ただし約数の和の計算は関数ににすること
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] C
[4] 期限: 明日の朝
[5] その他の制限:C言語はじめて二ヶ月の人がつかってて違和感のないプログラムでお願いします!
0625デフォルトの名無しさん
2006/01/04(水) 21:22:18[1] 授業単元: it入門
[2] 問題文(含コード&リンク):
http://sousou7jp.hp.infoseek.co.jp/html/kadai-02.pdf
http://sousou7jp.hp.infoseek.co.jp/html/kadai-03.pdf
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン:gcc バージョンは知りません
[3.3] 言語:c
[4] 期限: 2006年1月10日17時まで
[5] その他の制限: 特になし
0626デフォルトの名無しさん
2006/01/04(水) 21:30:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1405.c
0627590
2006/01/04(水) 21:44:570628デフォルトの名無しさん
2006/01/04(水) 21:58:44住人はお前の代わりにやってやってるんだ
コードが間違っててもな
嫌なら自分でやりな
0629デフォルトの名無しさん
2006/01/04(水) 22:10:490630デフォルトの名無しさん
2006/01/04(水) 22:28:14#include <stdio.h>
int main(void) { printf("6 28 496 8128\n"); return 0; }
0631347
2006/01/04(水) 22:41:13マインスイーパーの問題を自力で解いているのですが、詰まってしまいました。
openの処理のところが出来ません。
間違いを指摘or修正していただきたいのですが、よろしくお願いします。
コメントなどはつけていないので見づらいと思いますが、よろしくお願いします。
0632347
2006/01/04(水) 22:54:39・座標x,yを入力したとき、char 型配列 arr_data[]の要素数 j は j=x+n*yで、
・arr_data[ j ]に文字’0’を代入
・int 型配列 arr_bombを二次元配列としてみたときの、j 番目の周囲の要素を見て、周囲に爆弾があればその数だけarr_data[ j ]の値をインクリメント(arr_data[ j ]の文字が’0’なので、インクリメントすれば’1’になるはず)
・arr_data[ j ]の文字が’0’の場合、open_window()関数のx,yの値を変えて再起処理
こんな感じにしたのですが、きちんと動作しません。
どこが悪いのか、ご指摘お願いします。
0633デフォルトの名無しさん
2006/01/04(水) 23:21:01もし解決できないならそれはやる価値のないソリューションだ
0634347
2006/01/04(水) 23:25:46いや、宿題です。
ここで、一応、回答はもらったのですが、かなりハイレベルな回答(Dos上でグラフィカルな処理をしている)で、
授業でやった内容では明らかに不可能な内容だったので、自分で考えながら解いています。
0635デフォルトの名無しさん
2006/01/04(水) 23:32:440636デフォルトの名無しさん
2006/01/04(水) 23:35:31面倒だからヒント。
a%b==0になるのがbはaの約数。
0637デフォルトの名無しさん
2006/01/05(木) 00:16:39[1] 授業単元:情報処理演習
[2] 問題文 オイラー関数をプログラムにせよ♪
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] C
[4] 期限: 明日の朝
0638デフォルトの名無しさん
2006/01/05(木) 00:29:10(・∀・)ソレダ!!
0639デフォルトの名無しさん
2006/01/05(木) 00:42:25#include <stdio.h>
int euler_phi(int n) {
int m = n, a, b, t, c = 0;
if (n < 1) return 0;
do {
a = m;
b = n;
while (b != 0) {
t = b;
b = a % b;
a = t;
}
if (a == 1) ++c;
} while (--m);
return c;
}
int main(void) {
int i;
for (i = 1; i < 10; ++i) printf("Phi(%d)=%d\n", i, euler_phi(i));
return 0;
}
0640デフォルトの名無しさん
2006/01/05(木) 00:43:05ペアノの公理だから
自分で解いてくれっぺ☆
0641デフォルトの名無しさん
2006/01/05(木) 00:50:27浅学ながら読んでみたけど
このメインディッシュとなるwhilleのcommand場合訳の内容はなんなんだろうか
bombを指定していきなりx,yの入力を求めてるが何をしてるんだろうか?
x,yは実際目はどこなのだろうか?
とりあえず変数は1次元配列で扱わずに
二次元配列にしてみてはどうだろうか
まぁ頑張ってみるけど
0642デフォルトの名無しさん
2006/01/05(木) 00:59:36こんなんでよろし?
#include <stdio.h>
int measure(int n){
int i,sum;
for(i=1,sum=0;i<n;i++){
if(n%i==0) sum+=i;
}
return sum;
}
int main(){
int n;
for(n=1;n<=10000;n++){
if(measure(n)==n) printf("%d\n",n);
}
return 0;
}
0643347
2006/01/05(木) 01:02:06すいません。問題文が前のほうにあるので、それを呼んでいただければ分かると思うのですが、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1370.txt
commandの場合わけはcommandが0のときopen処理、commandが1のときbomb処理、それ以外はexit
x,yは配列の座標です。行がx、列がyでそれぞれ0〜n-1までになっています。
2次元配列のほうが分かりやすいのですが、mallocで領域を確保した場合、
arr[n]とは出来るのですが、arr[n][n]などというように、多次元配列には出来なかったので、このような形になりました。
0644347
2006/01/05(木) 01:03:50列がxで行がyです。
0645デフォルトの名無しさん
2006/01/05(木) 01:07:40ふんふん
この周りの爆弾をカウントってのがopen関数なのかな?
そして周りの爆弾の数はarr_data[j]に格納すると
0647デフォルトの名無しさん
2006/01/05(木) 01:12:43関数の中身の計算とかなんで再帰使ったかはわからんけど
どうやらこの複雑さが原因の予感がしてきた
とりあえず
x,yにおいて周りの爆弾の個数ってのは
左上 上 右上 左 右 左下 下 右下の8個の状態を調べて爆弾の個数をカウントすればいいのだから
上手く座標計算すればいけるかもね
0648デフォルトの名無しさん
2006/01/05(木) 01:20:15[1]授業単元:データ構造
[2]問題文:
以下のプログラムは
Saito:73
Sato:100
Sato:85
Sato:86
Takahashi:62
Takahashi:85
を出力するがこれを
Saito:73
Sato:100 85 86
Takahashi:62 85
と出力されるようにかえろ。
[3.3]言語:C++
[4]期限:1月7日(土)まで
プログラム次のレスにのせます。
よろしくお願いします。
0649347
2006/01/05(木) 01:20:37ええ、自分もそれをやろうとしたのですが、うまくいきませんでした。
再帰を使うのは、問題文にもありますが、周りの爆弾の個数が0だった場合、再帰的に処理を繰り返して、周囲の爆弾の数が1以上あるところまでをopenするためです。
0650デフォルトの名無しさん
2006/01/05(木) 01:21:35#include <string>
#include <map>
using namespace std;
typedef multimap<string ,int , less<string> > MMAP;
typedef MMAP::value_type Mvalue;
ostream& operator<<(ostream& os, const Mvalue& p){
os << p.first << ":" << p.second;
return os;}
main(){
MMAP seisekiMap;
seisekiMap.insert(Mvalue("Sato",100));
seisekiMap.insert(Mvalue("Takahashi",62));
seisekiMap.insert(Mvalue("Sato",85));
seisekiMap.insert(Mvalue("Saito",73));
seisekiMap.insert(Mvalue("Takahashi",85));
seisekiMap.insert(Mvalue("Sato",86));
for(MMAP::iterator i=seisekiMap.begin(),end=seisekiMap.end(); i!=end; i++){
cout << *i << endl;
}
return 0;
}
0651デフォルトの名無しさん
2006/01/05(木) 01:44:49とりあえずいけそうだけどちょっといいかな
arr_dataには各種情報(周りの爆弾の個数etc)
arr_bombには爆弾があれば1 無ければ0だよね?
0652デフォルトの名無しさん
2006/01/05(木) 01:48:57// includeを追加(std::pair<>の使用のため)
#include <utility>
// ostream& operator<<(ostream&, const Mvalue&)を削除
// main()のfor文を次のように変更
for (MMAP::iterator i = seisekiMap.begin(), end = seisekiMap.end(); i != end; ) {
pair<MMAP::iterator, MMAP::iterator> p = seisekiMap.equal_range(i->first);
cout << i->first << ":";
for (MMAP::iterator first = p.first, last = p.second; first != last; ++first)
cout << first->second << ' ';
cout << endl;
i = p.second;
}
0653347
2006/01/05(木) 01:51:56そうです。
arr_dataに入る情報としては、
最初’O(アルファベットのオー)’
openで開いた座標が爆弾だった場合’B’
bombで開いた座標が爆弾だった場合’b’
openで開いたときには、周りの爆弾の数の文字が入るようにしてあります。
0654デフォルトの名無しさん
2006/01/05(木) 02:28:25[2]画像上のオプティカルフロー(u,v)をとくことができるオイラー方程式は以下で
与えられる。
ρx^2*u(i,j)+ρx*ρy*v(i,j)=α^2*∇^2*uーρx*ρt
ρx*ρy*u(i,j)+ρy^2*v(i,j)=α^2*∇^2*v-ρy*ρt
この連立方程式を解くガウスザイデル法のプログラムを作成せよ。
ここでρx,ρy,ρtは画像上の差分を用いることより既知とし、αは
右辺が急激な変化をしないようにするための重みである。また
∇^2*u、∇^2*vは4近傍における速度の平均値である。
∇^2*u=(u(i-1,j)+u(i+1,j)+u(i,j+1)+u(i,j-1))/4 -u(i,j)
∇^2*v=(v(i-1,j)+v(i+1,j)+v(i,j+1)+v(i,j-1))/4 -v(i,j)
[3]
3.1 Windows XP
3.2 borland c++5.5.1
3.3 Cのみでお願いします
[4]二〇〇六年一月六日
[5]動画像処理を習っております。問題文がわかりにくかったらスイマセン。
本当に考えたのですがわからなかったのでご教授お願いします。
0655648
2006/01/05(木) 08:02:08どうもありがとうございます。
これで何とかなりそうです。
0656デフォルトの名無しさん
2006/01/05(木) 09:51:351)グラフィックを扱う場合はそのライブラリやプログラムの構成を明示してほしい。
→授業で提示されたプログラムをどこかに上げてくれ。
2)数式はその分野を知らないとわけがわからない。
→解説が載ってるWebページや授業の資料を見せてくれ。
んじゃ、俺は生活のために出かけてくる。
0657デフォルトの名無しさん
2006/01/05(木) 09:57:24Gaussなんとか法自体は何度もスレで出てるからそれを改造してみたらどうよ?
作ろうにもその数式がなんなのか理解できん
0658デフォルトの名無しさん
2006/01/05(木) 11:27:58やはり説明不足でしたね...すみませんm(__)m。
画像の形式は、pgm形式です。
現在できているプログラム(構成)については、
1.画像入力部(pgm形式なのでRGBが数値データで得られる。それをモノクロへ変換し
画像へ変換(二次元配列へ値を入れる))
2.画像出力部(最終的な(必要な処理を施した)データを出力する)
3.ρx,ρy、ρt計算部(定数を計算する)
あとu,vをガウスザイデル法より導出したいのですがその部分のルーチンが
わからないのです。参考になるページを見つけたのでこちらを参考にして
いただけるとより問題を理解していただけると思います。
http://planner.t.u-tokyo.ac.jp/member/fuse/optical_flow.pdf#search='蜍セ驟肴ウ・%20繝ゥ繝励Λ繧キ繧「繝ウ'
このページの2,3,4ページ部分です。
0659デフォルトの名無しさん
2006/01/05(木) 11:34:56[2]文字列と配列を使用したおみくじプログラムを作成せよ。
(実行するたびに結果がランダムになるようにせよ)
[3]
3.1 Windows XP
3.2 VC
3.3 C言語
[4]2005年1月5日午後6時まで
[5]期間が短いのできついかもしれませんが、よろしくお願いします。
0660デフォルトの名無しさん
2006/01/05(木) 11:44:50#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char rst[2][5]={"大吉","大凶"};
srand((unsigned int)time(NULL));
printf("結果:%s\n",rst[rand()%2]);
return 0;
}
0661デフォルトの名無しさん
2006/01/05(木) 11:52:270663デフォルトの名無しさん
2006/01/05(木) 13:08:5550点 75点 36点 88点 68点 90点 67点 82点 45点 77点
よく分からないのでぜひ教えてください。
宜しくお願いします。
0664デフォルトの名無しさん
2006/01/05(木) 13:19:19>>1読め
0665デフォルトの名無しさん
2006/01/05(木) 13:19:49C言語でお願いします。
提出期限は今日の五時までです。
初心者で何も分からないのですがどうぞ宜しくお願いします。
0666デフォルトの名無しさん
2006/01/05(木) 13:20:37つ&&
0667デフォルトの名無しさん
2006/01/05(木) 13:21:40テンプレも読めないカスだったのか・・・('A`)
0668デフォルトの名無しさん
2006/01/05(木) 13:21:58入力方法が書いてないからとりあえず標準入力で。
#include <stdio.h>
int main(){
int n,count=0;
while(scanf("%d",&n)!=EOF){
if((50<=n)&&(n<75)) count++;
}
printf("%d\n",count);
return 0;
}
0669663
2006/01/05(木) 13:29:44ほんと、助かりました。
0670デフォルトの名無しさん
2006/01/05(木) 14:40:23[2] 問題文(含コード&リンク):
挟み将棋の挟み判定で、相手の駒の動きを
端で封じた場合の挟み判定を行い、いくつ駒を
とったかを数える関数を作成せよ。
碁盤はboard[11][11]で表されるものとし、
盤の周り(board[0][y],board[x][0],board[10][y]
board[x][10])には99、相手の駒の座標には1、自分の
駒の座標には2、何もない座標には0が格納されているも
のとする。相手を囲めたとき、輪の中にある相手の駒は
全て0になり、0になった駒数をcountとして返す。
int encircled( ... ){
...
return count;
}
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 06年1月7日
[5] その他の制限: 構造体まで、
標準ライブラリに含まれる関数は使用可能
宜しくお願いしますm(__)m
0671デフォルトの名無しさん
2006/01/05(木) 15:15:06999999
91112
9112
912
92
[2] 問題文(含コード&リンク):
口頭で出された問題ですので正式な問題文はありませんが問題はこのようなものです
与えられた16進数の入力を2進数に変換し,2進数に含まれる1の数を出力せよ
例えばFFFFという入力の場合には1111 1111 1111 1111に変換し,16を出力
0001の場合には0000 0000 0000 0001に変換し,1を出力といった具合です
[3] 環境
[3.1] OS:Unix
[3.2] コンパイラ名とバージョン:ちょっとわかりません・・
[3.3] 言語:C
[4] 期限: 1月7日
[5] その他の制限:特に制限はありません
よろしくお願いいたします
0673デフォルトの名無しさん
2006/01/05(木) 15:34:044桁の16進数を16桁の2進数にするの?
0674デフォルトの名無しさん
2006/01/05(木) 15:39:22そうです。。全然構想沸きませんorz
0675デフォルトの名無しさん
2006/01/05(木) 16:19:32#include <stdio.h>
int to_radix_2(unsigned int x, char* s) {
int index = 0, left = 0, digit, n = 0;
char temp;
do {
digit = x & 1;
if (digit) ++n;
s[index++] = digit + '0';
x >>= 1;
if ((index + 1) % 5 == 0) s[index++] = ' ';
} while (index < 20);
s[--index] = '\0';
while (left < --index) {
temp = s[left];
s[left++] = s[index];
s[index] = temp;
}
return n;
}
int main(void) {
char s[32];
int x, n;
printf("Enter Number:"); scanf("%4x", &x);
n = to_radix_2(x, s);
printf("%s\n%d\n", s, n);
}
0676デフォルトの名無しさん
2006/01/05(木) 16:24:55説明不足で申し訳ありません
入力は0000からFFFFまで4桁の16進数です
その16進数を表現する2進数に変換をしてそこに含まれる1の数をカウントするというプログラムです
どうにも説明下手で申し訳ありません・・・
0677デフォルトの名無しさん
2006/01/05(木) 16:27:32//起動後、標準入力から16進数値を一回入力すると結果を出力する。
int main()
{
printf("Input hexadecimal value(use 0-9a-f):");
char buf[100];
fgets(buf, sizeof(buf), stdin);
unsigned bits = 0;
for (char * p = buf; !(*p == '\0' || *p == '\n'); ++p) {
int digit;
if (*p >= '0' && *p <= '9') {
digit = *p - '0';
} else if (*p >= 'a' && *p <= 'f') {
digit = *p - 'a' + 10;
} else {
fprintf(stderr, "Can't convert: illegal character?\n");
return EXIT_FAILURE;
}
printf("%.5s", digit * 5 + "0000 0001 0010 0011 0100 0101 0110 0111 "
"1000 1001 1010 1011 1100 1101 1110 1111 ");
bits = bits << 4 + digit;
}
bits -= bits >> 1 & 0x55555555;
unsigned tmp = (bits & 0x33333333) + (bits >> 2 & 0x33333333);
tmp += tmp >> 4;
tmp &= 0x0f0f0f0f;
tmp += tmp >> 8;
tmp += tmp >> 16;
printf("\n%d\n", (unsigned char) tmp);
return EXIT_SUCCESS;
}
0678デフォルトの名無しさん
2006/01/05(木) 16:42:23・pgmを扱うプログラム(授業で提示されているはずだ)
・処理したい画像(ファイル形式の細かいとこや、画像ファイルの特徴を知りたい)
をup。
資料を読む限り、複数の画像が必要そうだ。
0679デフォルトの名無しさん
2006/01/05(木) 17:26:17初心者にはいい勉強になりそうだ
0680デフォルトの名無しさん
2006/01/05(木) 18:15:17ありがとうございます
現在はすぐ試せる環境にありませんのでソースを解析する段階までやり,
明日すぐにでも試してみようと思います
0681デフォルトの名無しさん
2006/01/05(木) 18:32:58プログラムは、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=31
の310におきました。(スイマセン、どこにアップしたらいいかわからなかったので)
画像ってどうやってupしたら良いですか?どう圧縮しても50k以上に
なってしまうのですが...。pgmなんでサイズ大きいんですよね。
0682347
2006/01/05(木) 18:46:31とりあえず、1マスずつなら、周囲の爆弾をカウントすることは出来るようになりました。
後は、開いたマスの値が0だったとき、再帰的に周りのますを開いてマスの値が0のところをすべて開く処理だけなのですが、
これがさっぱり分かりません。
どなたか、ご支援をよろしくお願いします。
0683デフォルトの名無しさん
2006/01/05(木) 18:49:19俺もそう思った。
でも、よく考えたら先生が初心者育てるための課題なんだから、
いい勉強にならなきゃダメ先生じゃん。
0684デフォルトの名無しさん
2006/01/05(木) 19:02:48この前マインスイーパー作ったからソースから該当箇所探してみるよ。
0685デフォルトの名無しさん
2006/01/05(木) 19:23:510686デフォルトの名無しさん
2006/01/05(木) 19:28:01とりあえず俺もカウントなら余裕に出来たが
もし爆弾個数が0の場合周りのマスに再帰を掛けたら本来開くべき場所でないところも開いてしまう罠に陥ってしまった罠
どうやらグーグル先生に聞いてみたほうが速そうだ
0687660
2006/01/05(木) 20:07:040688デフォルトの名無しさん
2006/01/05(木) 20:30:48素直にopen_window()の中でチェックした爆弾の個数が0だったら、
上下左右のセルに対してopen_window()を呼べばいいんじゃないの?
0689デフォルトの名無しさん
2006/01/05(木) 20:36:05右のセルが左のセルに対してopen_window()を呼ばないようにしないとね。
だから先に開けておいてまだ開いてないセルに対して呼べばいいのか。
0690デフォルトの名無しさん
2006/01/05(木) 20:40:21解説無いからテラムズス(´A`)
ここの問題全部を書式化して解説付で僕に1万円で売って下さい。
0691347
2006/01/05(木) 20:41:21すみませんが、実際にコードを書いてみていただけませんか?
自分で考え付く限りのコードは書いてみたんですが、出来ませんでした。
0692デフォルトの名無しさん
2006/01/05(木) 20:44:47諦めたらそこで試合終了だよ
0693デフォルトの名無しさん
2006/01/05(木) 20:46:08急いで解いたから変数とか適当。
デバッグ用の出力が残ってるから消しといて。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1409.txt
端にある1から辿って2と99に囲まれた領域を調べる。
その領域内に0があればまだ動けるので敵駒は取れない。
領域がすべて1ならカウントしながら駒を消去。
0694デフォルトの名無しさん
2006/01/05(木) 20:49:2399 99 99 99 99 99 99 99 99 99 99
99 0 0 2 0 0 0 2 0 0 99
99 2 2 1 2 0 0 0 0 1 99
99 1 1 1 2 0 2 0 1 0 99
99 1 1 2 0 0 0 0 0 0 99
99 1 1 1 2 0 0 1 0 0 99
99 2 2 2 0 0 0 0 2 0 99
99 1 1 1 2 2 2 0 0 0 99
99 1 0 2 1 1 1 2 0 0 99
99 1 1 2 1 1 1 1 2 0 99
99 99 99 99 99 99 99 99 99 99 99
0697デフォルトの名無しさん
2006/01/05(木) 21:28:57ちゃんと読んでない上に動かしてもないから知らないけど。
void open_window(int n,int x,int y)
{
if (x < 0){
return;
}
if (y < 0){
return;
}
if (x >= n){
return;
}
if (y >= n){
return;
}
if(arr_data[i] != 'O'){
return;
}
既存部分
open_window(n, x - 1, y);
open_window(n, x + 1, y);
open_window(n, x, y - 1);
open_window(n, x, y + 1);
}
0698デフォルトの名無しさん
2006/01/05(木) 21:30:57横レス失礼。最大限>>682のコードを生かすとしたら
(1)>>682のopen_window関数の先頭に以下を追加
if (x < 0 || y < 0 || x > n || y > n) {
return;
}
if (arr_data[n*x+y] != 'O') {
return;
}
if (arr_bomb[n*x+y] == 1) {
return;
}
(2)>>682のarr_data[j]=48+cnt[j];の下のコードを削除
(3)>>682のarr_data[j]=48+cnt[j];の下に以下のコードを追加
if (cnt[j] == 0) {
for(int xx=x-1; xx<=x+1; ++xx) {
for (int yy=y-1; yy<=y+1;++yy) {
open_window(n, xx, yy); /* 再帰呼び出し */
}
}
}
説明は次レスで
0699デフォルトの名無しさん
2006/01/05(木) 21:32:00あ、ごめん。
if文抜けてた。
open_window()の再帰するところ、爆弾数が0個のときだけにしてね
0700698
2006/01/05(木) 21:36:45(2)デバッグ用だと思うけど、再帰のときも表示されてしまい邪魔なので削除
(3)周りのセルに対して再帰呼び出し
カレントセルにも呼んでるけど(1)に引っかかってすぐ戻ってくるはず
#ありゃ、697とかぶってしまった…ごめんね
0701デフォルトの名無しさん
2006/01/05(木) 21:37:58こちらこそ。ごめん。
でも(3)はちょっとまずくない?
xx=x-1でyy=y-1のときもopen_window()呼んじゃうから…
0702デフォルトの名無しさん
2006/01/05(木) 21:40:15ありがとうございましたm(__)m
main内のputだけ知らない構文なのでちょっと調べてきます。
0703347
2006/01/05(木) 21:46:00おお!回答ありがとうございます!!
一度確認してみたところきちんと動きました。
まだ、他のところに細かいバグなどがあるんですが、とりあえずこれで提出できます。
本当にありがとうございました。
0704347
2006/01/05(木) 22:05:43>>697さんのは、爆弾以外の場所すべてが開かれてしまいます。
>>698さんのは、たいてい上手くいくのですが、
初期状態が
□□○□□
□○□□□
○□□□○
□□○□□
のとき、openで(x,y)=(4,4)と入力したら、
□□□□□
□□□□□
□□□□□
□□□2 1
□□1 0
という風に、4行4列目が空白になってしまいました。
おそらく、ここには、違う文字か何かが入っているためだと思うのですが。。。
0705347
2006/01/05(木) 22:07:38○5行5列目
です。
0706698
2006/01/05(木) 22:10:36「周囲」の意味を8方向で考えてそうしてみたけど4方向なのかな?
確認してみたらウィンドウズ付属のマインスイーパーは8方向っぽい。
>>704-705
ちょっと待ってて、確認してみる。
0707347
2006/01/05(木) 22:15:01open_window()の再帰を
if(cnt[j]==0)
{
}
の中に入れれば、全部は表示されなくなりますが、706さんの言うように4方向しか表示されません。
0709347
2006/01/05(木) 22:21:20結果としては、きちんと8方向に動作しましたが、
>>704-705
と同じ症状が発生してしまいました。
0710698
2006/01/05(木) 22:32:26(1)の条件式が間違ってた
if (x < 0 || y < 0 || x > n || y > n) {
となってるのを
if (x < 0 || y < 0 || x >= n || y >= n) {
にしてみて。
0712デフォルトの名無しさん
2006/01/05(木) 22:40:21ごめん。4方向しか表示されないってどういう意味で言ってるの?
再帰的に空白セルが開いていかないって言ってるの?
0713670
2006/01/05(木) 22:41:31putの意味は大体わかったのですが
check :(1:8) 0
check :(2:9) 0
...
で無限ループしてしまいます・・・。
0715デフォルトの名無しさん
2006/01/05(木) 23:05:18へこむ(´・ω・`)
0716デフォルトの名無しさん
2006/01/05(木) 23:16:060717693
2006/01/05(木) 23:25:16ありゃ、>>694のデータでなるの?
違ったらループしちゃうときのデータください。
putsはprintf打つのがめんどくさかっただけだからw
0718デフォルトの名無しさん
2006/01/05(木) 23:39:09画像upしときました。はじめてやったのでうまくできたかわかりませんが...
http://www4.axfc.net/uploader/7/so/N7_5655.png.html
http://www4.axfc.net/uploader/7/so/N7_5654.png.html
です。DLキーは、5959です。ちなみに画像を落とせたら、名前のpngをpgmに
変えてgimpなどのビューアーでごらんください。プログラムもぜひ教えて
ください。
0719デフォルトの名無しさん
2006/01/05(木) 23:39:27http://midl.lightspeed.co.jp/products/HTML_Lib/index.html
HYMLパーサ。参考までに
0720670
2006/01/05(木) 23:56:58こんな感じです。putsは状況変化を
示すのもだというのはわかりました。
99 99 99 99 99 99 99 99 99 99 99
99 0 0 0 0 0 0 0 2 1 99
99 0 0 0 0 0 0 0 2 1 99
99 0 0 0 0 0 0 0 2 1 99
99 0 0 0 0 0 0 0 2 1 99
99 0 0 0 0 0 0 0 2 1 99
99 0 0 0 0 0 0 0 2 1 99
99 0 0 0 0 0 0 0 2 1 99
99 0 0 0 0 0 0 0 2 1 99
99 0 0 0 0 0 0 0 2 1 99
99 99 99 99 99 99 99 99 99 99 99
こんな感じです。
0721デフォルトの名無しさん
2006/01/06(金) 00:08:09普通に動くんだけどなぁ…
配列への入力はちゃんとできてる?
0722670
2006/01/06(金) 00:18:500723デフォルトの名無しさん
2006/01/06(金) 00:29:36[2] 問題文(含コード&リンク):
1クラス40人分の座席を乱数を用いて割り当てるプログラムを作れ。
座席は右上から1,2,3・・・40となるようにすること
32…9 1
・ ・ 2
・ ・ 3
・ ・ ・
・ ・ ・
40 16 8
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:borland c 5.5
[3.3] 言語:C
[4] 期限: 1月10日
[5] その他の制限:特に制限はありません
0724723
2006/01/06(金) 00:31:50右上から下に向かって1,2,3・・・8で8の倍数になったら隣の列の一番上に行きます。
0725デフォルトの名無しさん
2006/01/06(金) 00:41:10for(i=1; i<=40; ++i) 配列[i]=i;
for(i=1; i<=40; ++i){1〜40の値を2つ適当に選んで、そのポジションの配列の値を入れ替える}
0726デフォルトの名無しさん
2006/01/06(金) 01:08:44[2] 問題文(含コード&リンク):キーボードから入力した整数nについて、ニュートン法を用いて
n^frac{1}{2}、n^frac{1}{3}、・・・、n^frac{1}{10}
を順に出力するプログラムを作成せよ。但し、許容誤差は10^-10。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年1月5日18時
[5] その他の制限:なし
0727デフォルトの名無しさん
2006/01/06(金) 01:09:17id:1〜40を順に付ける
num:乱数を与える
numでソートして、順に席を割り当てるとか。
0728デフォルトの名無しさん
2006/01/06(金) 01:18:06[2] 問題文(含コード&リンク):int_{-1}^{1}f(x)dxをモンテカルロ法で計算するプログラムを作れ。
試行回数n:=2^MとしてM=2からM=20までのMの値と積分値を出力せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年1月6日18時
[5] その他の制限:なし
0729デフォルトの名無しさん
2006/01/06(金) 01:25:53[2] 問題文(含コード&リンク):パスカルの3角形のアルゴリズムn_C_r=n-1_C_r-1+n-1_C_rについて、計算量O(2^n)未満で実行することができるか
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年1月6日18時
[5] その他の制限:なし
0730デフォルトの名無しさん
2006/01/06(金) 01:31:510731デフォルトの名無しさん
2006/01/06(金) 01:33:550732デフォルトの名無しさん
2006/01/06(金) 01:34:502^3 なら「2の3乗 (=8)」って意味
0733デフォルトの名無しさん
2006/01/06(金) 01:36:19#include <stdio.h>
#include <math.h>
int a, n;
double f(double x) {
return pow(x, a) - n;
}
double df(double x) {
return a * pow(x, a - 1);
}
int main(void) {
double x, ox, d = pow(10., -10);
scanf("%d", &n);
for (a = 2; a <= 10; a++) {
x = (double)n;
do {
ox = x;
x = ox - f(ox) / df(ox);
} while (fabs(ox - x) > d);
printf("%d^frac{1}{%d}=%.10f\n", n, a, x);
}
return 0;
}
0734デフォルトの名無しさん
2006/01/06(金) 01:51:55fは与えられてないの?
0735デフォルトの名無しさん
2006/01/06(金) 02:27:47計算で確認をしてないが、次のように計算すればオーダーが
2^nからやや下がると思う。
(n,r)=(n-2,r-2)+2*(n-2,r-1)+(n-2,r)
0736デフォルトの名無しさん
2006/01/06(金) 04:42:59[2] 問題文(含コード&リンク):Σ1/(i + k) の計算
正の整数 n を入力し,次の式の値を計算し,出力するプログラムを書け.
1/(1+4) + 1/(2+4) + 1/(3+4) + ・・・ + 1/(n+4)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0
[3.3] 言語:C++
[4] 期限: 1月中旬
[5] その他の制限:特にありませんが基礎をちょっと覚えた程度の初心者です。
よろしくお願いします。
0737デフォルトの名無しさん
2006/01/06(金) 08:27:14ようやくこれで「計算」できるようになったんだが、もうひとつ足りない。
出力はどういうふうにするの?
0738デフォルトの名無しさん
2006/01/06(金) 08:51:14特に与えられていません。
0739魚チョコ
2006/01/06(金) 09:09:24初心者っぽく書いたのでどうぞ。
それにしても収束する級数を計算させろよな。
#include <iostream>
using namespace std;
main()
{
double s, x;
int n;
while(1){
cout << "N=";
cin >> n;
if (n <= 0) {
cout << "Data out of range." << endl;
}
else break;
}
s=0.0;
x=1.0+4.0;
while(n){
s=s+1.0/x;
x=x+1.0;
n--;
}
cout << "Ans:" << s << endl;
}
0740デフォルトの名無しさん
2006/01/06(金) 10:51:11[2] 問題文 : ローマ字かな変換
詳しくは、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1410.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 1月8日
[5] その他の制限:特にありません。
授業でもらったデータです。これ以外まったく指定はありませんでした。
どうやっても自分ではうまくいきません。この課題を提出しないと単位はもらえないんです。
誰かお願いします。非常に面倒な問題ですので、関数やその他のことは
各自の好みにお任せいます。(このままが理想ですが・・・)
0741デフォルトの名無しさん
2006/01/06(金) 10:51:50[2] 問題文 : ローマ字かな変換
詳しくは、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1410.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 1月8日
[5] その他の制限:特にありません。
授業でもらったデータです。これ以外まったく指定はありませんでした。
どうやっても自分ではうまくいきません。この課題を提出しないと単位はもらえないんです。
誰かお願いします。非常に面倒な問題ですので、関数やその他のことは
各自の好みにお任せいます。(このままが理想ですが・・・)
0742740
2006/01/06(金) 10:55:58すいません。
0743デフォルトの名無しさん
2006/01/06(金) 10:58:30つまり簡単な自動羊肉を実装しろという事か
つーか、これは前に面倒杉ということでスルーされたはずだがシツコイ
0744デフォルトの名無しさん
2006/01/06(金) 11:06:360745デフォルトの名無しさん
2006/01/06(金) 11:32:45[2] 問題文:リスト構造の成績処理プログラムに、引数として指定されたデータを指すポインタを返すSEARCH関数を追加せよ、ただし該当データがない場合はNULLを返すようにせよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 2.9
[3.3] 言語:C
[4] 期限:[ 2006年01月08日まで]
[5] その他の制限:なし
関数部分だけお願いします。
0746デフォルトの名無しさん
2006/01/06(金) 11:45:50[2] 問題文(含コード&リンク):英単語管理プログラムを作成.
配列の要素数を変更可能にするなどプリプロセッサ制御文を用いて拡張性の高いプログラムになるように工夫せよ.
また,分割コンパイルしやすいように各機能別に関数化すること
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0
[3.3] 言語:C++
[4] 期限: 来週の水曜
[5] その他の制限:初期状態を除いてプログラム実行時に既存の英単語リストのファイル(list.txt)を読み込み,2次元配列に格納する.
(例:words[単語数][単語文字数])
単語登録,リスト表示,終了の各機能が選択可能なメニュー画面を表示する.ただし,登録可能な単語数を表示し,リスト内と同一単語の登録は受付けない.
また,リスト表示は登録した英単語を含めるものとする.
プログラム終了時に新しくできた英単語リストを読み出したファイルに更新する.
なお,英単語リストのファイルは,1行1単語として出力するものとする
ヒントとして文字列の比較は「strcmp関数」,文字列の複写は「strcpy関数」をそれぞれ使用となっていますがどうすればいいのかさっぱりです。
どなたかご指導お願いしますm( _ _ )m
0747デフォルトの名無しさん
2006/01/06(金) 12:30:140748デフォルトの名無しさん
2006/01/06(金) 12:41:43scanf()でうんぬん。
0749740
2006/01/06(金) 13:08:18非常に面倒なのは分かってます。私も進級に関わらないのなら絶対にしません。
でも、しないといけないんです。ほかに頼れる人はいないんです。お願いします。
0750デフォルトの名無しさん
2006/01/06(金) 13:14:220751デフォルトの名無しさん
2006/01/06(金) 13:28:21状態数 100 も越えないって。プログラム 200 行位でできるんじゃないかな?
単位に関わらないなら絶対にしないって思うんだったら、多分ここ見ている人
みんな単位に関係ないんだから誰もやらないと思うね。
手際良くオートマトン書いて、整理しながら大きなプログラムを書く練習に
なるはずだけどな。
0752デフォルトの名無しさん
2006/01/06(金) 13:31:080753デフォルトの名無しさん
2006/01/06(金) 13:33:590754デフォルトの名無しさん
2006/01/06(金) 13:40:530755デフォルトの名無しさん
2006/01/06(金) 13:46:24マジレス恐縮だが、そんなことをしてまで進級したとして、
毎年同じことを繰り返すつもりか?
或いは就職してからも?
進級に関わるのなら尚のこと、自力でやるべきではないのか?
0756デフォルトの名無しさん
2006/01/06(金) 13:57:490757デフォルトの名無しさん
2006/01/06(金) 14:02:07えっと出力は、最大ベクトル、最小ベクトル(u,vの)と画像全体での平均
ベクトルを出力するようにしたいです...。
あと一つ足りないっていうのは、結果を出力する部分のことですか?
0758デフォルトの名無しさん
2006/01/06(金) 14:58:58俺は単位を落としそうになったら友人ネットワークと自身の気力を極限まで駆使して
意地でも取ってたぞ
結果大学4年間で単位を落とした事は一度も無い
進級がかかってるなら、大学の教授に質問するなり
プログラムの得意な友人に頼るなり
図書館でプログラムの本を読み漁るなり
ネットで調べまくるなりして
意 地 で も 単 位 を 取 れ
単位なんぞ努力しだいでなんとでもなる
0759デフォルトの名無しさん
2006/01/06(金) 15:01:26だから、あらゆる手段を駆使して単位取ろうとしてるんじゃないの?
0760デフォルトの名無しさん
2006/01/06(金) 15:04:18けど、ここでだめぽそうなら別の手を考えるしかないだろ
何か誰もやりそうにない雰囲気だし
ここに頼る→誰もしなかった→留年
になったら寒いぞ
0761デフォルトの名無しさん
2006/01/06(金) 15:07:22>
>以下に実行例を示す。
>tyu-rippu
>チューリップ
問題が矛盾起こしてるから作れねーよってレポートに書いて出(ry
0762デフォルトの名無しさん
2006/01/06(金) 15:11:43[2] 問題文(含コード&リンク):
変数x y wa sa seki shouを実数型で宣言し。xに18.2 yに5.1を代入
その和 差 積 商を計算し画面に表示する
[3] 環境
[3.1] OS:windowsXP
[3.2] BCC developer
[3.3] c
[4] 期限: ([2006年1月9日まで
[5] 基本しか学習してません
0763デフォルトの名無しさん
2006/01/06(金) 15:15:21基本を学習してるんならできるだろ
0764デフォルトの名無しさん
2006/01/06(金) 15:19:53処理自体は簡単なはず
自力で出来ないなら進級諦めろ
0765デフォルトの名無しさん
2006/01/06(金) 15:23:17てか、ちっとは自助努力のあとを見せてくれ
0766デフォルトの名無しさん
2006/01/06(金) 15:23:30#include<stdio.h>
int main()
{
double x=18.2,y=5.1;
double wa=0,sa=0,seki=0,shou=0;
wa=x+y;
sa=x-y;
seki=x*y;
shou=x/y;
printf("和=%f\n差=%f\n積=%f\n商=%f\n",wa,sa,seki,shou);
return 0;
}
0767デフォルトの名無しさん
2006/01/06(金) 15:46:21"データファイルはe-Learning システムからダウンロードして使用すること。"
ってあるからそのファイルが無いと作れないんで内科医?
0768デフォルトの名無しさん
2006/01/06(金) 15:50:440769672 ◆d.aQepUCmo
2006/01/06(金) 15:50:44私の問題の覚え間違いが発覚いたしましたのでもう一度お願いいたします
内容自体は>>672とほとんど同じなのですが
入力が0000からFFFFではなく0x0000から0xFFFFまでという入力でした
申し訳ありませんがよろしくお願いいたします
0770デフォルトの名無しさん
2006/01/06(金) 15:50:49[2] 問題文(含コード&リンク):
数値を入力し、その回数だけ自分の氏名を画面に表示する。
[3] 環境
[3.1] windows XP
[3.2] gcc
[3.3] 言語:C言語
[4] 期限:2006年1月8日
[5] その他の制限:なし
0771デフォルトの名無しさん
2006/01/06(金) 15:51:51その変更なら最初に2文字読み飛ばせばいいだけ
0772デフォルトの名無しさん
2006/01/06(金) 16:04:36作るから名前晒してくれ
0773デフォルトの名無しさん
2006/01/06(金) 16:05:06#include<stdio.h>
#define NAME "ここに自分の名前入れてちょ"
int main()
{
int a=0,b=0;
scanf("%d",&a);
for(b=0;b<a;b++){
puts(NAME);
}
return 0;
}
0774デフォルトの名無しさん
2006/01/06(金) 16:07:432文字読み飛ばすという処理のやり方を教えていただけませんでしょうか?
入力を左にシフトさせるだけではまずいですよね・・・
0775デフォルトの名無しさん
2006/01/06(金) 16:15:19[2] 問題文(含コード&リンク):Σxi/(i + k) の計算
[問題]正の整数 n と x(実数)の値を入力し,次の式の値を計算し,出力するプログラムを書け.
x/(1+4.0) + x2/(2+4.0) + x3/(3+4.0) + ・・・ + xn/(n+4.0)
(分子はx、xの2乗、xの3乗、・・・、xのn乗です)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0
[3.3] 言語:C++
[4] 期限: 一月中旬
[5] その他の制限:自分である程度作ってみましたがxのn乗の書き方がわかりませんでした。
0776675
2006/01/06(金) 16:18:53#include <stdio.h>
int to_radix_2(unsigned int x, char* s) {
int index = 0, left = 0, digit, n = 0;
char temp;
do {
digit = x & 1;
if (digit) ++n;
s[index++] = digit + '0';
x >>= 1;
if ((index + 1) % 5 == 0) s[index++] = ' ';
} while (index < 20);
s[--index] = '\0';
while (left < --index) {
temp = s[left];
s[left++] = s[index];
s[index] = temp;
}
return n;
}
int main(void) {
char s[32];
int x, n;
printf("Enter Number:"); getchar(); getchar(); scanf("%4x", &x);
n = to_radix_2(x, s);
printf("%s\n%d\n", s, n);
}
0777デフォルトの名無しさん
2006/01/06(金) 16:24:31#include <stdio.h>
int main(void) {
int n, i;
double x, xn, result = 0.;
scanf("%d", &n); scanf("%lf", &x); xn = x;
for (i = 1; i <= n; i++, xn *= x)
result += xn / (i + 4.);
printf("%f", result);
return 0;
}
0778デフォルトの名無しさん
2006/01/06(金) 16:25:26int hoge=x;
for(int i=1;i<n;i++)
hoge*=x;
0779デフォルトの名無しさん
2006/01/06(金) 16:27:28何度もありがとうございました
本当に助かりましたです
0780デフォルトの名無しさん
2006/01/06(金) 17:14:49[2] 問題文(含コード&リンク):円柱、円錐、球の体積を求める計算プログラムを作成せよ。
高さ=6、半径=3小数点は8桁までとする。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual.net studio 2003
[3.3] 言語:C++
[4] 期限: 1月23日
[5]授業も言われるがまま打ち込んでいたので基本すら理解していない状況です。
どうか助けてください。
0782すみません、間違えました
2006/01/06(金) 17:37:10[2] 問題文(含コード&リンク):円柱、円錐、球の体積を求める計算プログラムを作成せよ。
高さ=6、半径=3小数点は8桁までとする。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual studio.net2003
[3.3] 言語:C++
[4] 期限: 1月23日
[5]授業も言われるがまま打ち込んでいたので基本すら理解していない状況です。
どうか助けてください。
0783デフォルトの名無しさん
2006/01/06(金) 17:52:140784デフォルトの名無しさん
2006/01/06(金) 18:23:57とりあえず単語を追加する関数だけ作ってみたので参考に。
他のファイル入出力とかはできるよね?
/*リストの配列:list[MAX_WORD][WORD_LEN]*/
/* n:現在の単語数 */
int add(){
char word[WORD_LEN];
int i;
/*リストがいっぱいのとき*/
if(n == MAX_WORD){
printf("cannot add.\n");
return 1;
}
/*単語入力*/
printf("input word:");
scanf("%s",word);
/*すでにあるか確認*/
for(i=0;i<n;i++){
if(strcmp(word,list[i])==0){ /*既存の単語と一致しますた*/
printf("already added.\n");
return 1;
}
}
strcpy(list[n],word); /*単語追加*/
n++; /*単語数更新*/
return 0;
}
0785782
2006/01/06(金) 22:49:00履修失敗したな〜(涙)
[2] 問題文(含コード&リンク):以下の式をランダム探索法(MatyasとSolis&Wetsの二つ)、アルミジョーの定理を使って解け。
f(x) = 4*x1*x1 - 2.1*x1*x1*x1*x1 + x1*x1*x1*x1*x1*x1/3 + x1*x2 - 4*x2*x2 + 4*x2*x2*x2*x2
-2.5≦x1≦2.5、-1.5≦x2≦1.5
ランダムのほうは初期値x=(0,0)←列が打てないので。一次元正規分布は平均0、分散は0.1と0.01の二種類、と書いてあります
アルミジョーの初期値はx1=0.15、x2=0.1、制約条件なしとしてやる、と書いてあります。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン: LSI C-86 試食版
[3.3] 言語:Cかと。
[4] 期限: 今年の1月13日まで
[5] その他の制限:元がプログラムの授業ではないので、何でも言いといいながらCが一番いいとも言いました。
完全にちんぷんかんぷんなのでよろしくお願いします。
0787デフォルトの名無しさん
2006/01/06(金) 23:10:17えー、これわからないのはいくらなんでもチョット。
円柱、円錐、球の体積を求めるメソッドを作れ、
っていうのじゃなければこれでいいんじゃない?
#include <cmath>
#include <iostream>
int main()
{
using namespace std;
double pi = 4 * atan(static_cast<double>(1));
const double h = 6;
const double r = 3;
//底面(πr^2)
double circle_bottom = pi * r * r;
//円柱(底面×高さ)
double column = circle_bottom * h;
//円錐(底面×高さ÷3)
double cone = circle_bottom * h / 3;
//球の体積((4πr^3)/3)
double ball = (4 * pi * r * r * r) / 3;
return 0;
}
0788デフォルトの名無しさん
2006/01/06(金) 23:17:100789デフォルトの名無しさん
2006/01/06(金) 23:19:370790デフォルトの名無しさん
2006/01/06(金) 23:25:28行数オーバーしたから削った。
0791デフォルトの名無しさん
2006/01/06(金) 23:41:140792デフォルトの名無しさん
2006/01/07(土) 00:49:190793デフォルトの名無しさん
2006/01/07(土) 01:02:130794782
2006/01/07(土) 01:05:46校舎の方に行かないと確認できないのが悔しいですが…
本当にありがとうございました!
0795デフォルトの名無しさん
2006/01/07(土) 01:20:47[2] 問題:下記 標準入力で英文を入力して、英文内の動詞が辞書に対応していたら
過去形で、対応していなければそのままの形で英文を出力できるようにせよ。
なお、入力は一行単位で入力できるようにしなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: BorlandC++
[4] 期限: 1月10日
scanfで書いてみたんですが、fgetsを使う?一行入力がわかりません。
なにとぞお願いします。
#include <stdio.h>
#include <string.h>
main()
{
int i;
char buf[100];
static char *dic[10][2] = { /*辞書*/
{"eat","ate"},{"move","moved"},{"copy","copied"},
{"is","was"},{"walk","walked"},{"look","looked"},
{"hit","hit"},{"smile","smiled"},{"sea","saw"},{"play","played"}};
while (scanf("%s",buf) != EOF){
for(i=0; i<10; i++){
if(strcmp(buf,dic[i][0]) == 0) break;
}
if(i==10)
printf("%s\n", buf);
else printf("%s\n", dic[i][1]);
}
}
0796デフォルトの名無しさん
2006/01/07(土) 02:22:45[2] 問題文(含コード&リンク):3n+1
[問題]正の整数値nを読み込み,偶数の時はその値を2で割り,
また,奇数の時はその値を3倍したものに1を加えるという処理をnの値が1になるまで繰り返すプログラムを書け.
その際,入力された値,及び,各演算を行った結果得られたnの値を,
得られた順番に1つ以上のスペースを空けて出力すること。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0
[3.3] 言語:C++
[4] 期限: 一月中旬
[5] その他の制限:特にありません。
よろしくお願いします。
0797デフォルトの名無しさん
2006/01/07(土) 03:00:41#include <stdio.h>
#include <conio.h>
int main()
{
int n;
printf("何かの正の整数を入力してください:");
scanf("%d",&n);
while(n!=1){
if(!(n%2)) //もし偶数なら
printf("%d ",n/=2);
else{ //奇数なら
n*=3;
n++;
printf("%d ",n);
}
getch();
}
getch();
return 0;
}
0798796
2006/01/07(土) 03:27:40自分で確認したときは問題なかったのですが、大学の教授のホームページに送信したら
「conio.h: No such file or directory
***error*** コンパイルできませんでした 」
と返ってきました。
大学の講義では<iostream>から始まるものしか習っていません。
ここで前に作ってもらった<stdio.h>で始まるものは大丈夫でした。
iostreamとかの意味を解説書で読んでもイマイチよく分からないので
よろしければ一緒に教えてもらえませんか?
よろしくお願いします。
0799デフォルトの名無しさん
2006/01/07(土) 03:35:19#include <iostream>
using namespace std;
int main()
{
int n;
cout<<"何かの正の整数を入力してください :";
cin>>n;
while(n!=1){
if(!(n%2)){ //もし偶数なら
n/=2;
cout<<n<<" ";
}
else{ //奇数なら
n*=3;
n++;
cout<<n<<" ";
}
}
return 0;
}
0800デフォルトの名無しさん
2006/01/07(土) 03:45:18iostreamはバリバリのジェネリックプログラミングだから、
C++初心者には結構きついよ。
引数付きマニピュレータとか追いかけるのでけでも大変だから。
使い方だけわかっていればいいと思う。
0801デフォルトの名無しさん
2006/01/07(土) 04:16:31文字列をばらす関数があったので使ってみた。
参考:http://www9.plala.or.jp/sgwr-t/lib/strtok.html
-----------------------------------------
char buf[100];
char *wp;
(中略)
gets(buf); /*1行入力*/
/*1回目*/
wp = strtok(buf," ");
for(i=0; i<10; i++){
if(strcmp(wp,dic[i][0]) == 0) break;
}
if(i==10)
printf("%s ", wp);
else printf("%s ", dic[i][1]);
/*2回目以降*/
while ((wp = strtok(NULL," ")) != NULL){
for(i=0; i<10; i++){
if(strcmp(wp,dic[i][0]) == 0) break;
}
if(i==10)
printf("%s ", wp);
else printf("%s ", dic[i][1]);
}
printf("\n");
}
0802デフォルトの名無しさん
2006/01/07(土) 04:21:51もう解答出てるけどたぶん教授が求めてるのは再帰だと思うので再帰で
#include <iostream>
using namespace std;
void solve( int n )
{
cout << n << ' ';
if ( n == 1 ) return;
if ( n % 2 ) // odd
n = n*3+1;
else // even
n /= 2;
solve( n );
}
int main()
{
int n;
cout << "Input an integer > ";
cin >> n;
if ( n <= 0 ) return 1;
solve( n > 0 ? n : -1*n );
cout << '\n';
return 0;
}
0803796
2006/01/07(土) 04:38:51ありがとうございます。
>>799のはnに1を入力すると答えが何も出ませんでした。
>>802のは無事正解することが出来ました。
それで>>799のを自分で考えて色々試してみましたが自分では無理だったので
参考までにnに1を入力した場合に答えが出るように直してもらえないでしょうか?
>>799が何とか読める程度の知識と大学の進度なので。
0804デフォルトの名無しさん
2006/01/07(土) 04:47:24やっつけの仕事でごめんよ
まず数を入力させて
while(n!=1)
nが1では無い限り以下の処理を行う
もし偶数ならば
nを2で割ってそれをnに代入
もし奇数なら
nを3倍にして1を加算しその値をnに代入
だから最初に1を入力してしまうとwhileループに進入できなくなる
正しく本来ならばdo-whileを使用するべき
あともし負の整数が入力されてしまった場合の例外処理も付け加えるべき
0805デフォルトの名無しさん
2006/01/07(土) 04:56:350806デフォルトの名無しさん
2006/01/07(土) 04:59:19あとは頭ひねって考えて
寝る
0808デフォルトの名無しさん
2006/01/07(土) 11:03:48[2] 問題文(含コード&リンク): 地球の公転運動のシュミレーション。
●時間刻を1日として1000年分の計算を行い、また公転運動の軌道を表示する。
●計算精度チェックのために、半径の時間変化を表示する。時間刻を変化して計算を繰り返し、最大半径と最小半径の差と時間刻の関係を図示する。
●さらに時間刻を大きくしたときに、計算が破綻する時の時間刻を求める。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: C
[4] 期限: 1月20日
[5] その他の制限: gnuplotで動かして表示する。
・・・お手上げ状態です。
0809808
2006/01/07(土) 11:05:56太陽質量 1.989e30 kg
地球と太陽との距離 1.496e11
地球の質量 5.974e24 kg
万有引力定数 6.672e-11
0810デフォルトの名無しさん
2006/01/07(土) 12:03:25シュミレーション
シュミレーション
シュミレーション
シュミレーション
0811デフォルトの名無しさん
2006/01/07(土) 12:06:20[2] 問題文:
http://sousou7jp.hp.infoseek.co.jp/html/kadai-02.pdf
http://sousou7jp.hp.infoseek.co.jp/html/kadai-03.pdf
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ:gcc
[3.3] 言語:c
[4] 期限: 2006年1月10日17時まで
[5] その他:625にも載せてあるんですが、
期限が近く自分でやってもさっぱりわからないのでもう一度載せました。
どなたかできるかた本当によろしくお願いします。
0812デフォルトの名無しさん
2006/01/07(土) 12:10:09状態[入力文字数0]
↓<母音>
・出力して状態[入力文字数0]へ
状態[入力文字数0]
↓<子音>
状態[入力文字数1]
↓<母音>
・有効な組み合わせなら出力して状態[入力文字数0]へ
・無効な場合エラー表示して終了
状態[入力文字数1]
↓<子音>
状態[入力文字数2]
↓<子音>
・無効なのでエラー表示して終了
状態[入力文字数2]
↓<母音>
・有効な組み合わせなら出力して状態[入力文字数0]へ
・無効な場合エラー表示して終了
もまえら馬鹿ばっかりだな
状態なんて入力文字数0,1,2の3つしかねーじゃねーかw
0813デフォルトの名無しさん
2006/01/07(土) 12:31:32半径が変化するということは太陽の位置変化も考えるのか。
物理苦手だ…。
0814デフォルトの名無しさん
2006/01/07(土) 13:03:22惑星の公転は楕円軌道を取るってことだと思うが太陽の位置変化なんてあったけ?
…同じく物理は苦手な人
0815デフォルトの名無しさん
2006/01/07(土) 13:11:30クスクス
0816デフォルトの名無しさん
2006/01/07(土) 13:13:12万有引力で太陽も多少円運動させるのかと思った…。
0817デフォルトの名無しさん
2006/01/07(土) 14:23:27http://homepage3.nifty.com/catfood/up/src/up0555.txt
VC++で動作確認しちゃったので、Cで通らなかったら書き直してね。
C++のありがたみがわかった。特にSTL。
0818デフォルトの名無しさん
2006/01/07(土) 15:17:47とりあえずできた。時間刻みはコマンドライン引数で入力。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1411.c
0820818
2006/01/07(土) 15:36:52座標更新の処理が違うわ…。
0821817
2006/01/07(土) 15:47:01消し忘れてた。
0822818
2006/01/07(土) 15:55:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1412.c
40日刻みくらいまでは軌道が出る。
さらに大きくすると地球が太陽系から脱出w
0823デフォルトの名無しさん
2006/01/07(土) 16:09:410824デフォルトの名無しさん
2006/01/07(土) 16:38:49[2] 問題文(含コード&リンク):
単純選択法で使う配列は1つで、
しかもデータの最大値についての情報を使わないプログラムを完成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月11日
[5] その他の制限: なし
よろしくおねがいします
0825魚チョコ
2006/01/07(土) 16:42:30ぐぐれば出るだろうに……。
http://homepage1.nifty.com/daccho/program/algo/sort2.htm
0826デフォルトの名無しさん
2006/01/07(土) 16:43:10死ね
0829デフォルトの名無しさん
2006/01/07(土) 16:48:02死ね
0830魚チョコ
2006/01/07(土) 16:50:31こっちの方がいいかな
http://www.techscore.com/tech/C/8.html
0831デフォルトの名無しさん
2006/01/07(土) 16:53:37調べてる暇があったらコーディングしろよクズ
0832デフォルトの名無しさん
2006/01/07(土) 17:15:20スレ荒らしてる暇があったら自分で作れよクズ
0833デフォルトの名無しさん
2006/01/07(土) 17:54:15[2] 問題文(含コード&リンク):倍数の和と個数
[問題]複数個の正の整数データを読み込み( 0 を入力すると終了),
7 の倍数の和及びその個数を出力するプログラムを書け.
なお,最後に読み込んだ 0 は,データの個数としてカウントしないものとし,
結果は,和と個数を1つ以上のスペースで区切って出力するものとする.
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0
[3.3] 言語:C++
[4] 期限: 一月中旬
[5] その他の制限:iostreamで始まるものでお願いします。
0834デフォルトの名無しさん
2006/01/07(土) 18:13:27という入力なら
和 28
個数 2
でいいの?
0835デフォルトの名無しさん
2006/01/07(土) 19:18:000836デフォルトの名無しさん
2006/01/07(土) 19:20:100837デフォルトの名無しさん
2006/01/07(土) 19:21:47[2] 問題文(含コード&リンク):
f(x,y)={((2x-y)^2*(x+3y)^2+x+y)/((4x^2+y^2)*(x^2+9y^2)+1)}+arctan(x^2+y^2-1)^2
の最小(極小)点およびその値(最小値)を次の方法で求める:
適当な初期値(x0,y0)から始めてn=0,1,2,3,・・・に対して
1.ynを固定して1変数関数g(x)=f(x,yn)を考え,
黄金分割法により、この最小点をx=xn+1として求める
2.上のxn+1を固定して,1変数関数h(y)=f(xn+1,y)を考え,
やはり黄金分割法により,最小点をy=yn+1として求める。
これらを繰り返して,(x1,y1),(x2,y2),・・・を生成し,(xn,yn)がほとんど変化
しなくなったら,これを近似解として返す。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc バージョン?
[3.3] 言語: C
[4] 期限: 1月9日12:00まで
[5] その他の制限: xnとかxn+1→x*nではなくて、xの配列です。みづらくてすみません。
よろしくお願いいたします。
0838837
2006/01/07(土) 19:24:28arctan(x^2+y^2-1)^2→arctan((x^2+y^2-1)^2)
でした。どなたかお願いします
0840デフォルトの名無しさん
2006/01/07(土) 20:52:41[2] 問題文(含コード&リンク):
void tohex(long k[]);
このようなプロトタイプ宣言に従い、long型の配列を16進数に変換する関数を作成せよ。
また16進数から10進数に変換する関数も作成せよ。
[3] 環境
[3.1] OS:windows XP home
[3.2] コンパイラ名とバージョン: gcc 2.9
[3.3] 言語: C
[4] 期限: 2006/01/10
[5] その他の制限: 関数は除算を用いずにビット処理を使う。
どうぞよろしくお願いします。
0841デフォルトの名無しさん
2006/01/07(土) 21:26:09頭悪いから思いつかないけど
ABCDEFの文字はどうするの
0842デフォルトの名無しさん
2006/01/07(土) 21:33:55中途半端に書いてみた
int n[];//読み込んだ正数の入れ子(素数はしらん)
int sum,mem,i;
sum = mem = 0;
for( i=0; i<読み込んだ正数の数; i++){
if((n[i]%7) == 0){
sum += n[i];
mem++;
}
}
printf("和%d 個数%d",sum,mem);
0843デフォルトの名無しさん
2006/01/07(土) 21:55:11ここの応用すればできそう
http://www1.cts.ne.jp/~clab/hsample/Func/Func12.html
0844デフォルトの名無しさん
2006/01/07(土) 23:47:52[2] 問題文(含コード&リンク):
線形リストのプログラム
線形リストのプログラミング技術をもちいてキューのデータ構造と操作関数を実装する.線形リストを用いればキューのサイズを変数max 等で限定する必要がなくなる.
このURLの(* ここに解答を書き加える *)というところに書き加えて完成させるものです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1414.txt
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月13日
[5] その他の制限: 特になし
どうかお願いします。
0845デフォルトの名無しさん
2006/01/07(土) 23:56:210846デフォルトの名無しさん
2006/01/08(日) 00:22:12[2] 問題文(含コード&リンク):
課題2
ファイルを読み込み、英字のみか、先頭が英字で二文字目以降が英字または数字である文字列を抽出し、
辞書順に並べ、その文字列が何行目に現れるか列挙するプログラムを作成したい。
以下の設問にしたがって回答しなさい。
http://edu.net.c.dendai.ac.jp/ad/1/2005/kadai.html
なお辞書順とは、文字列の比較法の一つで、文字列の先頭から順に比較していき、
最初に異なった文字の大小関係とします。但し、途中で文字が無くなった場合は無い方が小さいとします。
例
0<9<A<Z<a<z
aaa<aaaa
aaa0<aaa1
[3] 環境
[3.3] 言語: C/C++/Javaのいずれか、WindowsのAPI使用不可
[4] 期限: [2006年1月11日まで]
0848デフォルトの名無しさん
2006/01/08(日) 01:32:10以下、読み込むファイルの名前を"data.txt"とする。また、#includeは自分で行を分ける事。
1. 3. 6. 7. 自分でどうぞ。
2.
#include <cctype> #include <fstream> #include <iostream> #include <locale> #include <string>
bool extract_word(std::string& line, std::string& word) {
size_t first = 0, last;
while (first != line.size() && !std::isalpha(line[first])) ++first;
if (first == line.size()) return false;
last = first + 1;
while (last < line.size() && std::isalnum(line[last])) ++last;
word.assign(line.begin() + first, line.begin() + last);
line = std::string(line.begin() + last, line.end());
if (word.size()) return true; else return false;
}
int main() {
std::locale::global(std::locale());
std::ifstream ifs("data.txt");
std::string line, word;
int line_number = 0;
while (std::getline(ifs, line)) {
++line_number;
while (extract_word(line, word)) std::cout << word << ':' << line_number << std::endl;
}
return 0;
}
5.は次に続く。
0849848
2006/01/08(日) 01:32:43#include <cctype> #include <fstream> #include <iostream> #include <locale> #include <map> #include <set> #include <string> #include <vector>
bool extract_word(std::string& line, std::string& word) {
size_t first = 0, last;
while (first != line.size() && !std::isalpha(line[first])) ++first;
if (first == line.size()) return false;
last = first + 1;
while (last < line.size() && std::isalnum(line[last])) ++last;
word.assign(line.begin() + first, line.begin() + last);
line = std::string(line.begin() + last, line.end());
if (word.size()) return true; else return false;
}
int main() {
std::locale::global(std::locale());
std::map<std::string, std::set<int> > m;
std::ifstream ifs("data.txt");
std::string line, word;
int line_number = 0;
while (std::getline(ifs, line)) {
++line_number;
while (extract_word(line, word)) m[word].insert(line_number);
}
for (std::map<std::string, std::set<int> >::const_iterator first = m.begin(), last = m.end(); first != last; ++first) {
std::cout << first->first << ':';
for (std::set<int>::const_iterator line_first = first->second.begin(), line_last = first->second.end(); line_first != line_last; ++line_first) std::cout << *line_first << ' ';
std::cout << std::endl;
}
return 0;
}
変更点は次に。
0850848
2006/01/08(日) 01:33:411. std::map<std::string, std::set<int> >に結果を一度格納するようにした。
理由:そうすれば、辞書順の並べ替えはstd::string<>のoperator<()に従って自動的に行われる。
2. 行番号の格納はstd::set<int>によって行った。
理由:そうすれば、std::set<>::insert()によって自動的に重複の回避が行われる。
3. std::map<std::string, std::set<int> >を辿ることによって出力を行うようにした。
理由:そうすれば、自動的に辞書順に出力される。
以上。
0851デフォルトの名無しさん
2006/01/08(日) 01:37:46本気で言ってるのか? 寝惚けてただけなら >>840 をよく読め。
何も分かってないタコが自分で問題考えてわけも分からず聞いてるって分かるから
0852デフォルトの名無しさん
2006/01/08(日) 01:48:49質問が山程。
> long型の配列を16進数に変換する関数を作成せよ。
配列を変換ってどういうこと?それぞれの要素を次々に変換?
ターゲットの型は?文字列?
引数の配列の要素数はどうやって取得するの?
変換したものはどうするの?格納?だとしたらどこへ?それとも出力?にしてもどこへ?
> また16進数から10進数に変換する関数も作成せよ。
同上。
0853848
2006/01/08(日) 02:00:15- std::locale::global(std::locale());
+ std::locale::global(std::locale(""));
0854デフォルトの名無しさん
2006/01/08(日) 05:31:35#include<stdio.h>
//10進数 9桁位までにしとくのが無難
long a[]={111111111,222222222,333333333,0};
void tohex(long k[])
{
int i=0,j=0;
long tmp;
char hex[8];
while(1){
tmp= k[i];
if(!tmp)break;
printf("\n%d ",tmp);
for(j=0;j<8;j++)hex[j]= 0x20;//空白で初期化
j=0;
while(1){
if((tmp & 0xf)<10){
hex[7-j++]= '0'+(tmp & 0xf);
}else{
hex[7-j++]= 'a'+(tmp & 0xf)-10;
}
tmp>>=4;
if(!tmp){
printf("%8s",hex);
break;
}
}
i++;
}
}
0855デフォルトの名無しさん
2006/01/08(日) 05:32:22int main(void)
{
tohex(a);
return 0;
}
0856デフォルトの名無しさん
2006/01/08(日) 06:19:36>16進数から10進数に変換する
こーゆー事だと思ったのだが、違うのか?
void toBCD(long iHex,char* pResult,int len){
while(len--){
char d = iHex % 10;
iHex /= 10;
d += iHex % 10;
iHex /= 10;
*pResult++ = d;
}
}
0857553
2006/01/08(日) 09:20:19[2] 問題文(含コード&リンク):
Web ページの探索アルゴリズム
1.文字列操作を使ったURLの比較アルゴリズムの作成
2.HTML文書からハイパーリンクを抽出するアルゴリズムの作成
3.Webページの構成を解析するアルゴリズムの作成
という問題です。
詳しくは http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1401.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C言語
[4] 期限: 1月10日まででお願いします。
以前、553としてお願いしたんですが、まだできていません。
誰か教えてくだっさい。よろしくおねがいします。
0858笹井奈琴
2006/01/08(日) 09:37:19longとかに納められている整数を「16進数」というだろうか?
あとwhileのなかで剰余算と除算を2回ずつやってるのはなんで?
まあそれは置いといて、
これを、除算を用いないでビット処理でやるようにすればいいのかな。
逆数を取って、かけ算するのかな。
そういえば割り算しないで逆数を取る方法ってのを、
どっかでみたことがあるなあ。
0859デフォルトの名無しさん
2006/01/08(日) 12:17:06で、16進数表現で表示する必要があって、自分でそういう問題を作ったのだろう。
たぶん、printf のフォーマットで 16 進法の出力ができることも知らないのだろう。
0860デフォルトの名無しさん
2006/01/08(日) 13:54:00逆数?阿呆か?
0861デフォルトの名無しさん
2006/01/08(日) 14:09:51>このようなプロトタイプ宣言に従い、long型の配列を16進数に変換する関数を作成せよ。
>また16進数から10進数に変換する関数も作成せよ。
はなちょうちん吹いたw
0862デフォルトの名無しさん
2006/01/08(日) 15:04:40[2] 問題文(含コード&リンク):複数個の整数データを読み込むものとする。
その和が88を超えるか,または,読み込んだデータの個数が12個になった時点でデータの読み込みを中止し,
読み込んだデータの和と個数を出力するプログラムを書け。
結果は,和と個数を1つ以上のスペースで区切って出力すること。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特になし
よろしくお願いします。
0863デフォルトの名無しさん
2006/01/08(日) 15:05:32[2] 問題文(含コード&リンク):地球の公転運動のシュミレーションを行う。
時間刻を1日として1000年分の計算を行う。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C言語
[4] 期限: 今月一杯
[5] その他の制限:
とりあえず下のリンクのように出来たんですが、
Nの値が365*478だと実行出来ますが
365*479になるとセグメントエラーとなってしまいます。
この原因だけ知りたいです。お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1415.txt
0864デフォルトの名無しさん
2006/01/08(日) 15:21:38void record(double x[N],double y[N]){
Nいらないんじゃねぇの?
>>862
for(i=0;i<12;i++){
scanf("%d",&num);
sum+=num;
if(sum>88)
break;
}
0865デフォルトの名無しさん
2006/01/08(日) 15:53:41#include <stdio.h>
#include <conio.h>
int main()
{
int count,sum=0,temp;
for(count=0;count<12;count++){
if(sum>88)
break;
printf("整数値 :");
scanf("%d",&temp);
sum+=temp;
}
printf("入力された値の個数は%d\t総和は%dでした\n",count,sum);
getch();
return 0;
}
これでいいだろうか
0866デフォルトの名無しさん
2006/01/08(日) 15:57:09それだと最初に89以上が入力された時
forのi++が実行されずにbreakされちまうからだめだべ
iを個数として使わなかったら余計な指定だけど
0867デフォルトの名無しさん
2006/01/08(日) 16:00:26そこまで分かってなんで表示するときに1足すことを思いつかなかったのか。
0868デフォルトの名無しさん
2006/01/08(日) 16:03:19最後に1足したらもし12個いっぱいいっぱい入力された場合13になるぞ?
言い訳は美しくない
0869デフォルトの名無しさん
2006/01/08(日) 16:05:07あと俺 >>964 じゃない
0871デフォルトの名無しさん
2006/01/08(日) 16:09:28うちの環境では
iは12になっちまうがな・・
俺が間違ってたらごめんよ
0872デフォルトの名無しさん
2006/01/08(日) 16:15:12ああ、個数も表示するという問題だったのか。
完全に僕の間違いです。ごめん。
0873デフォルトの名無しさん
2006/01/08(日) 16:25:31[2] 問題文(含コード&リンク):headコマンドを実装せよ
[3] 環境
[3.1] OS:WinXP
[3.2] BCC
[3.3] 言語:C言語
[4] 期限: 2006/01/10
という事で↓のソースで、headコマンドらしいものはできました。その後、教授からの課題で、
1:指定できる行数に上限を設ける(255行)
2:入力された文字列数のチェック(一つか二つのみ許可するようにして、エラーの場合はメッセージを表示
0874デフォルトの名無しさん
2006/01/08(日) 16:27:26#include <string.h>
#include <stdlib.h>
#define MAX 255
int main(int argc,char *argv[])
{
FILE *fp = stdin;
int i;
int c;
int line = 10;
/*例外処理*/
for(i = 1;i < argc;i++)
{
if(!strncmp(argv[i],"-",1))
{
if(sscanf(argv[i] + 1,"%d",&line)!= 1)
{
fprintf(stderr,"入力フォーマット:head[表示させたい行数][ファイル名]\n");
exit (1);
}
}else if(NULL == (fp = fopen(argv[i],"r")))
{
fprintf(stderr,"ファイルが見つからなかった>,%s\n",argv[i]);
exit (1);
}
}
0875デフォルトの名無しさん
2006/01/08(日) 16:28:21/*正規処理*/
for(i = 0;i < line && (c = fgetc(fp)) != EOF;)
{
if(c == '\n')
{
i++;
}
putchar(c);
}
fclose(fp);
fflush(stdin);
getchar();
return 0;
}
0876デフォルトの名無しさん
2006/01/08(日) 16:30:15何度もすみません。
1に関しては、#defineで、255を指定してやればいいって事までは、わかったのですが、そのソースをどういった感じで書いて、
例外処理のどこにかけばいいのかわかりません・・・もしくは、1のところだけ別関数にしてしまってmainに呼ぶって事も考えたんですが
情け無いことに、関数の呼び出しがいまいちわかってないです_| ̄|○
できれば、255行を超えているかどうかをチェックする機能を持つ、関数をつくりそれをmainに呼びだす方法を教えていただければ
と思います・・・
2に関しては、どうしたらいいのかわかりません
本当に申し訳ないのですが、よろしく御願いします。
0877デフォルトの名無しさん
2006/01/08(日) 16:56:25[2] 問題文(含コード&リンク):
8 3 9 5 4 2 1 6
これをクイックソート法のプログラムで完成せよ
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: 2006年1月13日
[5] その他の制限:前スレで聞いたんですけど、質問に答えてなかったのでもう一回
(1) qsortの使用可否→否
(2) 「完成せよ」とはどういう意味か。整列せよという意味か?→整列せよっていう意味です
(2-1) 整列するとすれば昇順(小さい順)か降順(大きい順)か?→昇順です
0878デフォルトの名無しさん
2006/01/08(日) 17:24:05[1] 授業単元:情報処理�U
[2] 問題文(含コード&リンク): オセロを自動実行させるプログラムを作れ。
一手ごとに表示を止め、石を置いた場所の情報を表示するようにせよ。
なお、手は相手の石を最もひっくり返せるような手を選ばせるようにすること。
複数の手がある場合には任意の手でよい。
[3] 環境
[3.1] OS:Windows
[3.2] VC 6.0
[3.3] 言語: C
[4] 期限:今年中
お願いします。
盤面を一手ごと表示して、駒は●○をつかうらしいです。
0879デフォルトの名無しさん
2006/01/08(日) 17:38:18http://www.google.co.jp/search?hl=ja&c2coff=1&q=%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88+%EF%BC%A3%E8%A8%80%E8%AA%9E&lr=
コピーして終了じゃん。
0880デフォルトの名無しさん
2006/01/08(日) 17:39:09(2)の”入力された文字列”というのはコマンドライン引数のこと?
0881SOS
2006/01/08(日) 17:54:05書きなさい(関数名や引数名は各自で決定せよ)という問題が宿題
がでたのですが、どう解けばいいか教えてください!
0882デフォルトの名無しさん
2006/01/08(日) 17:55:01サンクスです、今度からはまずググってみることにします
0883デフォルトの名無しさん
2006/01/08(日) 17:58:21コードを書いてコンパイルしてデバッグすればいいんだ!
0884デフォルトの名無しさん
2006/01/08(日) 18:00:56double get_average( double a, double b, double c )
{
return (a+b+c) * 3;
}
0885SOS
2006/01/08(日) 18:01:17すいません、C言語の授業まったく出てなくてわからないんで
答え書き込んでもらえませんか?あさってテストで同じ問題が
でるらしいのでお願いします!
0886SOS
2006/01/08(日) 18:03:21ありがとうございました!
0887デフォルトの名無しさん
2006/01/08(日) 18:04:440888デフォルトの名無しさん
2006/01/08(日) 18:05:23ちょw
0889デフォルトの名無しさん
2006/01/08(日) 18:06:03ごめん。暇だったから。
0890デフォルトの名無しさん
2006/01/08(日) 18:08:07わろす!
0891デフォルトの名無しさん
2006/01/08(日) 18:22:12http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1416.txt
こんなかんじかな
0892デフォルトの名無しさん
2006/01/08(日) 18:23:56[2] 問題文:
ある決まった長さの配列stack[ ]を用意し、それに文字データを一つずつ取り込む関数push、
そこから一つずつデータを取り出す関数popを書くことで最も基本的なスタックを実現せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月10日まで]
[5] その他の制限:
文字の取り込みにはgetchar( )
1文字の出力にはputchar( )
というコマンドを使ってよい
宜しくおねがいします
0893デフォルトの名無しさん
2006/01/08(日) 18:26:54[2] 問題文(含コード&リンク):データの数n( n≦100 ),及び,n個の整数データを読み込み,
読み込んだデータを,読み込んだ順番と逆の順番で,
12の倍数だけを出力( n の値は対象としない)するプログラムを書け。
なお,データの最後に出力したデータ数を出力すると共に,各データは1つ以上のスペースを空けて出力すること.
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特になし。配列の問題です。
よろしくおねがいします。
0894デフォルトの名無しさん
2006/01/08(日) 18:28:200895デフォルトの名無しさん
2006/01/08(日) 18:47:00こんな感じでいいだろうか
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int num=101,count=0;
int *arr;
while(num>100){
printf("データの数(100以下):");
scanf("%d",&num);
}
arr=(int*)malloc(sizeof(int)*num);
for(int i=0;i<num;i++){
printf("%d番目に追加する値:",i+1);
scanf("%d",&arr[i]);
}
...続く
0896デフォルトの名無しさん
2006/01/08(日) 18:47:37for(int i=0;i<num;i++)
if(arr[i]==0){}
else if(!(arr[i]%12)){
count++;
printf("%d ",arr[i]);
}
printf("出力した個数=%d",count);
free(arr);
getch();
return 0;
}
0897デフォルトの名無しさん
2006/01/08(日) 18:51:38先越されたけどせっかく書いたし貼っておきます。
#include <iostream>
using namespace std;
int main( void )
{
int n;
int data[100];
cout << "Input number of data > ";
cin >> n;
if ( n > 100 )
n = 100;
for ( int i = 0; i < n; ++i )
cin >> data[i];
for ( int i = 0; i < n; ++i )
if ( data[i]%12 == 0 )
cout << data[i] << ' ';
cout << endl;
cout << n << endl;
return 0;
}
0898デフォルトの名無しさん
2006/01/08(日) 19:12:38手元の辞書には
倍数←→約数とあって
約数の定義が1以上の自然数なんだがどうだろうか・・・
0899856
2006/01/08(日) 19:35:33そのままにしておくと
気持ち悪いから修正しておく。
void toBCD(long iHex,char* pResult,int len){
while(len--){
char d = iHex % 10;
iHex /= 10;
d += (iHex % 10)*16;
iHex /= 10;
*pResult++ = d;
}
}
スレ汚しスマソ。
0900デフォルトの名無しさん
2006/01/08(日) 20:05:17#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s,n,x,w;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;do d?m[v]=t:n
++,v+=*i;while(m[v]-t);--n;}}return 0;}void c(){for(w=p=8,x=d=0;++p<82;)n=0,k()
,x<n?w=p,x=n:0;d=9;p=w;printf("%d:%d,%d",t-6?1:2,p%9,p/9);}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);getchar();for(a?d=a=p=9:s?s=0:s++;a==9;k())c();t=9-t;}}
0901デフォルトの名無しさん
2006/01/08(日) 20:21:24#include <stdio.h>
#define STACKSIZE 512
static int iStackIndex = 0;
static char stack[STACKSIZE];
int push(char iData){
if(iStackIndex < STACKSIZE){
stack[iStackIndex++] = iData;
return iData;
}
return EOF;
}
int pop(){
if(iStackIndex){
return stack[--iStackIndex];
}
return EOF;
}
0902デフォルトの名無しさん
2006/01/08(日) 20:21:54int main(){
int c;
print("文字を入力\n");
while((c=getchar()) != EOF){
if(push(c) == EOF){
print("スタックが満杯です\n");
break;
}
}
print("文字を出力\n");
while((c=pop()) != EOF){
putchar(c);
}
return 0;
}
0903デフォルトの名無しさん
2006/01/08(日) 21:15:24[2] 問題文:main(){
int i,price[3];
price[0]=400;
price[1]=500;
price[2]=300;
for(i=0;i<3;i++){
printf("%d\n",price[i]);
}
}
上記の合計金額を算出するように修正せよ(forループを用いる事)
という問題です。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月10日まで]
[5] その他の制限:特にありません 。
よろしくお願いします。
0904デフォルトの名無しさん
2006/01/08(日) 21:23:23#include <stdio.h>
int main(void) {
int i, price[3], sum = 0;
price[0] = 400;
price[1] = 500;
price[2] = 300;
for (i = 0; i < 3; i++) {
sum += price[i];
}
printf("%d\n", sum);
return 0;
}
0905デフォルトの名無しさん
2006/01/08(日) 21:24:340906デフォルトの名無しさん
2006/01/08(日) 21:27:240907デフォルトの名無しさん
2006/01/08(日) 21:33:130908デフォルトの名無しさん
2006/01/08(日) 21:38:46教授に聞いてくるからちょっと待っててっていわれました!
0909デフォルトの名無しさん
2006/01/08(日) 21:50:39「5 12 24 36 40 50」と入力した場合
>>897で出てくる答えは「12 24 36 5」ですが、正しい答えは「12 24 36 3」でした。
cout << n << endl; のnを直せばいいと思うのですが何に変えればいいかがわかりません。
手直しお願いします。
大学で渡された資料見ても似たようなものが一つも無くて何の役にも立たないorz
0910デフォルトの名無しさん
2006/01/08(日) 21:57:38何様?
0911デフォルトの名無しさん
2006/01/08(日) 22:11:35[2] 問題文: 3つの浮動少数型変数のポインタを引数にとり、引数のポインタの
内容の平均を4番目の引数のポインタの内容に代入する関数を
書きなさい(関数名や引数名は各自で決めてよい)という問題です。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月11日まで]
[5] その他の制限:特にないです 。
お願いします。
0912デフォルトの名無しさん
2006/01/08(日) 22:24:54そういう意味か。
プログラミングの前に正しく人にものを伝えられる文章の書き方を勉強するべきだ。
#include <iostream>
using namespace std;
int main( void )
{
int n;
int n_output = 0;
int data[100];
cout << "Input number of data > ";
cin >> n;
if ( n > 100 )
n = 100;
for ( int i = 0; i < n; ++i )
cin >> data[i];
for ( int i = 0; i < n; ++i )
if ( data[i]%12 == 0 ) {
cout << data[i] << ' ';
++n_output;
}
cout << endl;
cout << n_output << endl;
return 0;
}
0913デフォルトの名無しさん
2006/01/08(日) 22:28:01{
*result = (*a+*b+*c)/3;
}
0914デフォルトの名無しさん
2006/01/08(日) 22:31:48関数名が意味不明すぎだな。
0915デフォルトの名無しさん
2006/01/08(日) 22:57:440916デフォルトの名無しさん
2006/01/08(日) 22:59:58という心理を見透かしているのであろうな。
0917893
2006/01/08(日) 23:06:14ありがとうございます。
問題は出されたものをそっくりそのまま書いているので私には何とも・・・。
手直ししたのは12の倍数が11の倍数になっていることもあるのでそれを変えただけです。
>>909で正しい答えは「12 24 36 3」と書きましたが正しくは「36 24 12 3」でした。
逆に並べる書き方は過去にも似たようなものがあったのでそれくらいは自分で考えてみます。
無理だったときはまたよろしくお願いします。
0918デフォルトの名無しさん
2006/01/08(日) 23:10:13ありがとうございます。
0919デフォルトの名無しさん
2006/01/08(日) 23:14:51質問:
1. int QueueAlloc(Queue *q)は何を返すのか?
2. int QueueEnque(Queue *q, Node *x)は何を返すのか?
0920919
2006/01/08(日) 23:17:303. QueueInit()はQueueAlloc()とで、コメントでは行う仕事が被っているが、
どう処理すべきか?
0921デフォルトの名無しさん
2006/01/08(日) 23:30:08横からチャチャ入れてるだけなので、マジにとらないでね。
0922デフォルトの名無しさん
2006/01/08(日) 23:34:21いまいち説明してくれないんでよくわからないんですが
1と2に関してはエラー時(メモリ確保に失敗したなど)に-1を返し
正常時には0を返すみたいです。
3については僕も一緒に感じるんですが
QueueAllocはq->frontなどにNodeの大きさ分メモリ確保するものだろうと考えて進めてます。。
0923919
2006/01/08(日) 23:56:01int QueueAlloc(Queue *q) {
Node *n = AllocNode();
if (n == NULL) return -1;
n->next = q->front; q->front = n;
if (q->rear == NULL) q->rear = n;
q->num++;
return 0;
}
int QueueEnque(Queue *q, Node *x) {
if (x == NULL) return -1;
x->next = q->front; q->front = x;
if (q->rear == NULL) q->rear = x;
q->num++;
return 0;
}
Node *QueueDeque(Queue *q) {
Node *n, *r;
if (q->num == 0) return NULL;
n = q->front; r = q->rear;
if (n == r) q->front = q->rear = NULL;
else {
while (n->next != r) n = n->next;
q->rear = n;
n->next = NULL;
}
q->num--;
return r;
}
int QueueNo(const Queue *q) {return q->num;}
int QueueIsEmpty(const Queue *q) {return q->num == 0;}
0924デフォルトの名無しさん
2006/01/09(月) 00:12:35おぉー、ありがとうございます!
あ、でもrearから入れてfrontから出すっていう風みたいにするらしいです。
詳細言ってなくて申し訳ありません。。
これを参考に逆にしてみます。ホントありがとう
0925919
2006/01/09(月) 00:30:43だろうね。でないとdequeueが面倒くさい(面倒くさかった)。しかし、君が
QueueAlloc()で"frontに確保"と言っていたから、このようにした。と、文句を
垂れるだけなのも格好悪いので、コードを。
int QueueEnque(Queue *q, Node *x) {
if (x == NULL) return -1;
if (q->rear == NULL) q->front = q->rear = x;
else q->rear = q->rear->next = x;
q->num++;
return 0;
}
int QueueAlloc(Queue *q) {
return QueueEnque(q, AllocNode());
}
Node *QueueDeque(Queue *q) {
Node *r;
if (q->num == 0) return NULL;
r = q->front;
q->front = q->front->next;
if (q->front == NULL) q->rear = NULL;
q->num--;
return r;
}
0926デフォルトの名無しさん
2006/01/09(月) 01:30:05[2] 問題文(含コード&リンク):
�@[A君はスーパーに買い物をし、3489円の支払いに対し、5000円払いました。つり銭の枚数をなるべく少なく戻すにはどうすればよいか]
�A[現在の時刻を24時間表記でキー入力し、午後0時からの経過時間を秒単位で表せ]
�B[適当な数(秒単位)をキー入力し、○○:△△:□□の形で表示せよ。]
↑時 ↑分 ↑秒
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 明日まで
宿題が終わりません誰か助けてください( ;∀;)
0927デフォルトの名無しさん
2006/01/09(月) 01:34:170928デフォルトの名無しさん
2006/01/09(月) 01:36:34ありがとうございます。助かりました。
0929デフォルトの名無しさん
2006/01/09(月) 01:42:40ファイルに保存してきます。「前へ」「次へ」ボタンで履歴を前後に移動できます。
で、SDIなら簡単なのですが、MDIでエディタが複数あるんですけど、
どんな風にデータを持てばよろしいでしょうか?ちなみに、履歴のリポジトリはエディタ毎に
もつんじゃなく、一つにしたいんです。
かれこれ2年悩んでいます。
プログラムが一番シンプルになるデータ構造を教えてくれたら幸いです。
0930デフォルトの名無しさん
2006/01/09(月) 01:45:261番
#include <stdio.h>
int main(void) {
int p, count, change = 5000 - 3489, cur[] = {10000,5000,2000,1000,500,100,50,10,5,1};
for (p = 0; p < sizeof(cur) / sizeof(cur[0]); ++p) {
count = 0;
while (change - cur[p] * count >= 0) ++count;
--count;
printf("%d円:%d枚\n", cur[p], count);
change -= cur[p] * count;
}
return 0;
}
0931デフォルトの名無しさん
2006/01/09(月) 01:50:40一つにしなきゃいいじゃん
0932デフォルトの名無しさん
2006/01/09(月) 01:50:47ttp://jjy.nict.go.jp/QandA/FAQ/12am-or-0pm-J.html
によれば午後0時とは昼の12時であって、ということはマイナス表示も
ありうるが、そのようにしろということか?
0933デフォルトの名無しさん
2006/01/09(月) 01:53:310934デフォルトの名無しさん
2006/01/09(月) 01:59:03とりあえず3番も
#include <stdio.h>
int main(void) {
int t, c = 0;
scanf("%d", &t);
while ((t -= 3600) >= 0) c++;
t += 3600;
printf("%2d:", c);
c = 0;
while ((t -= 60) >= 0) c++;
t += 60;
printf("%2d:%2d", c, t);
return 0;
}
0935デフォルトの名無しさん
2006/01/09(月) 02:03:27リポジトリ構造体を作る
リポジトリ構造体内にファイルを所属させる
ファイルごとに履歴構造体を持つ
0936デフォルトの名無しさん
2006/01/09(月) 02:10:49別ウィンドウで履歴一覧がでるのですが、エディタ毎にもつと都合が悪いので、
なるべく一つにして、共有させたいと思っているのです。
>>935
ありがとうございます。ちょっと私の頭では理解できないので、
しばらく考えてみます。
0937デフォルトの名無しさん
2006/01/09(月) 02:59:05どうしたいの?
0938デフォルトの名無しさん
2006/01/09(月) 03:12:10#include <stdio.h>
#include <stdlib.h>
int main()
{
char buf[9];
int time;
printf("現在の時刻を24時間表記(○○:△△:□□の形)でキー入力せよ\n");
scanf("%s", buf);
buf[2]=0;
buf[5]=0;
buf[8]=0;
time=atoi(&buf[0])*3600;
time+=atoi(&buf[3])*60;
time+=atoi(&buf[6]);
printf("%d",time);
}
0939デフォルトの名無しさん
2006/01/09(月) 03:14:37そこまで大げさなことしなくても。
#include <stdio.h>
int main(void) {
int h, m, s;
scanf("%d:%d:%d", &h, &m, &s);
printf("%d", 3600 * h + 60 * m + s);
return 0;
}
0940デフォルトの名無しさん
2006/01/09(月) 03:38:52[2] 問題文(含コード&リンク): マージソートについて
[3] 環境
[3.1] OS: XP
[3.2] BCC 5.5.1
[3.3] C
[4] 期限: 2006 1 17
[5] その他の制限: 2bit環境 intの大きさは4byteです
課題がマージソートを実装せよと言うものでして
頭を捻って記述した関数が以下になります。
void marge2(int *arr,int num)
機能 arrの値をソートします
int *arr ランダムな値が格納された配列へのアドレスを指定します。
int num arrの要素の個数を指定します。
0941デフォルトの名無しさん
2006/01/09(月) 03:41:55void marge2(int *arr,int num)
{
if(num==1) return;
marge2(arr,num/2);
marge2(&arr[num/2],num-num/2);
printf("%d,",num);
int *copy=(int*)malloc(sizeof(int)*num),*half=©[num/2];
int left=num/2,right=num-left;
for(int i=0;i<num;i++)
copy[i]=arr[i];
for(int i=0;i<num;i++)
if((copy[num/2-left]<=half[num-num/2-right])&&(left>0)){
arr[i]=copy[num/2-left];
left--;
}else if((half[num-num/2-right]<=copy[num/2-left])&&(right>0)){
arr[i]=half[num-num/2-right];
right--;
}
free(copy);
return;
}
配列に格納されている数値が30000以下の場合正常にソートされているようなのですが、
試しに100000以下のランダムな値が格納された配列を指定してソートしますと、なぜか上手くソートされていません。
(因みにこの関数を実行した場合arrにはソートされて数値が格納されています。)
原因がわかる方はいますでしょうか・・
0942940
2006/01/09(月) 03:46:11あと参考にならないかもしれませんが、乱数発生器にMTを使用し以下の方法でarrを初期化しました
for(int i=0;i<100;i++) //arrの配列の個数が100個の場合
arr[i]=(genrand_int31()+1)%30000; ←ここを100000にしてソートするとなぜか期待された動作がしない!
0943デフォルトの名無しさん
2006/01/09(月) 03:51:34[2] 問題文 Triple-DES-CBCの実装
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: lsic86
[3.3] 言語: C
[4] 期限: 2006年1月10日
[5] その他の制限: 特になし
すみません。よろしくおねがいします。
0944940
2006/01/09(月) 03:55:25こちらがソースになります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1418.zip
0945デフォルトの名無しさん
2006/01/09(月) 04:05:43[2] 問題文 headコマンド実装
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C
[4] 期限: 2006年1月10日
「引数」コマンドラインで-Lnで行数とfilenameを渡します。
0946デフォルトの名無しさん
2006/01/09(月) 04:07:42{
FILE *fp = stdin;/*ファイルポインタの宣言及び、*/
int i;/*配列の添え字*/
int c;
int line = 10;/*デフォルトの行数*/
int max = MAX_LINE;/*指定行数の上限*/
/*例外処理*/
for(i = 1;i < argc;i++)
{
if(!strncmp(argv[i],"-",1)) /*i番目に格納された文字列の比較*/
{
if(argv[i] > max)
{
printf("指定できる行数の上限は255行までです\n");
}
if(sscanf(argv[i] + 1,"%d",&line)!= 1) /*i番目の次に格納された文字列が1と等しくない場合は・・・*/
{
fprintf(stderr,"入力フォーマット:head[表示させたい行数][ファイル名]\n");/*メッセージ表示*/
exit (1);/*処理の強制終了*/
}
}else if(NULL == (fp = fopen(argv[i],"r"))) /*ファイルを開き、ファイルポインタに読み込み、空かどうかを評価*/
{
fprintf(stderr,"ファイルが見つからなかった>,%s\n",argv[i]);/*該当ファイルが見つからなかった場合は*/
exit (1); /*処理を強制終了させる*/
}
}
0947デフォルトの名無しさん
2006/01/09(月) 04:11:15if(argv[i] > max)
{
printf("指定できる上限は255行までです");
}
というところで、移植性のないポインタ変換というエラーメッセージが表示されるのですが
どうすればいいのでしょうか・・・
0948デフォルトの名無しさん
2006/01/09(月) 04:12:400949デフォルトの名無しさん
2006/01/09(月) 04:16:03atoi(argv[i])だ
0950デフォルトの名無しさん
2006/01/09(月) 04:25:46[2] 問題文(含コード&リンク):複利計算により、元金が10年で2倍になる年利率をニュートン法を使って求めよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:[2006年01月11日]
[5] その他の制限:特になし
0951デフォルトの名無しさん
2006/01/09(月) 04:29:23>949様
アドバイスありがとうございます
if ((atoi(argv[i])) > max)
{
printf("指定できる行数の上限は255行までです\n");
exit(1);
}
で、コンパイルは通るようになったんですが、255行以上の指定をしても、エラーの表示がでません
_| ̄|○
ロジック自体が間違っているのでしょうか・・・
0952デフォルトの名無しさん
2006/01/09(月) 04:38:32はこの場合
int max=255;
if(!strncmp(argv[i],"-",1)) /*i番目に格納された文字列の比較*/
{
if(argv[i] > max)
{
のロジックを
atoi(&argv[i][1])>max
にするべき
多分
0953デフォルトの名無しさん
2006/01/09(月) 04:40:20[2] 問題文 あるプログラムを途中なのですがVKKの計算という部分が上手くいきません。
動くのですが出力されたデータを見ると明らかに数値が違うものが出ます。
書き方がおかしいのだと思いますがどう書き直したらいいか教えてもらえないでしょうか。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 1月10日
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1419.txt
よろしくお願いします
0954デフォルトの名無しさん
2006/01/09(月) 04:42:36そもそもVKKってなんだよ?
このスレにエスパーいねーぞ
0955デフォルトの名無しさん
2006/01/09(月) 04:44:13あとファイルIOは必ずファイルが開けなかった時の動作を記述するべき
そんな事より940わかる方はお願いしますorz
0956デフォルトの名無しさん
2006/01/09(月) 04:47:47int max = MAX_LINEのMAX_LINEは既に#defineで255と定義済みなので、問題ないかと思うのですが
使い方が間違ってるのでしょうか・・・
また、952様のアドバイスどおりに変えてみたのですが、やはり同じでした
0957デフォルトの名無しさん
2006/01/09(月) 04:57:47正直読む気なくてあれだったけど
if(!strncmp(argv[i],"-",1)) /*i番目に格納された文字列の比較*/
{
if(atoi(&argv[i][1]) > max)
printf("指定できる行数の上限は255行までです\n");
として
hoge -275 nurupo.txt
とすると
指定できる行数は〜って飛んでくれるみたいよ
ちゃんと引数に-をいれてるかね
0958デフォルトの名無しさん
2006/01/09(月) 05:02:48何度も申し訳ないです。
引数には、-もいれてあります。
http://proxy.f2.ymdb.yahoofs.jp/users/ccb552f0/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/head.txt/head.txt.c?bc5lBOEBKCOAJ.5c
こちらにソースを全てアップさせていただきました。
こちらを一度みていただいて、255の上限を超えた場合はエラーを表示して、exit(1)で終了。
その次に、コマンドライン引数の数は一つか二つのみ許可するような方法を教えていただければと思います。
こんな時間にすみません・・・
0959デフォルトの名無しさん
2006/01/09(月) 05:08:59ちゃんと自分の環境では
hoge -267 nurupo.txtとするとエラー吐いてくれる様だね
あとコマンドラインの引数の個数だけど
int main(int argc,char *argv[])
argcに引数の個数
実際特殊で引数をしてなくても自分の位置を引数として1個とっている。
であるから、hoge -1 nurupo のように起動した場合
自分の位置(パス)
-1
nurupo
と引数が3個と認められargcには3が入るはずである。
この場合headが受けられる引数の限界は
head -n filename
自分のパス
-n
filename
の3個のみであるので、
もし引数が不正であった場合if(n!=3) exit(-1);
としてしまえばいいだろうか
0960デフォルトの名無しさん
2006/01/09(月) 05:11:10コマンドラインの引数についてはここを参照するとグッド
0961デフォルトの名無しさん
2006/01/09(月) 05:12:51支離滅裂な説明風味でごめんよorz
0962デフォルトの名無しさん
2006/01/09(月) 05:27:36何から何までご丁寧に本当にありがとうございます。
行数のほうはきちんと動くようになりました。
こんな遅い時間にまでお付き合いいただき本当にありがとうございます
0963デフォルトの名無しさん
2006/01/09(月) 06:31:32[2] 問題文(含コード&リンク):
13台分の車両の長さの線路とその中心に3台分の転車台(くるっと回して向きを反転させる)があり、その上
に、1台の機関車と1〜7の番号が付けられた7台の客車の8両編成の列車が最初は右向きに配置されているとする。
この状態から転車台を使って、左向きに配置された状態(左から順に、機関車、客席1、2、‥)にする問題を
考える。ただし次のようなルールがある。
・機関車と客車は自由に切り離し可能であり、1回の転車で可能な台数は1〜3台である(ただし、線路の長さの関係
で、どんな状況でも1〜3台可能というわけではないことに注意。)
・転車台で向きを反転させる部分の中に、必ず機関車が含まれていなければならない。
・機関車には前後の向きはあるが、客席にはない。
目標状態に至るまでの手順を縦型探索、横型探索、A*アルゴリズムにより探索するプログラムを作成せよ。
ヒューリスティック値は各自でいろいろ設定してみて、最適なものを探してみること。また、状態を保持する
リストは配列のように保持可能な要素数が固定されているものでなく、ポインタなどを利用して保持可能要素数を
動的に変更可能なものを使用すること。
[3] 環境
[3.1] OS:WindowsXP [3.2] borland bcc55 [3.3] 言語: C言語
[4] 期限: 1/19
初期状態
+++++++++++++++++++++++++++++++
|7|6|5|4|3|2|1|機関車|
+++++++++++++++++++++++++++++++
|←5台分→|←3台分 →|←5台分→|
初期状態から転車させた状態
+++++++++++++++++++++++++++++++
|7|6|5|4|3|機関車|1|2|
+++++++++++++++++++++++++++++++
目標状態
++++++++++++++++++++++++++++++++
|機関車|1|2|3|4|5|6|7|
++++++++++++++++++++++++++++++++
0964デフォルトの名無しさん
2006/01/09(月) 07:02:34[2] 問題文(含コード&リンク): 下記参照
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++
[3.3] 言語:C言語
[4] 期限:2006年1月11日15時まで
[5] その他の制限: 特になし
(1)「2進数」⇔「10進数」変換するプログラムを作りなさい。
(2)(1)から「16進数」に変換できるようにプログラムを拡張しなさい。
0965デフォルトの名無しさん
2006/01/09(月) 07:04:090966デフォルトの名無しさん
2006/01/09(月) 08:44:48[2] 問題文(含コード&リンク):CPUの動作速度を表示するプログラムを作成せよ
[3] 環境
[3.1] OS:Windows(NT/2000/XP/2003)
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:[2006年1月10日午前11時]
[5] その他の制限:特になし(コンソールアプリで充分だそうです)
0967デフォルトの名無しさん
2006/01/09(月) 08:47:54「CPUの動作クロック」です
すみません
よろしくおねがいします
0968デフォルトの名無しさん
2006/01/09(月) 09:36:400969デフォルトの名無しさん
2006/01/09(月) 09:52:09ここを参考に作るといいよ
ttp://yosirin9.hp.infoseek.co.jp/tips/no2/tips_no2.htm
ちなみにサンプルプログラムにバグがあって、
誤
sub eax, cycle.LowPart
sub edx, cycle.HighPart
正
sub eax, cycle.LowPart
sbb edx, cycle.HighPart
だから注意
(ミクロな時間計測なら問題出ないんだけどね)
0970デフォルトの名無しさん
2006/01/09(月) 09:59:45#include <Windows.h>
#include <stdio.h>
int main(void)
{
unsigned long l, h;
_asm{
cpuid
rdtsc
mov l, eax
mov h, edx
}
Sleep(1000);
_asm{
cpuid
rdtsc
sub eax, l
sbb edx, h
mov l, eax
mov h, edx
}
printf("%I64d\n", (__int64)h << 32 | (__int64)l);
return 0;
}
0971デフォルトの名無しさん
2006/01/09(月) 10:05:10http://news18.2ch.net/test/read.cgi/news7/1129429106/
0972デフォルトの名無しさん
2006/01/09(月) 10:10:070973デフォルトの名無しさん
2006/01/09(月) 10:15:07http://pc8.2ch.net/test/read.cgi/tech/1136768567/
0974837
2006/01/09(月) 10:47:500975デフォルトの名無しさん
2006/01/09(月) 11:20:14あっても答えないことの方が多いが
0976デフォルトの名無しさん
2006/01/09(月) 11:46:19ΩΩΩ<な、なんだってー!?
0977デフォルトの名無しさん
2006/01/09(月) 13:10:130978デフォルトの名無しさん
2006/01/09(月) 13:11:500979デフォルトの名無しさん
2006/01/09(月) 14:55:36平均だから (a + b + c) / 3
#include <stdio.h>
#include <math.h>
double get_av(double a, double b, double c); //プロトタイプ宣言
double get_av(double a, double b, double c{
return( (a + b + c) / 3);
}
main(){
double a, b, c;
double ans;
printf("浮動少数型の引数入力\n")
scanf("%d%d%d", &a, &b, &c);
ans = get_av(a, b, c);
printf("%lf", &ans);
}
0980デフォルトの名無しさん
2006/01/09(月) 14:56:39↓
scanf("%lf%lf%lf", &a, &b, &c);
0981デフォルトの名無しさん
2006/01/09(月) 14:58:21× printf("%lf", &ans);
○ printf("%lf", ans);
0982デフォルトの名無しさん
2006/01/09(月) 15:10:04メイン関数より上に書くならプロトタイプ宣言いらないんじゃね?
あとmath.h不要じゃね?
プロジェクト '2ch - Win32 Debug' 用の中間ファイルおよび出力ファイルを削除しています。
--------------------構成: 2ch - Win32 Debug--------------------
コンパイル中...
770.cpp
d:\program\win32\2ch\770.cpp(6) : error C2143: 構文エラー : ')' が '{' の前に必要です。
d:\program\win32\2ch\770.cpp(16) : error C2146: 構文エラー : ';' が、識別子 'scanf' の前に必要です。
d:\program\win32\2ch\770.cpp(22) : warning C4508: 'main' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。
cl.exe の実行エラー
2ch.exe - エラー 2、警告 1
0983884 (=883)
2006/01/09(月) 15:22:17テンプレに従わない質問者に小さなはったりをかましただけだったのだが。
0984884 (=883)
2006/01/09(月) 15:27:210985デフォルトの名無しさん
2006/01/09(月) 15:28:410986デフォルトの名無しさん
2006/01/09(月) 15:40:560987デフォルトの名無しさん
2006/01/09(月) 15:47:120988デフォルトの名無しさん
2006/01/09(月) 15:47:550989デフォルトの名無しさん
2006/01/09(月) 15:49:110990デフォルトの名無しさん
2006/01/09(月) 15:50:090991デフォルトの名無しさん
2006/01/09(月) 15:51:540992デフォルトの名無しさん
2006/01/09(月) 15:53:20sage使ってない時点で
0993884 (=883)
2006/01/09(月) 16:25:33みなさんはスルーですか。
0994デフォルトの名無しさん
2006/01/09(月) 16:30:540995デフォルトの名無しさん
2006/01/09(月) 16:46:29ポインタの参照は2項演算をわざとスルーしたので、反省している。
こっちのネタもスタイルの議論でよくある a**bって書くな、 a * *bと書け。ってのから発想した。
ベタなのはしょうがないんだ(^^;;
0996デフォルトの名無しさん
2006/01/09(月) 16:49:59>>886 だな
0997デフォルトの名無しさん
2006/01/09(月) 17:01:13C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/
0998デフォルトの名無しさん
2006/01/09(月) 17:41:350999デフォルトの名無しさん
2006/01/09(月) 17:41:431000デフォルトの名無しさん
2006/01/09(月) 17:46:2610011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。