C/C++の宿題を片付けます 103代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/01/14(月) 22:55:25【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):()
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 102代目
http://pc11.2ch.net/test/read.cgi/tech/1197132472/
0002デフォルトの名無しさん
2008/01/14(月) 23:02:31|ノ⌒ ⌒ ヽ
/ ●) ●) |
オツカレチャ━━━━━| ( _●_) ミ━━━━━ン♪
彡、 |∪| 、`
/ ヽノ ヽ
/ 人 \\ 彡
⊂´_/ ) ヽ__`⊃
/ 人 (
(_ノ (_)
0003デフォルトの名無しさん
2008/01/14(月) 23:16:24前スレのアドレス間違ってるぞクズ
低脳が粋がって新スレ立てるなボケ
半年ロムってろゆとり
0004デフォルトの名無しさん
2008/01/14(月) 23:19:16ム板でツンデレを見ることになるとは
>>1乙
0005デフォルトの名無しさん
2008/01/14(月) 23:24:19乙。
>>3
ツンデレ乙。
0006デフォルトの名無しさん
2008/01/14(月) 23:37:53http://pc11.2ch.net/test/read.cgi/tech/1199515728/
まだ埋まっていないので質問者はこちらへどうぞ
0007デフォルトの名無しさん
2008/01/15(火) 00:01:110008デフォルトの名無しさん
2008/01/15(火) 01:19:42で10にするプログラム教えてください
0009デフォルトの名無しさん
2008/01/15(火) 01:26:26コラー!!
0010デフォルトの名無しさん
2008/01/15(火) 01:43:34レスありがとうございます
申し訳ありませんマイコンにも種類があるのですね
ハードウェアマニュアルによるとH8/3664グループと書かれています
たしかH8/3664Nだと思われます
0012デフォルトの名無しさん
2008/01/15(火) 01:52:18scanf("%d %d %d %d",a,b,c,d);
printf("%d+%d+%d+%d+%d\n",a,b,c,d,10-(a+b+c+d));
0013デフォルトの名無しさん
2008/01/15(火) 01:55:312 4 6 8 → 2+4-6+8=10
みたいな意味じゃないの?
0014デフォルトの名無しさん
2008/01/15(火) 01:56:172*4-6+8=10だ。
0015デフォルトの名無しさん
2008/01/15(火) 02:06:48URLばっかりでうざかったら申し訳。
【未解決問題】
http://pc11.2ch.net/test/read.cgi/tech/1199515728/986 期限切れだが早めに (pass:c)
http://pc11.2ch.net/test/read.cgi/tech/1199515728/934 1/15 早朝(7時くらい)
http://pc11.2ch.net/test/read.cgi/tech/1199515728/870 1/15 正午
http://pc11.2ch.net/test/read.cgi/tech/1199515728/514 1/15
http://pc11.2ch.net/test/read.cgi/tech/1199515728/881 1/15
http://pc11.2ch.net/test/read.cgi/tech/1199515728/924 1/15 >>793と別人? >>794?
http://pc11.2ch.net/test/read.cgi/tech/1199515728/952 1/15
http://pc11.2ch.net/test/read.cgi/tech/1199515728/957 1/15
http://pc11.2ch.net/test/read.cgi/tech/1199515728/988 1/16
http://pc11.2ch.net/test/read.cgi/tech/1199515728/576 1/17日中
http://pc11.2ch.net/test/read.cgi/tech/1199515728/985 1/17
http://pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
0016デフォルトの名無しさん
2008/01/15(火) 03:40:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5775.c
0017デフォルトの名無しさん
2008/01/15(火) 03:49:17[2] 問題文(含コード&リンク):入力した文字列(アルファベット)の中に、指定したもじがいくつあるかカウントするプログラムを作成せよ。カウントした値を表示させること。なおカウントする文字列が該当しない場合は、0と表示する。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2008年1月16日10時まで
[5] その他の制限:特にないです
どうかよろしくお願いします
0018デフォルトの名無しさん
2008/01/15(火) 03:50:49文字の指定方法は?
0019デフォルトの名無しさん
2008/01/15(火) 04:05:55狭義対角優位って |a_ii| >= 培aij| (j!=i) でよかったっけ
// diagonally dominat -> 1, else -> 0
int is_dd_sq_matrix( double * mat, int n ) {
int i, j;;
if ( mat == 0 || n < 1 ) return 0;
for ( i = 0; i < n; ++i ) {
double a = fabs( mat[ i * n + i ] );
for ( j = 0; j < n; ++j ) a -= fabs( mat[ i * n + j ] );
if ( a < 0 ) return 0;
}
return 1;
}
int main(){
int n = 10;
double * mat = malloc( sizeof(double)*n*n);
if ( mat ) { int i;for(i=0;i<n*n;++i) mat[ i ] = rand()/(double)RAND_MAX;
printf( "mat is%sdd\n", is_dd_sq_matrix(mat,n) ? " " : " not "); free(mat);}
return 0;}
0020デフォルトの名無しさん
2008/01/15(火) 05:41:06もっときれいな方法がありそうだが
#include <stdio.h>
#include <math.h>
typedef unsigned int uint;
int main( int argc, char ** args ){
uint a, b, ma, mb;
double dif = 4., l = 3., u = 4.;
for ( b = 1; b < (0xFFFFFFFF / 3); ++b ){
for ( a = (uint)(b * l - 1); a < (uint)( b * u + 1 ); ++a ){
if ( dif > fabs( M_PI - (double)a / b ) ) {
ma = a; mb = b;
dif = fabs( M_PI - (double)a / b );
l = M_PI - dif; u = M_PI + dif;
printf ( "a:%u, b:%u, a/b:%.20lf, dif:%.20lf\n", a, b, (double)a/b, dif );
}
}
}
printf ( "a:%u, b:%u, a/b:%.20lf, dif:%.20lf\n", ma, mb, (double)ma/mb, dif );
return 0;
}
0021デフォルトの名無しさん
2008/01/15(火) 06:57:41#include <stdio.h>
int StrCount(char *str,int chr)
//戻り値:カウント値
//str:文字列
//chr:カウントする文字
{
int result;
result=0;
while(*str)
{
if(*str==chr)result++;
str++;
}
return result;
}
int main(void)
{
char str[1024];int count;int chr;
printf("文字列を入力してください。");gets(str);
printf("カウントする文字を入力してください。");chr=getc();
count=StrCount(str,chr);
printf("%d個見つかりました。\n",count);
return 0;
}
0022デフォルトの名無しさん
2008/01/15(火) 09:27:39[2] 問題文(含コード&リンク):
0がでる確率40%、1〜50がでる確率10%、51〜100がでる確率10%、101〜150がでる確率10%
151〜200がでる確率10%、201以上がでる確率20%
上記の条件で乱数を1000個発生させるプログラムを作成しなさい。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2008年1月16日12時
[5] その他の制限:特にないです
よろしくお願いします
00238
2008/01/15(火) 09:35:42それです!良かったら教えてください。unixのgccです。
0024デフォルトの名無しさん
2008/01/15(火) 09:38:45とりあえず>>1をよく読んで書き直し
0025デフォルトの名無しさん
2008/01/15(火) 09:52:28#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, r;
srand((unsigned int)time(0));
for(i=0;i<1000;i++)
{
r = (int)((rand() / ((double)RAND_MAX+1.0f)) * 10);
if( r < 6 )
{
r *= 50;
r += (int)((rand() / ((double)RAND_MAX+1.0f)) * 49)+1;
}
else r = 0;
printf("%d\n", r);
}
return 0;
}
遅刻しそうであせって作ったので間違ってるかも。確認は自分でヨロ
0026デフォルトの名無しさん
2008/01/15(火) 10:44:41上限は?
0027デフォルトの名無しさん
2008/01/15(火) 10:50:19これじゃだめかな?
#include <stdio.h>
#include <math.h>
int main(void)
{
unsigned int A, B = 1;
A = B * (unsigned int)M_PI;
while (A <= 0xffffffff) {
printf("A = %d, B = %d\n", A, B);
B++;
A = B * (unsigned int)M_PI;
}
return 0;
}
0028デフォルトの名無しさん
2008/01/15(火) 11:13:17[2] 問題文(含コード&リンク):
実数aと非負整数nを読み込みaのn乗を計算して出力するプログラミングを作りなさい。
実数aと非負整数nに対して、aのn乗を計算する再帰関数double power(double a,int n)を必ず
作成すること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:1月19日まで
[5] その他の制限: とりあえず再帰関数を使う。
0029デフォルトの名無しさん
2008/01/15(火) 11:17:55#include <malloc.h>
#define buffer_size 10
int main(int argc ,char *argv[])
{FILE *p;
char buffer[buffer_size];
if(argv[1]==0){
printf("ファイル名を入力してください\n");
scanf("%s",&argv[1]);
}else if(argv[1]==0){
printf("プログラムを終了します。");return 0;
}
p=(FILE *)malloc(sizeof(FILE));
if(p == 0){
perror("領域確保に失敗");return 0;
}
p=fopen(argv[1],"r");
if(p){
while(fgets(buffer,buffer_size,p)){
printf("%s",buffer); }
}
if(!p){
printf("文字列を書き込んでください\n");
scanf("%s",buffer);
p=fopen(argv[1],"w");
if(fprintf(p,buffer)==0){
perror("終了します。\n");return 0;}
};
fclose(p);free(p);return 0;
}
うまい下手はさておいてこのプログラムの間違いを教えてください。コマンド未入力の場合、既存ファイルがあるにも関らず入力を促す。セグメンテーション、アボートエラーがでます。よろしくお願いします。
0030デフォルトの名無しさん
2008/01/15(火) 11:21:48>if(argv[1]==0){
>printf("ファイル名を入力してください\n");
>scanf("%s",&argv[1]);
>}else if(argv[1]==0){
>printf("プログラムを終了します。");return 0;
>}
・argv[1] == 0 じゃなくて argc == 0
・if(argv[1]==0) ・・・ else if(argv[1]==0)
↑ねーよwwww
0031デフォルトの名無しさん
2008/01/15(火) 11:35:21スレ違い。
一応間違いを以下に指摘。
# 詳細は、初心者スレなどで
--
#include <malloc.h>
scanf("%s",&argv[1]);
p=(FILE *)malloc(sizeof(FILE));
--以下省略
0032デフォルトの名無しさん
2008/01/15(火) 11:42:09多少なら締め切りをオーバーしてもOKなので、今からでもどなたか解答をお願いできますでしょうか
0033デフォルトの名無しさん
2008/01/15(火) 11:46:59#include <stdio.h>
double power(double a,int n)
{
return n ? a*power(a,n-1):1;
}
int main(void)
{
double a;
int n;
printf("実数a入力>"); scanf("%lf",&a);
do{
printf("非負整数n入力>"); scanf("%d",&n);
}while(n<0);
printf("%.2lf\n",power(a,n));
return 0;
}
0034デフォルトの名無しさん
2008/01/15(火) 12:15:19木構造かこれ?
両方向リストじゃない?
0035デフォルトの名無しさん
2008/01/15(火) 12:19:470036デフォルトの名無しさん
2008/01/15(火) 12:29:27何時くらいまでならいいんじゃろ?
0037デフォルトの名無しさん
2008/01/15(火) 12:30:56二分ではなく、それぞれのノードについて任意の数(0〜n個)のポインタを持つ木を作るとの事です
頭の中ではなんとなく分かっているのですが、いざプログラムに直そうとするとチンプンカンプンで……
0038デフォルトの名無しさん
2008/01/15(火) 12:32:57締め切りを考えると明日の午前中がデッドラインかと
連レスで申し訳ないです
0039デフォルトの名無しさん
2008/01/15(火) 12:40:20親、子、隣の3つのポインタを持つわけではないの?
普通配列で持ったりはしない気がするけど。
あと、削除が出来るようなことが書いてあるけれど、コマンドの一覧にはないよね?
どうなってるのん?
0040デフォルトの名無しさん
2008/01/15(火) 12:46:17[2] 問題文:
GPSから取得された位置座標をカメラ位置,ジャイロから得られた角度(俯角)をカメラの傾きとし
OpenGLで3D空間内にカメラ視点を設定し,空間中のオブジェクト(任意の座標上)を眺めることの
出来るプログラムを作成せよ.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: どちらでも可
[4] 期限: ([2008年1月16日12:00まで]
[5] その他の制限: OpenGLを使用
OpenGLスレもありましたが,今期限ギリギリで切羽詰っているのでこちらに書かせて頂きました.
プログラムも2ちゃんねるもまだまだ初心者なので何か失礼がありましたら,すみません.
自分は視点の設定が良くわかっていません.
gluLookAt()や透視投影の仕組みの理解不足で,位置座標やカメラ角度をどの引数に代入してやるか
などが頭の中でごちゃごちゃになります.
GPSはWGS84で緯度+35.658632,経度+139.745411のようなデータで得られます.
どのようにxyz空間座標に変換すればよいかなどもご指導頂ければ助かります.
OpenGLに精通された方がいらっしゃれば,どうぞよろしくお願いいたします.
スレ違いならすみません.
0041デフォルトの名無しさん
2008/01/15(火) 13:08:57ノードの持つポインタは
ルート:子を指すポインタのみ
ノード:親を指すポインタ、子を指すポインタ で進めます。兄弟姉妹に移動する場合、一度親を経由して移動します
要素の削除は「追加出来れば良い」(加点する)課題らしいので、追加して頂かなくて結構です
わかりにくくてすいませんでした
0042デフォルトの名無しさん
2008/01/15(火) 13:14:25いまさらだけど50*10の乱数つくって
50*6以上を0にすればよかっただけの気がする
0043デフォルトの名無しさん
2008/01/15(火) 13:24:24とりあえずぱっとみた感じだけど
・子を追加する関数add_child
・親に戻る関数back_parent
・子を検索して表示する関数search_print_node
をそれぞれ作って、コマンド入力するごとに現在注目しているノードを指すポインタのcurを表示すれば良いのかな?
子を消すなら、関数del_childも必要だけど
0044デフォルトの名無しさん
2008/01/15(火) 13:42:12加点ということなんで、削除込みでつくってみるわい。
0045デフォルトの名無しさん
2008/01/15(火) 14:20:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5776.txt
0046デフォルトの名無しさん
2008/01/15(火) 14:33:16[2] 問題文(含コード&リンク):指定ファイルの内容のうち,指定文字列を含む行を表示するプログラムを作りなさい。(UNIXコマンドのgrepに当たる)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:本日中
[5] その他の制限:急ではありますが、どなたかお願いできますでしょうか
参考:http://www.rsch.tuis.ac.jp/~mizutani/online/grep/grep.html
004744
2008/01/15(火) 15:13:32なんかすでにあるっぽいけど、作っちゃったからおいとくよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5777.txt
(実行例と上の仕様に矛盾がある気がする…)
0048デフォルトの名無しさん
2008/01/15(火) 15:50:19含まれているか表示するプログラムを作りなさい。
動作例:
キーから文字を数文字入力してください= alpha-dog
調べる文字を入力してください= a
入力された文字列の中に a は、2 個ありました。
誰か教えてくださいぃぃ
0049デフォルトの名無しさん
2008/01/15(火) 16:16:17>1
0050デフォルトの名無しさん
2008/01/15(火) 16:25:45#include <cstdio>
int main()
{
std::puts(
"キーから文字を数文字入力してください= alpha-dog\n\n"
"調べる文字を入力してください= a\n\n"
"入力された文字列の中に a は、2 個ありました。\n"
);
return 0;
}
0052デフォルトの名無しさん
2008/01/15(火) 16:32:27[2] 問題文(含コード&リンク):
キーボードから1行ずつ入力を受け取り、アルファベットである場合は13字ずつずらす暗号文の作成。
(A→N、B→O、(中略)、M→Z、N→A、(中略)、Y→L、Z→M)
アルファベット以外はそのまま表示するので「abc500」と入力された場合「nop500」と表示される。
通常の文を打てば暗号の文になり暗号文を打てば通常文に戻る、ということ。
また10行分入力を受けたらプログラムを終了し、一行は80字でよい。
なお、プログラム中に最低1つのmain()関数以外の関数を定義すること。
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio.NET2003(これでいいのか不安だけど)
[3.3] 言語: C
[4] 期限: 今週中(2008年1月19日)まで
[5] その他の制限:
文字列・文字コードは習得。main以外の関数は授業内ではdouble distanceとmyislowerとintmax、intmin、dumb程度です。これが関数でいいのかどうかは正直よくわかりませんが…orz
どうかご教授よろしくお願いいたします
0053デフォルトの名無しさん
2008/01/15(火) 16:33:460054デフォルトの名無しさん
2008/01/15(火) 16:46:2150はどう見ても、50の通り動作するだろ。
0055デフォルトの名無しさん
2008/01/15(火) 16:56:37#include <stdio.h>
#include <ctype.h>
#include <string.h>
void crypt(char * foo)
{
static char const inputLetters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
static char const outputLetters[] = "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm";
for (int ic = 0; foo[ic] != '\0'; ++ic) {
int ch = foo[ic];
char * pos = strchr(inputLetters, ch);
if (pos != NULL) {
foo[ic] = outputLetters[pos - inputLetters];
}
}
}
int main()
{
char buf[81];
for (int ic = 0; ic < 10 && fgets(buf, sizeof(buf), stdin) != NULL; ++ic) {
crypt(buf);
fputs(buf, stdout);
}
return 0;
}
0056デフォルトの名無しさん
2008/01/15(火) 17:10:450057デフォルトの名無しさん
2008/01/15(火) 17:12:25しません
帰れ!
005852
2008/01/15(火) 17:14:38>>56の行動をしてしまった…orz
エラーが出る部分はどう対処すればいいでしょうか?
質問ばかりで申し訳ありません。。
0059デフォルトの名無しさん
2008/01/15(火) 17:29:48の値を有効数字6桁で求めるプログラムを作れ。
よろしくおねがいします
0060デフォルトの名無しさん
2008/01/15(火) 17:55:06二箇所のfor (int ic... を、int ic; for (ic... に書き換えればOK。
0061デフォルトの名無しさん
2008/01/15(火) 18:10:13>1
0062デフォルトの名無しさん
2008/01/15(火) 18:25:01int main(int argc, char* argv[])
{
printf("%f\n", log(2.0));
return 0;
}
0063デフォルトの名無しさん
2008/01/15(火) 18:27:24さっそくありがとうございます。
でも、任意の項でやめるときはどうしたらいいのでしょうか?
0064デフォルトの名無しさん
2008/01/15(火) 19:04:38>>938
>>925
本当に色々とありがとうございました。
0065デフォルトの名無しさん
2008/01/15(火) 19:12:35テンプレ守ってないのがすごく気に入らないけど暇だったので。
#include <stdio.h>
int main(void)
{
double answer = 0;
int n;
int i;
printf("input N >>"); scanf("%d", &n);
for (i = 1; i <= n; ++i)
answer += (i & 1)? 1.0 / i: -1.0 / i;
printf("answer: %lf\n", answer);
return 0;
}
0066デフォルトの名無しさん
2008/01/15(火) 19:18:38たびたびすみません、
三項演算子を使わない方法はありますか?
0067デフォルトの名無しさん
2008/01/15(火) 19:19:29if使えよ
0068デフォルトの名無しさん
2008/01/15(火) 19:20:32[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5778.txt
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C
[4] 期限:1月15日
[5] その他の制限:
0069デフォルトの名無しさん
2008/01/15(火) 19:23:52といいますと?
>>68
またジャンケンwwww
0070デフォルトの名無しさん
2008/01/15(火) 19:25:220071デフォルトの名無しさん
2008/01/15(火) 19:27:58| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ >>69
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0072デフォルトの名無しさん
2008/01/15(火) 19:31:35ホントにあんたって人は一人じゃ何にもできないんだから!
#include <stdio.h>
int main(void)
{
double answer = 0;
int n;
int i;
printf("input N >>"); scanf("%d", &n);
for (i = 1; i <= n; ++i) {
/* answer += (i & 1)? 1.0 / i: -1.0 / i; */
if (i % 2 != 0) /* 奇数項は足し算 */
answer = answer + 1.0 / i;
else /* 偶数項は引き算 */
answer = answer - 1.0 / i;
}
printf("answer: %lf\n", answer);
return 0;
}
0073デフォルトの名無しさん
2008/01/15(火) 19:34:33ありがとうございます
でもif分を使わなくてもできました!!
for(i=1;i<=n;i+=2)answer+=1.0/i;
for(i=2;i<=n;i+=2)answer-=1.0/i;
でいいんですかね?
0074デフォルトの名無しさん
2008/01/15(火) 20:10:220075デフォルトの名無しさん
2008/01/15(火) 20:18:23http://pc11.2ch.net/test/read.cgi/tech/1199515728/988
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5779.txt
P10,11にSW、P50,51,52,53にLED、SW押すと別のLEDを点灯するだけ
タイマV (ベクタ22) の割り込み使ってるからベクタテーブル書き換え忘れないようにな
ルネサス謹製のヘッダファイル使ってるけど、大丈夫か?
0076デフォルトの名無しさん
2008/01/15(火) 20:21:52ごめんクロック周波数20MHzで作ってる
周波数違うと一部違うから、わかんなきゃ言ってくれ
あとヘッダが3694になってるけどI2C使ってなきゃ3664でも動く
0077デフォルトの名無しさん
2008/01/15(火) 20:44:08[2] 問題文(含コード&リンク): 下のリンク先のプログラムは年月日の差を求めるプログラムなのですが、
・2つの入力年月日を実行時にキーボードから入力させるか
・2つの入力年月日をファイルから与えるか
・2つの入力年月日をコマンドライン引数として与える
この3つ条件のどれか1つを追加したプログラムに書き直したい。
プログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5780.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2008年1月16日12:00まで
[5] その他の制限:できれば3つの条件のプログラムをそれぞれ教えて頂けたら助かります。
1つでもかまいません。宜しくお願いいたします。
0079デフォルトの名無しさん
2008/01/15(火) 22:05:18[2] 問題文:物理プログラミングをせよ
ウィンドウズアプリケーションで作成せよ
物: 正四角形(2次元)と地面を作る
地面の動き: 方後キーの←→でその方向に傾く
正四角形の動き: 地面に落ちたり
地面が傾いたらすべるようにする
なおDxLibを使うこと
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c
[4] 期限:2008年1月18日
[5] その他の制限:期日しかいのでよろしくおねがいします
お願いいたします
0080デフォルトの名無しさん
2008/01/15(火) 22:10:52期日しかいので無理。
0081デフォルトの名無しさん
2008/01/15(火) 22:16:26DxLib + gcc がしかいだよなぁ
0082デフォルトの名無しさん
2008/01/15(火) 22:18:07えー((+_+))
お願いします(-_-メ)
008379
2008/01/15(火) 22:45:21期日は無期ですよろしくお願いいたします
0084デフォルトの名無しさん
2008/01/15(火) 22:47:20じゃあ、半万年後にまた会いましょう
0085デフォルトの名無しさん
2008/01/15(火) 23:07:05gccでDxLib使うってからには、ライブラリのビルドは出来てるんだよな?
0086デフォルトの名無しさん
2008/01/15(火) 23:09:28[2] 問題文(含コード&リンク):
ファイルに一行にひとつずつ整数が書いてあるとする。このファイルを
コマンドラインで指定して、リストに入力するプログラムを書け。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:1月22日
[5] その他の制限:
よろしくおねがいします
0087デフォルトの名無しさん
2008/01/15(火) 23:14:25俺も気になったんでググってみると、DxLibは一応Cygwin or MinGWで使えるらしい
但し、関数ポインタを一々DLLから取ってきて使う必要があるらしく煩雑
もともとVC++/BCC用なんだからgcc前提でDxLibを強要する出題内容はセンスを疑うわな
宿題出されたヤツのやる気を削ぐようなこと言って申し訳ないが
0088デフォルトの名無しさん
2008/01/15(火) 23:37:31これ表示するオブジェクトとかどうすんの?
球体に世界地図のテクスチャでも貼って、地球儀作って表示させんのかな
そんならカメラより地球儀動かした方が簡単な気がするけど
0089デフォルトの名無しさん
2008/01/15(火) 23:52:48#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <regex.h>
int main(int argc, char *argv[])
{
regex_t pat;
int i, err;
char buf[1024];
if(argc < 3)
return fprintf(stderr, "usage : %s pattern filename\n", argv[0]), 1;
if((err = regcomp(&pat, argv[1], REG_EXTENDED | REG_NOSUB | REG_NEWLINE)) != 0){
regerror(err, &pat, buf, sizeof(buf));
return fputs(buf, stderr), 1;
}
for(i = 2; i < argc; i++){
FILE *fp;
if((fp = fopen(argv[i], "r")) == NULL)
return perror(argv[i]), 1;
while(fgets(buf, sizeof(buf), fp))
if(!regexec(&pat, buf, 0, NULL, 0))
fputs(buf, stderr);
fclose(fp);
}
regfree(&pat);
return 0;
}
オブジェクトは,建造物を3Dに起こしたもので,
x-z平面を地面としてy軸方向に高さを伸ばしたような物体を想定しています!
GPSから得られた位置をもとに, その建物オブジェクトを眺めた画像を保存し,
更に, GPS位置からある直線上(撮影方向に対する法線)にカメラ視点をズラして,
再び, オブジェクトを眺めた画像を得て…と繰り返して,
複数の画像を得ることが目的です!
言葉足らずですみません!
0091デフォルトの名無しさん
2008/01/15(火) 23:59:17[前スレ] >934 >514 >881 >957 >952
【未解決問題】
http://pc11.2ch.net/test/read.cgi/tech/1199515728/986 期限切れだが早めに (pass:c)
>>40 1/16 12:00
>>77 1/16 12:00
>>86 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限
0092デフォルトの名無しさん
2008/01/16(水) 00:21:54>>47
お二方とも、本当にありがとうございます
いつかは自分も宿題を手伝う側になりたいと思いつつ、精進して参ります
0093デフォルトの名無しさん
2008/01/16(水) 00:26:37> ・2つの入力年月日を実行時にキーボードから入力させるか
もう実装されてね?
0094デフォルトの名無しさん
2008/01/16(水) 00:32:39#include <stdio.h>
int kensaku(char *data , char target)
{
int count;
for(count=0;*data!='\0';*data++){ *data==target ? count++:1; }
return count;
}
int main(void)
{
int i;
char input[100];
char target[100];
printf("キーから文字を数文字入力してください="); scanf("%s",input);
printf("調べる文字を入力してください="); scanf("%s",target);
for(i=0;target[i]!='\0';i++){
printf("入力された文字列の中に %c は、%d 個ありました。\n",target[i],kensaku(input,target[i]));
}
printf("\n何か入力をしてください\n"); scanf("%s",input);
return 0;
}
0096デフォルトの名無しさん
2008/01/16(水) 01:02:47int m22 = 1, d22 = 1;の下からy_count = year_prev(&y1, &y2);上までを以下に書き換えでいかがでしょう
char buf[100];
FILE *fp;
if (argc == 7) {
/* 引数の時
./hoge.exe y1 m1 d1 y2 m2 d2 */
y1 = atoi(argv[1]);
m1 = atoi(argv[2]);
d1 = atoi(argv[3]);
y2 = atoi(argv[4]);
m2 = atoi(argv[5]);
d2 = atoi(argv[6]);
show_date(y1, m1, d1);
show_date(y2, m2, d2);
} else if (argc == 2) {
/* ファイルのとき
ファイルの中身はテキストでy1 m1 d1 y2 m2 d2 */
fp = fopen(argv[1], "r");
fgets(buf, sizeof(buf), fp);
sscanf(buf, "%d %d %d %d %d %d", &y1, &m1, &d1, &y2, &m2, &d2);
show_date(y1, m1, d1);
show_date(y2, m2, d2);
fclose(fp);
}else {
input_date(&y1, &m1, &d1);
show_date(y1, m1, d1);
input_date(&y2, &m2, &d2);
show_date(y2, m2, d2);
}
前スレ988です
>>75
遅くなりすみませんレスありがとうございます
情報の後だしかつ、わざわざ作っていただき申し訳ないのですが
学習範囲外技術を含んだ非常に高度なプログラムなのでバレてしまうかもしれません
またルネサスのヘッドファイルだと問題あるのかどうかもよく分かりません
クロックも20MHzだと問題あるのでしょうか?
本日(昨日?)学校より今までに学習しそれを利用して製作した
今までのプログラムをアップしておきました
ろだ、の5781.zipです
後出しかつせかっく作っていただいたのに文句ばかりつけて
本当に申し訳ありませんがアップしたプログラムの組み合わせや応用で
何かオリジナルの課題は作成可能でしょうか?
アップしたプログラムと同じや似た内容だとはねられる可能性があるので
自分なりにも考えていますが現状ではお手上げです
時間も少なく申し訳ないですが、どうかよろしくお願いします。
009877
2008/01/16(水) 02:11:06引数でもファイルからでもプログラムの実行が行えました!
教えていただいたプログラムは他の課題でも参考に使えそうです。
本当にありがとうございました!
009975
2008/01/16(水) 12:00:27課題サンプル見たよ
3664.hのヘッダは多分ルネサスから持ってきたもんだと思うから大丈夫
アップしたプログラムと課題には特に差はなかったです
課題のものが作れるならアップしたものも十分作れる…はず
日中時間ないんで夜になるけど、課題に合わせて修正してみるよ
アップしたプログラムの動作はLEDが以下のように並んでるとして、
常に一つだけ点灯するもの
○○○● SW2押す→ ○○●○ SW2押す→ ○●○○ SW1押す→ ○○●○
上のようにSWが押されると点灯しているLEDをずらしていくだけ
SWは一回押されたら一つLEDをずらす、SWを一回離してもう一回押さないと
動かないようにしてます、内容的にはこんなんでいいのかな
ちなみにクロック違うとタイマのカウント速度が違ってくるので
TV.TCORA = 156 とかやってる部分をクロックに合わせて変更する必要があります
3664だと多分16MHzだと思いますが、どうなってるでしょう
0100デフォルトの名無しさん
2008/01/16(水) 12:09:17[2] 問題文(含コード&リンク):
ポインタ配列を用いて月の名前を英語名で静的変数に格納しなさい。
ポインタ配列を用いて各文字列を走査し、「r」が入っている月を求めなさい。
見つかった月の名前を表示しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008/01/16 24:00まで
[5] その他の制限: 特になし
期限が今日まで申し訳ないですが、よろしくお願いします。
0101デフォルトの名無しさん
2008/01/16(水) 12:29:390102デフォルトの名無しさん
2008/01/16(水) 12:41:14>>100
#include <stdio.h>
int main(void)
{
char *month[] = {"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
int i;
char *p;
for(i = 0; i < sizeof(month)/sizeof(month[0]); i++){
for(p = month[i]; *p != '\0'; p++)
if(*p == 'r')
break;
if(*p != '\0')
puts(month[i]);
}
return 0;
}
sizeof(month)/sizeof(month[0])はたまたま動くのかな?(そんなら12にしないと駄目だけど)
0103デフォルトの名無しさん
2008/01/16(水) 12:57:360104デフォルトの名無しさん
2008/01/16(水) 13:00:24*month[12]とかしてるなら12でもいいけど。
0105デフォルトの名無しさん
2008/01/16(水) 13:02:440106デフォルトの名無しさん
2008/01/16(水) 13:03:58forループ抜けるまで変動はしないのだから、毎回sizeof2つ使って除算までしてたら無駄過ぎる。
あとbreakする前にputsすればいいところを、わざわざif文外に持ってくる理由も分からん。
0107デフォルトの名無しさん
2008/01/16(水) 13:08:550108デフォルトの名無しさん
2008/01/16(水) 13:11:110109デフォルトの名無しさん
2008/01/16(水) 13:22:350110デフォルトの名無しさん
2008/01/16(水) 13:24:20アホがいるw
0111デフォルトの名無しさん
2008/01/16(水) 13:37:35すんませんでした。
レスありがとうございます
それで全然かまわないのでよろしくお願いします
お手数おかけし申し訳ありません
0113デフォルトの名無しさん
2008/01/16(水) 17:58:06[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5782.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語: C言語
[4] 期限: 今日中です。。。
[5] その他:よろしくお願い致します。
0114デフォルトの名無しさん
2008/01/16(水) 19:01:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5783.txt
Switchを再入力させる条件が読み取れなかったので、
その辺は自身で修正して。
0115デフォルトの名無しさん
2008/01/16(水) 19:06:48おいらもできた。マルチバイト文字セットをつかってくれ
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void) {
#define BUFSIZE 256
char buffer[BUFSIZE]; unsigned char val = 0; int bitpos, bitnum, i;
while (1) {
printf("\nBit number : 7 6 5 4 3 2 1 0\n" "Bit :");
for (i=7; i >=0 ; --i) printf( ((val >> i) & 1) ? " 1" : " 0");
while (1) {
printf("\n\ninput change bit : ");
fgets(buffer, BUFSIZE, stdin);
bitpos = atoi(buffer);
if (buffer[0] == '.') { return 0; }
else if (isdigit(buffer[0]) && (bitpos >= 0 && bitpos <= 7)) { break; }
puts("\nSorry. Input 0-7 number.\n" "(. is end)");
}
while(1) {
printf("\nSwitch on(1) or off(0) ? : ");
fgets(buffer, BUFSIZE, stdin);
bitnum = atoi(buffer);
if (isdigit(buffer[0]) && (bitnum == 0 || bitnum == 1)) {
val = (bitnum == 1) ? (val | (1 << bitpos)) : (val & ~(unsigned char)(1 << bitpos));
break;
}
puts("\nSorry. Input 0 or 1.");
} }
return 0;
}
0116114
2008/01/16(水) 19:16:280117デフォルトの名無しさん
2008/01/16(水) 19:21:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5784.txt
自分なりに調べてみましたが
仰られる通り
3664ではシステムクロック信号はΦ16MHzで
周波数16MHzでは1ステートは1/16MHz=0.0625μsになるようです
遅くなり申し訳ありませんがよろしければご参考ください
0119114
2008/01/16(水) 19:37:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5785.txt
0120デフォルトの名無しさん
2008/01/16(水) 20:00:39>>115
>>117
本当にありがとうございます。
0121デフォルトの名無しさん
2008/01/16(水) 20:35:15[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5786.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:どちらでも可
[4] 期限: 1月17日10:00まで
[5] その他の制限:特に無し
よろしくお願いしますm(__)m
0122デフォルトの名無しさん
2008/01/16(水) 21:33:08int main(void)
{
char buf[100], delim[] = "=)(+*-/.";
char *p, *q;
printf("入力 : ");
fgets(buf, sizeof(buf), stdin);
for (p = buf; *p != '\0'; p++) {
for (q = delim; *q != *p && *q != '\0'; q++);
if (*q)
printf("\n%c\n", *p);
else
putchar(*p);
}
return 0;
}
0123デフォルトの名無しさん
2008/01/16(水) 22:38:26http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5787.txt
0124デフォルトの名無しさん
2008/01/16(水) 22:51:02[2] 問題文:
番号(整数4桁)と氏名(文字型30バイト)から構成される構造体を定義し、データを入力してその内容を表示するプログラムを作成しなさい。
なお、プログラムの終了条件は、ゼロ以下の番号が入力された時点とする。
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C
[4] 期限:1月23日
[5] その他の制限:
よろしくお願いします。
0125デフォルトの名無しさん
2008/01/16(水) 23:07:56struct _data{
int number;
char name[30];
};
int main()
{
int i, j, n;
char buf[100];
struct _data data[100];
for (i = 0; i < 100; i++) {
printf("number : ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &n);
if (n < 0)
break;
data[i].number = n;
printf("name : ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%s", data[i].name);
}
for (j = 0; j < i; j++)
printf("%d %s\n", data[j].number, data[j].name);
return 0;
}
配列でよかったのだろうか?
0126デフォルトの名無しさん
2008/01/16(水) 23:08:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5788.txt
一応修正版、割り込みとかなしにしました
ビットシフト "<<" とかがわからんとかの話じゃないことを祈る
0127デフォルトの名無しさん
2008/01/16(水) 23:17:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5789.txt
連投すまん、ビットシフトも抜いた
0128デフォルトの名無しさん
2008/01/16(水) 23:24:37ありがとうございます!
おかげで助かりました。
0129デフォルトの名無しさん
2008/01/16(水) 23:38:43#include<stdio.h>
int main(void){
char buf[100+1];
for(;;){
if(fscanf(stdin, "%100[A-Za-z0-9]", buf)!=1)
if(fscanf(stdin, "%1[(+*/.),-]", buf)!=1){
if(fscanf(stdin, "%1[\n]", buf)!=1) fprintf(stderr, "\nError: unexpected character.\n");
break;
}
puts(buf);
}
return 0;
}
0130デフォルトの名無しさん
2008/01/16(水) 23:55:12{
ITEM *pos;
ITEM *tmp;
tmp = (ITEM *) *malloc(sizeof (ITEM));//領域取得
if(tmp == NULL){//取得領域失敗
return NULL;
}
//取得した領域の初期化
memset((void *)tmp, '\0', sizeof(ITEM));
strcpy(tmp -> str , str); //入力された文字列を領域に設定
//*rootに保存
if(*root == NULL){ //リストが空か?
*root = tmp ;
}
else{//リストの末尾を探して追加
pos = *root;
while(pos -> next != NULL){ //次はあるか?
pos = pos -> next;
}
pos -> next = tmp;
}
return tmp;
}
入力された文字列をリストに格納するプログラムの一部です。
しかしこれだと最後に入力した文字列が表示されなくて困っています。
おそらくこの部分に問題があると思うのですが、おかしい部分はあるでしょうか?
0131デフォルトの名無しさん
2008/01/17(木) 00:04:49スレ違い
宿題だというなら>>1を読んでもう一度よく考えてみよう。
0132デフォルトの名無しさん
2008/01/17(木) 01:03:39tmp->nextがNULLじゃ無いんじゃない?
0133デフォルトの名無しさん
2008/01/17(木) 01:05:50それより、俺は返り値の意味があるのかとかmallocの前の*は何なのかとか気になるけど。
0134デフォルトの名無しさん
2008/01/17(木) 01:11:41指摘ありがとうございます。
tmp->nextがNULLじゃ無いんじゃない? ってのは
while(pos -> next != NULLのことでしょうか?
>>133
mallocの前の*は、単なる消し忘れでした。
ありがとうございます!
これからコンパイルして動作確認してみます
色々本当にありがとうございました
0136デフォルトの名無しさん
2008/01/17(木) 01:22:320137134
2008/01/17(木) 01:41:51自己解決しました。
なんかホントに的外しな質問をしてしまいましたw
0138デフォルトの名無しさん
2008/01/17(木) 01:54:44[1] 授業単元:
[2] 問題文(含コード&リンク):正数nとbを10進数としてキーボードから入力すると、
nをb進数で表示するプログラムを作成せよ。
実行例
24[enter]
8[enter]
24(10) = 30(8)
[3] 環境
[3.1] OS:window
[3.2] コンパイラ名とバージョン:BCC
[3.3] 言語:C
[4] 期限:1/17
[5] その他の制限:特にありません
0139デフォルトの名無しさん
2008/01/17(木) 01:55:520140デフォルトの名無しさん
2008/01/17(木) 01:57:06すみません、2~36でお願いします
0141デフォルトの名無しさん
2008/01/17(木) 02:14:42#include<stdio.h>
const char *s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void conv(int n,int b){
if(n>0){
conv(n/b,b);
putchar(*(s+n%b));
}
}
int main(void){
int n,b;
scanf("%d",&n);
scanf("%d",&b);
printf("%d(10)=",n);
conv(n,b);
printf("(%d)\n",b);
return 0;
}
てきとー。おやすみなさい。
0142デフォルトの名無しさん
2008/01/17(木) 04:45:59[2] 問題文(含コード&リンク):文字列として入力した式(一行)を計算し、その値を表示するプログラム。
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:Visual Studio 8
[3.3] 言語:C
[4] 期限:1/18
[5] その他の制限:少なくとも2つの2桁の整数に対する計算(四則演算)ができること。
どうかよろしくお願いしますm( _ _ )m
0143デフォルトの名無しさん
2008/01/17(木) 08:46:29>40
【未解決問題】
http://pc11.2ch.net/test/read.cgi/tech/1199515728/986 期限切れだが早めに (pass:c)
>>142 1/18
http://pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18
>>86 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限
0144デフォルトの名無しさん
2008/01/17(木) 08:51:33[2] 問題文(含コード&リンク):円周上の点の複数の座標から円の中心(a,b)や半径rを求める
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
[3.3] 言語: C++
[4] 期限: 無期限
[5] その他の制限: 特になし
0145デフォルトの名無しさん
2008/01/17(木) 08:57:26点は3つでいいのかな?
0146デフォルトの名無しさん
2008/01/17(木) 09:07:47100個ぐらいからです・・・。
まったくわからないんです。よろしくお願いします。。。
0147デフォルトの名無しさん
2008/01/17(木) 09:17:340148144
2008/01/17(木) 09:21:01正しくは、100個の座標からそれが円であるかどうか(完璧にきれいな円でなくてもよい)を判定するプログラムの作成でした。
よろしくお願いします。。。
0149デフォルトの名無しさん
2008/01/17(木) 09:25:050150デフォルトの名無しさん
2008/01/17(木) 09:28:13すいません!ハフ変換を使って判定します。
色々と足りないところだらけで申し訳ありません。。。
0151デフォルトの名無しさん
2008/01/17(木) 12:52:31[2] 問題文
(1)走行距離10kmまでは基本料金の6000円。10kmを超えた場合は、超えた距離に対して1kmあたり50円が加算される。
(2)深夜料金10時以降5時までは最終的な料金を2割増しする20キロを超えると1割引とする。
(3)迎車を使用した場合は400円として(1)〜(3)を入力して料金を出力するプログラムを作れ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
[3.3] 言語: C
[4] 期限: 1月17日
[5] その他の制限:関数まで(初期の簡単なプログラムです)
0152デフォルトの名無しさん
2008/01/17(木) 12:53:06(1)までのプログラム
#include<stdio.h>
main()
{
int run,price;
printf("走行距離(km)を入力せよ:");
scanf("%d",&run);
if(run<=10)
{
printf("料金は6000円です\n");
}
else
{
price=(run-10)*50+6000;
printf("料金は%d円です\n",price);
}
}
(2)と(3)お願いします。
0153デフォルトの名無しさん
2008/01/17(木) 13:09:100154デフォルトの名無しさん
2008/01/17(木) 13:19:220155デフォルトの名無しさん
2008/01/17(木) 13:32:41以下、問題を列挙
・深夜料金の適用条件
例えば乗車時刻が21:59だったら? 或いは4:59だったら?
・迎車との関係
例えば呼んだのが21:59だったら? また、迎車時刻を指定されることはある?
・消費税の考慮
・タクシー料金にしては論外に高い初乗り料金
0156デフォルトの名無しさん
2008/01/17(木) 13:39:10指摘ありがとうございます。
判定条件が指定されてないので、今回は乗車時刻が22時〜5時に一秒でもかかっていたら深夜料金として計算します。
迎車は有無のみで課金します。もし迎車を使用して深夜であれば最終的な料金は乗った距離の値段×深夜割増+迎車料金で出します。
消費税は考慮しません。確かに問題文法外な値段ですね^^;教授が意地悪なので・・・。
以上の点宜しくお願いします。
0157デフォルトの名無しさん
2008/01/17(木) 15:41:20#include <malloc.h>
#define buffer_size 10
int main(int argc ,char *argv[])
{
FILE *fp;
fpos_t *start_fpos,*end_fpos;
char *buffer;
int n,option;
option=getopt(argc,argv,"rw");
switch(option){
case 'w':
fp=fopen(argv[1],"w");
buffer=(char *)malloc(buffer_size);
printf("文字列を書き込んでください\n");
scanf("%s",buffer);
fprintf(fp,buffer);
free(buffer);
break;
}
fclose(fp);
return 0;
}
指定したバッファサイズが入力文字数よりも小さい場合、
セグメンテーションエラーがでます。
#defineを変えないでmallocを使い書き加えるには何の関数を使えばいいですか?
ヒントをくださいませんか?よろしくお願いします。
0158デフォルトの名無しさん
2008/01/17(木) 15:47:11buffer=(char *)malloc(buffer_size*100);
0159デフォルトの名無しさん
2008/01/17(木) 15:57:02[2] 問題文
キーボードから入力された文字列に指定した文字が何個
含まれているか表示するプログラムを作りなさい。
動作例:
キーから文字を数文字入力してください= alpha-dog
調べる文字を入力してください= a
入力された文字列の中に a は、2 個ありました。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
[3.3] 言語: C
[4] 期限: 1月17日
[5] その他の制限:
0160デフォルトの名無しさん
2008/01/17(木) 16:20:20#include <stdio.h>
int main(void)
{
int i,num=0;
char str[100],ch;
printf("文字列を入力してください:");
gets(str);
printf("探す文字を入力してください:");
scanf("%c",&ch);
for(i = 0;str[i];i++)if(str[i]==ch)num++;
printf("%c は %d 個見つかりました",ch,num);
return 0;
}
0161157
2008/01/17(木) 16:42:11ヒントください。
0162デフォルトの名無しさん
2008/01/17(木) 16:47:01多目に確保するのがどうしてもイヤならリストにでもしろよw
0163デフォルトの名無しさん
2008/01/17(木) 17:09:18scanfを使わない
0164デフォルトの名無しさん
2008/01/17(木) 18:10:39[2] 問題文(含コード&リンク):整数をm個入力してソートし、その後(2分)検索をn回行うプログラムを作りなさい(mとnは入力して決める)。ただし、できるだけポインタを利用した関数を作成して用いなさい。
[3] 環境
[3.1] OS: (Windows Vista)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C)
[4] 期限: [2008年1月18日12:00まで]
[5] その他の制限:
お願いします。
0165デフォルトの名無しさん
2008/01/17(木) 18:18:26多めに確保して、改めてmallocで宣言するくらいだな。
何とか解決出来たので>>143のリストから削除お願いします。
もし取り掛かってる方いましたらありがとうございました。
0167デフォルトの名無しさん
2008/01/17(木) 19:53:12forループと複雑な計算を大量にしていると起こりやすい気がするのですが、その場合に考えられる特定の原因ってありますか?
0168デフォルトの名無しさん
2008/01/17(木) 19:56:500169デフォルトの名無しさん
2008/01/17(木) 19:59:44[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5790.txt
[3] 環境
[3.1] OS: Windows、Unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2008年1月17日21:00まで
[5] その他の制限: 図があるためリンクを押すとzipを開くようになっています。
問題と図は無題.bmpです。ウイルスではありません。
お願いします。
0170デフォルトの名無しさん
2008/01/17(木) 19:59:52試しにforループ内のiを逐一表示してみたのですが、i++なのに何故か途中でとんでもない数字に飛んだりします。
ポインタの扱いを間違っているって事ですか?
0171デフォルトの名無しさん
2008/01/17(木) 20:00:11文章は読めたのですが、「こいつは一体何がいいたいんだ?」という疑問が出てばっかりで、
やりきれない気持ちでいっぱいになりました。
ソースを晒せばすぐに原因が分かる気がするのですが、それをしない特定の理由ってありますか?
0172デフォルトの名無しさん
2008/01/17(木) 20:00:19すみません、URLをまちがえました
0173デフォルトの名無しさん
2008/01/17(木) 20:01:110174デフォルトの名無しさん
2008/01/17(木) 20:09:58ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5791.cpp
0175デフォルトの名無しさん
2008/01/17(木) 20:17:50#include <stdio.h>
#include <stdlib.h>
int route(int m, int n)
{
if (m == 1 || n == 1) return 1;
else return route(m - 1, n) + route(m, n - 1);
}
int main(int argc, char *argv[])
{
if (argc != 3)
return 1;
int m = atoi(argv[1]), n = atoi(argv[2]);
printf("%d", route(m, n));
return 0;
}
0176デフォルトの名無しさん
2008/01/17(木) 20:23:58実行してみたのですがなにも起こりませんでした・・・
0177167
2008/01/17(木) 20:26:46やりきれない気持ちにさせてしまい申し訳ありません。私が分からないだけでよくある話かと思い、気軽に質問してしまいました。反省します。
プログラムが変な挙動をして強制終了する部分は下リンク先の大きなforループ内です。iが100を超えた瞬間にpointnの数値がオーバーフローします。プログラム自体は3ファイルに分かれていて長いので、ここに原因がなければ諦めます。
[1] 授業単元: 応用プログラミング
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5792.txt
[3] 環境
[3.1] OS: windowsXP
[3.2] gcc32
[3.3] cpp
0178デフォルトの名無しさん
2008/01/17(木) 20:31:59症状が再現する最小のソースを示すのが礼儀だぞ。
widthやheightがどんな値を取るかもわからないでどうして答えられると思う?
0179デフォルトの名無しさん
2008/01/17(木) 20:34:280180デフォルトの名無しさん
2008/01/17(木) 20:36:16ばっふぁおーばーふろー があれば簡単さw
0181デフォルトの名無しさん
2008/01/17(木) 20:36:50引数に1以上与えればなんか出るはずなんだがな
0182デフォルトの名無しさん
2008/01/17(木) 20:40:12すみません、こちらのミスでした。
ちゃんと実行できました。
ありがとうございました
0183デフォルトの名無しさん
2008/01/17(木) 20:42:47バッファオーバーフローのテスト
コンパイラが自動変数をどこに配置するかによっても結果が変わるので
必ずしも何かが起こるとは限らない
/* 最適化をオフにしてコンパイルしてね */
#include <stdio.h>
int main(void){
int x=123;
int y[1]={456};
int z=789;
printf("x=%d z=%d\n", x, z);
y[1]=0;
printf("x=%d z=%d\n", x, z);
return 0;
}
0184デフォルトの名無しさん
2008/01/17(木) 20:47:550186167
2008/01/17(木) 20:52:22最小に纏め上げるのが困難なもので…。
>>184
それでした。直した結果完璧に動きます。恥ずかしすぎる…。
みなさんご迷惑おかけしました。すれ汚しすみません。ありがとうございました。
0187デフォルトの名無しさん
2008/01/17(木) 20:59:58まあ大方、全体を見せたくないとか言うんだろうが
0188デフォルトの名無しさん
2008/01/17(木) 21:13:50pointn = (int)((rand()/(double)(RAND_MAX+1.0f))*100);//コア数
これだろ、、おかしいの。
0189デフォルトの名無しさん
2008/01/17(木) 21:19:01文字列の式は固定ではなく、手動での入力なのです・・・。
自分の説明が不足していました、すみません。
あげていただいたプログラムを参考に、自分でももう少し頑張ってみます。
0190デフォルトの名無しさん
2008/01/17(木) 21:23:10それ自体は0-99の乱数を発生させるだけで、おかしくなくね?
キャストはなくてもいいけど、あってまずいもんでもないし。
0191デフォルトの名無しさん
2008/01/17(木) 21:33:53ぉぉぅ、たしかに普通に見間違えた。
>>167 なんでもないから>>188は普通にスルーしてくれ。
かき乱してすまん。
0192デフォルトの名無しさん
2008/01/17(木) 21:34:26どうせ原因は他にあるのに。
0193デフォルトの名無しさん
2008/01/17(木) 21:39:10大方別のところに原因がある。
長かろうが短かろうが、主題さえはっきりしてれば別段読み解くのは難しくない。
てことで>>167ソースplz
0194デフォルトの名無しさん
2008/01/17(木) 21:41:210195デフォルトの名無しさん
2008/01/17(木) 23:56:16[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5794.txt
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C
[4] 期限:1月22日
[5] その他の制限: 特にないです
0196デフォルトの名無しさん
2008/01/18(金) 00:07:14>>151
【未解決問題】
>>164 1/18 12:00
>>142 1/18 >>172(手動入力)
http://pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18
>>86 1/22
>>195 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限
>>144 無期限 問題文>>148
0197デフォルトの名無しさん
2008/01/18(金) 00:07:39>[1] FTP, [2] POP, [3] PPP, [4] SMTP << 1
>正解です。
これってPOP&SMTPもファイル転送で使わね?添付ファイルてきな意味で。
0198デフォルトの名無しさん
2008/01/18(金) 00:13:100199デフォルトの名無しさん
2008/01/18(金) 00:24:390200デフォルトの名無しさん
2008/01/18(金) 07:26:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5795.cpp
0201デフォルトの名無しさん
2008/01/18(金) 08:06:12#include <stdio.h>
#include <stdlib.h>
int cmp( const void * l, const void * r ) { return *((int*)l)-*((int*)r); }
int main( int argc, char ** args ) {
int m, n, i, * data;
printf( "input m :" ); scanf( "%d", &m );
printf( "input n :" ); scanf( "%d", &n );
data = ( int * )calloc( m, sizeof( int ) );
if ( ! data ) { puts( "no memory."); exit(1) ; }
for ( i = 0; i < m; ++i ) scanf( "%d", &data[ i ] );
qsort( data, m, sizeof( int ), cmp );
for ( i = 0; i < n; ++i ) {
int * p, q;
printf( "search for >" ); scanf( "%d", &q );
p = bsearch( &q, data, m, sizeof( int ), cmp );
if ( p ) printf( "%d found at %d, %d\n", q, 1 + ( p - data ), data[ ( p - data ) ] );
else printf( "not found.\n" );
}
free( data );
return 0;
}
0202デフォルトの名無しさん
2008/01/18(金) 10:28:31[2] 問題文:問題�@
商品番号・商品名・個数・単価を対象とする構造体の配列を利用し、
データを入力して、一覧表を表示するプログラムを作りなさい。ただし、
各データごとに金額を、最後に合計金額を出しなさい。
問題�A
上の問題の構造体の配列を利用し、データを入力した後、商品番号を
並び替えを行い、その結果を一覧表として表示するプログラムを
作りなさい。
[3] 環境
[3.1] OS: (WindowsVISTA)
[3.2] コンパイラ名とバージョン: (borland)
[3.3] 言語: (C)
[4] 期限: ■■緊急■■本日1月18日正午まででお願いします。
[5] その他の制限: 特にありません。
0203デフォルトの名無しさん
2008/01/18(金) 12:42:14[2] 問題文:文字列を逆順にコピーする関数xcopyをポインタを用いて作り、確認のためのプログラムを作りなさい。ただし、xcopy(char*to,char*from)とします。なお、対象とするデータは通常の英数字とします。
[3] 環境
[3.1] OS: (Windows VISTA)
[3.2] コンパイラ名とバージョン: (borland)
[3.3] 言語: (C)
[4] 期限: 1月18日
[5] その他の制限:
前102代目に書き込んだんですが見れなくなってしまったのでもう一度お願いします。
0204デフォルトの名無しさん
2008/01/18(金) 12:50:39昔のスレからの拾い物
700 名前:デフォルトの名無しさん[sage] 投稿日:2007/12/06(木) 20:47:06
[1] 授業単元:C言語
[2] 問題文
要素数がnoであるint型の配列v2の並びを逆順にしたものを配列v1に格納する関数、
void intary_rcpy(int v1[],const int v2[],int no) {/…/}
を作成せよ
[3] 環境
[3.1] OS:Windows XP
[3.2] VS2005
[3.3] 言語:C++
[4] 期限: 12月7日(金)の午前中まで
よろしくお願いします
702 名前:デフォルトの名無しさん[sage] 投稿日:2007/12/06(木) 21:00:46
>>700
#include <algorithm>
void intary_rcpy(int v1[],const int v2[],int no){std::reverse_copy(v2, v2+no, v1);}
0205 ◆vLIz8KOkPM
2008/01/18(金) 12:54:05[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5798.txt
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 今日15時まで
エラーの内容がわかりません…どなたか修正してください…
0206デフォルトの名無しさん
2008/01/18(金) 12:56:36void xcopy(char *to, char *from)
{
char *p = from;
while(*p) p++;
while(p--!=from) *to++ = *p;
*to = '\0';
}
0207デフォルトの名無しさん
2008/01/18(金) 13:54:06とりあえず その30行目を穴が開くまで読み返せ
new[ length ] = ’\0’;
single quotationが全角だ
0208デフォルトの名無しさん
2008/01/18(金) 14:32:38[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5799.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: [2008年01月18日23:59まで](本日中)
[5] その他の制限:
B_1は自力でいけましたが2に手が出ません;
0209デフォルトの名無しさん
2008/01/18(金) 16:20:22#include <stdio.h>
#define N 20
void place_queen(int *x, int n, int k)
{
int i, j;
if(k == n){
for(i = 0; i < n; i++)
printf("%d ", x[i]);
putchar('\n');
return;
}
for(i = 0; i < n; i++){
for(j = 0; j < k; j++)
if(i == x[j] || k - j == i - x[j] || k - j == x[j] - i)
break;
if(j == k){
x[k] = i;
place_queen(x, n, k + 1);
}
}
}
int main(void)
{
int n, x[N];
printf("Input n : ");
scanf("%d", &n);
place_queen(x, n, 0);
return 0;
}
0210デフォルトの名無しさん
2008/01/18(金) 16:43:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5800.txt
0211デフォルトの名無しさん
2008/01/18(金) 18:13:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5801.txt
0212211
2008/01/18(金) 18:20:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5802.txt
ごめん、こっちで。
0213208
2008/01/18(金) 21:00:56参考にさせていただきました。非常に助かります
申し訳ないのですが、
もしよろしかったらこちらの方もお願いできませんか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5803.txt
0214デフォルトの名無しさん
2008/01/18(金) 22:01:12[2] 問題文(含コード&リンク):random1.txt、random2.txtという名前の2つのファイルを
作成し、それぞれに0〜100の範囲の乱数(整数)を20個ずつ書き込みなさい。
これら2つのファイルの内容を1行ずつ比較し、大きいほうの数をmax.txtに
書き込みなさい。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: わかりません。
[3.3] 言語: C++
[4] 期限:無期限ですが、なるべく早く知りたいです。
0215214
2008/01/18(金) 22:02:59#include<stdio.h>
#include<stdlib.h>
int main(void)
{
FILE *fout, *fout2, *fout3, *fin, *fin2;
int buf,buf2;
char filename2[]="random1.txt";
char filename3[]="random2.txt";
char filename4[]="max.txt";
int i;
printf("ファイルrandom1.txtを作成しました。\n");
printf("ファイルrandom2.txtを作成しました。\n");
printf("ファイルmax.txtを作成しました。\n");
0216デフォルトの名無しさん
2008/01/18(金) 22:03:22良さそうな教授だなーとちょっと羨ましく思った。そんな俺は非情報学部。
0217214
2008/01/18(金) 22:03:42fout=fopen(filename2,"w");
srand(time(NULL));
for(i=0;i<20;i++){
buf=rand()%101;
fprintf(fout,"%d\n",buf);
}
fout2=fopen(filename3,"w");
for(i=0;i<20;i++){
buf2=rand()%101;
fprintf(fout2,"%d\n",buf2);
}
fin = fopen(filename2, "r");
if(fin == NULL){
printf("%dをオープンできません\n", filename2);
exit(1);
}
0218デフォルトの名無しさん
2008/01/18(金) 22:07:50[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5805.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:分かりません
[3.3] 言語:C++
[4] 期限:2008年1月19日 09:00
[5] その他の制限:特にありません
よろしくお願いします!
0219214
2008/01/18(金) 22:08:01if(fin2 == NULL){
printf("%dをオープンできません\n", filename3);
exit(1);
}
fout3=fopen(filename4,"w");
while(1){
if (fscanf(fin,"%d",buf)==EOF) break;
if (fscanf(fin2,"%d",buf2)==EOF) break;
if(buf>buf2){
fprintf(fout3,"%d\n",buf);
}
else fprintf(fout3,"%d\n",buf2);
}
fclose(fout);
fclose(fout2);
fclose(fin);
fclose(fin2);
fclose(fout3);
return 0;
}
0220デフォルトの名無しさん
2008/01/18(金) 22:16:02#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
FILE *fran1, *fran2, *fmax;
char filename1[] = "random1.txt";
char filename2[] = "random2.txt";
char filename3[] = "max.txt";
int i, buf1, buf2;
if ((fran1 = fopen(filename1, "w")) == NULL ||
(fran2 = fopen(filename2, "w")) == NULL ||
(fmax = fopen(filename3, "w")) ==NULL) {
printf("ファイルが作れません\n");
return -1;
}
printf("ファイルrandom1.txtを作成しました。\n");
printf("ファイルrandom2.txtを作成しました。\n");
printf("ファイルmax.txtを作成しました。\n");
srand(time(NULL));
for (i = 0; i < 20; ++i) {
buf1 = rand()%101;
buf2 = rand()%101;
fprintf(fran1, "%d\n", buf1);
fprintf(fran2, "%d\n", buf2);
fprintf(fmax, "%d\n", (buf1 >= buf2) ? buf1 : buf2);
}
fclose(fran1);
fclose(fran2);
fclose(fmax);
return 0;
}
0221デフォルトの名無しさん
2008/01/18(金) 22:30:260222デフォルトの名無しさん
2008/01/18(金) 22:35:460223デフォルトの名無しさん
2008/01/18(金) 22:36:53丸投げじゃないんですが、
どこで聞いてもわからないのでわかるかたいたらおねがいします・・
”数値を文字列として入力して、一桁ずつを配列にいれて和・差・積を出す”
って問題で、ここでプログラム作ってもらったんですがわかんないとこがあって、、
↓これ、積の計算らしいんですけどどういう意味ですか(∵)?
int i, j, carry;
// 最大100桁になるので2N桁を0に初期化
for( i = 0 ; i < 2 * Max_Length ; i++ ) a[i] = 0;
for( i = 0 ; i < Max_Length ; i++ ) {
carry = 0;
for( j = 0 ; j < Max_Length ; j++ ) {
a[i+j] += b[i] * c[j] + carry;
carry = a[i+j] / 10;
a[i+j] -= carry * 10;
詳しく説明できるかたいたらお願いします、、
0224デフォルトの名無しさん
2008/01/18(金) 22:37:47[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5806.txt
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C 言語
[4] 期限:1月22日
[5] その他の制限:
0225214
2008/01/18(金) 22:43:53ありがとうございます。
ただ、
fprintf(fmax, "%d\n", (buf1 >= buf2) ? buf1 : buf2);
がよくわかりません。。
?や:の使い方習っていなんです。
bufとbuf2を比較して表示するところがどうしてもできません。
0226220
2008/01/18(金) 22:47:35fprintf(fmax, "%d\n", buf1);
} else {
fprintf(fmax, "%d\n", buf2);
}
こういうこと。使い方は三項演算子でぐぐれ。
0227デフォルトの名無しさん
2008/01/18(金) 22:47:48if (buf1 >= buf2)
fprintf(fmax, "%d\n", buf1);
else
fprintf(fmax, "%d\n", buf2);
0228デフォルトの名無しさん
2008/01/18(金) 23:05:12情報を小出しにしない方がいい(・3・)YO
筆算と同じ手順と考えたらいい
0229デフォルトの名無しさん
2008/01/18(金) 23:43:09[2] 文字列の入れ替え
[3] 環境
[3.1] Windows XP
[3.2] bcc55
[3.3] C言語
[4] 1週間後
[5] 最初と最後の文字を入れ替える
動作例
文字を入力しる:12345
52341
お願いします。
0230デフォルトの名無しさん
2008/01/19(土) 00:04:48>142 >202 >213 ?
【未解決問題】
>>218 1/19 9:00
>>86 1/22
>>195 1/22
>>224 1/22
>>229 1/25
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限
>>144 無期限 問題文>>148
0231デフォルトの名無しさん
2008/01/19(土) 00:05:09[2] 問題文:
グレゴリウス暦の定義を利用して入力された日は何曜日か計算しなさい
西暦1年1月1日は月曜日とする
1年は通常365日ですが閏年は366日
4で割り切れる年は閏年
100で割り切れる年は閏年ではない
400で割り切れる年は閏年
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C
[4] 期限:1月21日
[5] その他の制限:
変数名、関数名の命名規約を作成
goto文は使用しない
開発途中でのreturn プログラム途中でのexitはしない事
よろしくお願いします。
0232デフォルトの名無しさん
2008/01/19(土) 00:05:10取り組んでいただいた方、ありがとうございました。
0233デフォルトの名無しさん
2008/01/19(土) 00:09:09/* 適切なプリプロセッサ */
#define NAMEMAX 10
#define BIRTHMAX 8
#define N 10
/* Record型構造体の定義 */
typedef struct recoord {
char personal[NAMEMAX], birth[BIRTHMAX];
double height, weight;
}Record;
/* outputData関数の定義 */
void outputData(int n, Record *r)
{
printf("%d人目の出力\n", n);
printf("名前は\t\t%s\n", r[n].personal);
printf("生年月日は\t%*s\n", BIRTHMAX, r[n].birth);
printf("身長は\t\t%4.1lf\n", r[n].height);
printf("体重は\t\t%3.1lf\n", r[n].weight);
}
/* calcBMI関数の定義 */
void calcBMI(int n, Record *r)
{
printf("%d人目のBMIは\t%4.2lf\n", n+1, r[n].weight/pow(r[n].height/100, 2.0));
}
0234デフォルトの名無しさん
2008/01/19(土) 00:13:14#include<stdio.h>
int weekday(int y,int m,int d){
if(m<3)y--,m+=12;
return (y+y/4-y/100+y/400+(m*13+8)/5+d)%7;
}
int main(void){
int y,m,d;
printf("年 = ");scanf("%d",&y);
printf("月 = ");scanf("%d",&m);
printf("日 = ");scanf("%d",&d);
printf("日 月 火 水 木 金 土\n%*s↑\n",weekday(y,m,d)*3,"");
return 0 ;
}
0235デフォルトの名無しさん
2008/01/19(土) 00:17:22問題文見る限りツェラーの公式は使えん希ガス
0236デフォルトの名無しさん
2008/01/19(土) 00:23:22>変数名、関数名の命名規約を作成
って書いてあるくらいだからいいんじゃない?
0237デフォルトの名無しさん
2008/01/19(土) 00:25:28[2] 問題文 英文の文字列を入力した場合,文字数・単語数・文章数を求めるプログラムを作成せよ。
英文中の特殊文字は(,(カンマ).(ピリオド)!(イクスクラメーション)?(クエスチョンマーク))のみとする。単語の間には1つ以上(2つ以上でも可)のスペースが入れるものとする。
文章の最後には必ず .(ピリオド)!?のどれかが単独で使われる。,(カンマ)や.(ピリオド)!?の後にスペースが入る可能性があるが前にはスペースは入らないものとする。
省略につかう .(カンマ)は今回はないものとする。
入力に関して
キーボードから,文字列を一行で入力
出力に関して
文字数・単語数・文章数をそれぞれスペース1つあけて1行で出力(+改行)[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Study C
[3.3] 言語:C
[4] 期限:1月22日14:00
[5] その他の制限:一年なのでそこまで難しいのはつかわずにお願いします。
0238デフォルトの名無しさん
2008/01/19(土) 00:28:32[2] 500パターン(test000〜test499)のファイルを用いてそれらのハッシュ値を求めるプログラム。
(ファイルを読み込む際、手動で500パターン打ち込むのは大変なので
そこもプログラムで自動的に次々とファイルを読み込むようにしていただけたら嬉しいです)
[3]
[3.1]Mac OS X
[3.2]よくわかりません
[3.3]C
[4]1/19(土)
[5]特になし
よろしくお願いします。
0239デフォルトの名無しさん
2008/01/19(土) 00:29:35>西暦1年1月1日は月曜日とする
ってのが生きてこなくなるんじゃね?
まあどうでもいいかもしれんが
0240デフォルトの名無しさん
2008/01/19(土) 00:31:45#include<stdio.h>
int main(void){
char buf[0x100];
int i;
printf("文字を入力しる:");
fgets(buf,sizeof(buf),stdin);
for(i=0; buf[i]; ++i)if(buf[i]=='\n')break;
putchar(buf[i-1]);
buf[i-1] = '\0';
printf("%s",buf+1);
putchar(buf[0]);
return 0;
}
表示上では入れ替えてると思う
0241デフォルトの名無しさん
2008/01/19(土) 00:38:23http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5807.cpp
データはこんな感じで
静止画の圧縮技術と最も関係深いものはどれ?
[1] ITU-T H.261,[2] JPEG,[3] MIDI,[4] MPEG
2
10
131-45=53が成り立つのは何進法のときか?
[1] 3, [2] 7, [3] 11, [4] 13
2
10
0242デフォルトの名無しさん
2008/01/19(土) 00:46:55それを生かすソース頼む
0243デフォルトの名無しさん
2008/01/19(土) 00:47:20ありがとうございます。
ただ、課題の紙にヒントみたいのがあって
char a ='X' ;
char b ='Y' ;
char c ;
c = a
a = b
b = c
って代入していく方法があるよって書かれてました。
今見つけたので前のレスで書けなくてすいませんでした。
でも教えてくれたものも正しく動くので、これでいこうと思います。
もし、お暇でしたら代入するヒントを活用したものも考えてもらえると嬉しいです。
0244デフォルトの名無しさん
2008/01/19(土) 00:53:38#include <stdio.h>
int main () {
char in[1024], c;
int i;
scanf("%s", in);
for (i = 0; i < sizeof(in) && in[i] != '\0'; ++i);
c = in[0];
in[0] = in[i-1];
in[i-1] = c;
printf("%s\n", in);
return 0;
}
0245デフォルトの名無しさん
2008/01/19(土) 00:53:51こんなんで良いか?
#include <stdio.h>
#define MAX 1024
int main()
{
int c,i=0,j;
char ary[MAX] = {'\0'};
while((c = getchar())!='\n' && i < MAX){
if(c != '.' && c != ','&& c != '!'&& c != '?')
ary[i] = c;
i++;
}
for(j = 0; j < i;j++){
if(ary[j] != ' ')
putchar(ary[j]);
else if(ary[j] == ' ')
putchar('\n');
}
return 0;
}
0246デフォルトの名無しさん
2008/01/19(土) 00:59:26ソースじゃないけど、俺が考えたのは入力した年月日と1年1月1日
との日数の差を出してから7で割って割り切れたら月曜、1余ったら火曜、、、
ってやるのかなー?と
0247デフォルトの名無しさん
2008/01/19(土) 01:01:16putchar(buf[i-1]);
buf[i-1] = '\0';
printf("%s",buf+1);
putchar(buf[0]);
を削除して、char c;を追加
c = buf[i-1];
buf[i-1] = buf[0];
buf[0] = c;
printf("%s",buf);
0248231
2008/01/19(土) 01:11:54ありがとうございます
結構早くできてて驚きました
>>235
そうなんですか?3日前から勉強しだしたんでよくわかりません
ツェラーの公式以外だとどんな感じになるんでしょうか?
0249デフォルトの名無しさん
2008/01/19(土) 01:22:04英文の文字列を入力した場合,文字数・単語数・文章数を表示する部分お願いします
0250デフォルトの名無しさん
2008/01/19(土) 01:34:38ゴリ押しでやるとこんな感じ。
#include <stdio.h>
int main () {
int y, m, d, sum = 0;
int m_array[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
char *week[7] = {"日", "月", "火", "水", "木", "金", "土"};
printf("input (e.g. ****/**/**)\n>>");
scanf("%d/%d/%d", &y, &m, &d);
if (m > 2 && y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)) {
++sum;
}
for (m -= 2; m >= 0; --m) {
sum += m_array[m];
}
--y;
sum = sum + y * 365 + y / 4 - y / 100 + y / 400 + d;
printf("%s曜日", week[sum%7]);
return 0;
}
0252デフォルトの名無しさん
2008/01/19(土) 02:04:54なんか作っててめんどくさくなった
#include <stdio.h>
#define MAX 1024
int main()
{
int c,i=0,j,k,word=0,letter=0,wnum=0;
char ary[MAX] = {'\0'};
while((c = getchar())!='\n' && i < MAX){
if(c == '.' || c == '!'|| c == '?')
letter++;
if(c != '.' && c != ','&& c != '!'&& c != '?')
ary[i] = c;
if(c ==' ' && i>0 ){
k = i -1;
if(c ==' ' || ary[k] == '!'|| ary[k] == '?')
word++;
} i++; }
for(j = 0; j < i;j++){
if(ary[j] != ' '){
putchar(ary[j]);
wnum++;
}
else if(ary[j] == ' ')
putchar('\n');
}
printf("\n文字数=%d 単語数=%d 文章数=%d \n",wnum,++word,letter);
return 0;
}
0253デフォルトの名無しさん
2008/01/19(土) 04:17:00当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5808.txt
fgets(), realloc(), strcat() を使いました。
0254211
2008/01/19(土) 08:02:26出勤前のお遊び。
追加するのはいいけど、ちゃんとテンプレで。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5812.txt
0255デフォルトの名無しさん
2008/01/19(土) 08:08:43解決しました,ありがとうございます!
0256デフォルトの名無しさん
2008/01/19(土) 09:32:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5813.txt
データの形式が解らなかったので一行に1つとしてある。
ファイル名はコマンドラインから与える形にした。
あと、stdlib.hをインクルードし忘れてたので追加して。
0257デフォルトの名無しさん
2008/01/19(土) 11:11:17[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
入力された値nに対して、f(1)=f(2)=1、f(n)=f(n-1)+f(n-2)となるフィボナッチ数f(n)を表示するプログラミングを再帰を用いて作成せよ。
そのとき、関数fが呼ばれた回数をカウントして表示せよ。n=3,4,…,10のときにそれぞれ関数fが何回呼ばれたか調べよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: できれば1月20日まで
[5] その他の制限:特にないと思われるけど。とりあえず再帰関数・構造体のところなので。
よろしくお願いします。
0258デフォルトの名無しさん
2008/01/19(土) 11:34:03ありがとうございます。
ファイルはこれです。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5814.txt
0259デフォルトの名無しさん
2008/01/19(土) 11:43:10例えば100*100の画像なら、x[0][0]に座標0,0の輝度が格納されていくようなものです。
0260デフォルトの名無しさん
2008/01/19(土) 11:44:34マルチ。
0261デフォルトの名無しさん
2008/01/19(土) 11:52:57#include <stdio.h>
int call_count = 0;
int f(int n)
{
call_count++;
if(n == 1 || n == 2)
return 1;
else
return f(n - 1) + f(n - 2);
}
int main()
{
int n;
for(n = 3 ; n <= 10 ; ++n){
call_count = 0;
printf("f(%d) = %d\t(call count: %d)\n", n, f(n), call_count);
}
return 0;
}
0262デフォルトの名無しさん
2008/01/19(土) 12:22:02[1] 授業単元: 置き換え方ステガノグラフィ
[2] 問題文(含コード&リンク):
100*100のbmp画像を4つの50*50のブロックにわけ
各ブロックの輝度を計算し、左上からABCDとする。
(a)A>Bのとき0 B>Aのとき1とし
(b)C>Dのときは0 D>Cのときは1とする
仮に(a)=1,(b)=0という出力が得たとし
ここで入力値(a')=0,(b')=1とするとき
ブロック毎の輝度を調節し、画像を出力しなさい。
また再度計算させ出力が(a)=0,(b)=1として得られること
ここでの輝度計算は、(r*0.299)+(b*0.587)+(g*0.114)を使いなさい
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++ 2005
[3.3] 言語: C++
[4] 期限:1月21日
[5] その他の制限:無制限
0263デフォルトの名無しさん
2008/01/19(土) 13:10:33bmpの読み込みってMFCのCImageとか使って書くの?
0264デフォルトの名無しさん
2008/01/19(土) 13:27:59使っても平気です。
0265デフォルトの名無しさん
2008/01/19(土) 13:50:23[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5803.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 今日中
0266デフォルトの名無しさん
2008/01/19(土) 14:16:14>>254
0268デフォルトの名無しさん
2008/01/19(土) 16:22:21[2] 問題文(含コード&リンク):名前(char)、身長(double)、体重(double)、視力(視力構造体)これらのデータをメンバとする構造体を定義し、入力された表示を行うプログラムを作成してください。
入力件数は、最大5件で、名前は19文字までの入力とし、範囲外だったならばエラーメッセージ(Sorry. Input less than 20 characters.)を表示し再入力して下さい。名前に"END"が入力されたときは入力終了とします表示は身長で昇順にソートして出力して下さい
また身長、体重は、小数点第以下一位までの表示とします。視力は、小数点以下第三位までの表示とします
出力の幅は、名前が19文字文、その他は5文字分で指定してください
視力は右(double)、左(double)をメンバとする構造体で扱って下さい
1件分の入力はibput_data()で、表示はdisplay_data()で、ソートはsort_data()でと処理を関数に分けて行ってくださ
名前入力の最初に"END"が入力された場合は、その旨のメッセージ(Input data is nothing!)
を出力してください
[3] 環境
[3.1] OS : windows
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: C言語
[4] 期限:1月21日
0269デフォルトの名無しさん
2008/01/19(土) 20:29:140270デフォルトの名無しさん
2008/01/19(土) 20:44:36こんなんでいい?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5815.txt
0271デフォルトの名無しさん
2008/01/19(土) 20:46:49速攻で答えてやんよ
∧_∧
( ・ω・)=つ≡つ
(っ ≡つ=つ
/ ) ババババ
( / ̄∪
0272 ◆8QYSceiIsU
2008/01/19(土) 21:04:42[2] 問題文(含コード&リンク)
適当な数字を与えてその数だけ「<」を使いそれに対応する「>」の例を全て表示するプログラムを作れ
例
2を与えた場合
<<>>
<><>
3を与えた場合
<<<>>>
<<>><>
<<><>>
<><><>
と表示する
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語:C
[4] 期限:2008/01/20(日)
お手数ですが、よろしくおねがいします
0273shogo
2008/01/19(土) 21:11:561 西暦1868年から2007年までの年号を入力して和暦に変更して出力するプログ
ラムを作りなさい。(10点)
例 入力 1868 出力 明治元年
2007 平成19年
2 整数配列が–32768から32767の範囲の数しか扱えないとしたとき、10桁の整数同士
の足し算を行うプログラムを作りなさい。(10点)
3 3桁の整数の値を入力していき、−9999が入力されたところで、それまでに入力
された数の個数と合計を整数で、平均を浮動小数点数で出力するプログラムを作りなさ
い。(10点)
4 3つの文字列”Happy”と“New”と“Year”をつないで1つの文字列として出力する
プログラムを作りなさい。(10点)
5 学籍番号、氏名、出席からなる10人分のデータがある。出席の悪いものから並び替
えて表示するプログラムを作りなさい。(10点)
例
BA180002 山田太郎 70
BA170001 石田次郎 60
データは、適当なものを各自用意して入力すること。
0274デフォルトの名無しさん
2008/01/19(土) 21:19:393を与えた時、<><<>>は含まないの?
0275 ◆8QYSceiIsU
2008/01/19(土) 21:23:05<><<>>は含みません!
0276デフォルトの名無しさん
2008/01/19(土) 21:25:58理由は? 272の条件文からじゃ含むように思うんだけど。
0277デフォルトの名無しさん
2008/01/19(土) 21:31:100278269
2008/01/19(土) 21:34:12よろしくお願いしまーす。
[1] 授業単元:なし
[2] 問題文(含コード&リンク):
(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5816.txt)
[3] 環境
[3.1] OS: (WindowsXPsp2)
[3.2] コンパイラ名とバージョン: (BCC55-BCC Developer1.2.21)
[3.3] 言語: (どちらでも可)
[4] 期限: ([無期限]だけど早ければうれしい )
0279 ◆8QYSceiIsU
2008/01/19(土) 21:34:51すみません、<<>><>と<><<>>は括弧の計算としては同じだからだと思っていましたが、そのような指定はありませんでしたorz
とりあえず
<>><<>や><<>><とかはダメだそうです
0281269
2008/01/19(土) 21:37:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5816.txt
0282デフォルトの名無しさん
2008/01/19(土) 21:38:01それがダメなのは言われなくても分かるってw
0284デフォルトの名無しさん
2008/01/20(日) 00:07:49>238
【未解決問題】
>>272 1/20
>>268 1/21
>>86 1/22
>>195 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>>148
>278 無期限
>273 ??
0285デフォルトの名無しさん
2008/01/20(日) 00:34:34再帰で簡単に書けるかと思ったらすごいことになってしまったorz
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5818.txt
もっと簡単に書けるもんかね?
0286デフォルトの名無しさん
2008/01/20(日) 00:40:31ワラタ
0287デフォルトの名無しさん
2008/01/20(日) 01:17:06対象排除してなくないか?
0288デフォルトの名無しさん
2008/01/20(日) 01:30:36よろしくお願いします。
0289デフォルトの名無しさん
2008/01/20(日) 01:32:470290285
2008/01/20(日) 01:32:51もう力尽きたお。てか、意外と難しくない?
0291デフォルトの名無しさん
2008/01/20(日) 01:33:08もう期限過ぎてるからいいじゃん別に
0292デフォルトの名無しさん
2008/01/20(日) 01:35:25入れ子がややこしいな
俺がアホなだけかも試練が
0293デフォルトの名無しさん
2008/01/20(日) 01:41:20<<<>><>><>
例えばこういうのも別の要素として扱われるのかね。
そうだとしたら面倒くさいな。
0294デフォルトの名無しさん
2008/01/20(日) 01:49:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5819.c
0295デフォルトの名無しさん
2008/01/20(日) 01:56:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5820.txt
< がn個、> がn個の文字列を求めるだけなら、再帰に加え
コールバックを使うと短く書ける。最初から条件に合う
文字列を効率よく出すやり方は分からない。
# あまり確認してないのでプログラムは間違ってるかもしれん。
0296 ◆8QYSceiIsU
2008/01/20(日) 02:06:31ありがとうございます!感激です!
>>293
俺の考えですが、多分同一とみなすと思います
>>295
ありがとうございます!こんなプログラム…俺には難しくて作れませんorz
0297デフォルトの名無しさん
2008/01/20(日) 08:07:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5821.c
正直やりすぎた
0298デフォルトの名無しさん
2008/01/20(日) 09:18:24#include<stdio.h>
#include<stdlib.h>
void disp(char *p){
for(;*--p;);
puts(p+1);
}
void brace(char *work, int brace_num, int depth){
if(depth==0 && brace_num==0){
*work='\0';
disp(work);
}
if(depth>0){
*work='>';
brace(work+1, brace_num, depth-1);
}
if(brace_num>0){
*work='<';
brace(work+1, brace_num-1, depth+1);
}
}
int main(int argc, char *argv[]){
int brace_num=3;
char *work;
if(argc==2) brace_num=atoi(argv[1]);
work=malloc(brace_num*2+2);
*work='\0';
brace(work+1, brace_num, 0);
free(work);
return 0;
}
0299デフォルトの名無しさん
2008/01/20(日) 10:01:56[2] 問題文(含コード&リンク)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5822.txt
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語:C
[4] 期限:2008/01/21
お願いします
0300デフォルトの名無しさん
2008/01/20(日) 11:01:01mainの
student std[]={
0301デフォルトの名無しさん
2008/01/20(日) 11:03:42>>299
mainの
student std[]={};
を
student std[NUMB];
にするだけで動く。平均はsougouを5で割ればいいだけ。
てかちゃんと内容を書け。
0302デフォルトの名無しさん
2008/01/20(日) 12:31:20適当だが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5824.zip
0303デフォルトの名無しさん
2008/01/20(日) 14:10:15[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5825.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:本日11:30まで
[5]その他の制限:単位がかかっているので、どなたか回答の方をお願いしますorz
0304デフォルトの名無しさん
2008/01/20(日) 14:20:120305デフォルトの名無しさん
2008/01/20(日) 14:39:12[4] 期限:本日11:30まで
DATE:2008/01/20(日) 14:10:15
最初から期限切れてるじゃん
0306デフォルトの名無しさん
2008/01/20(日) 14:40:530307デフォルトの名無しさん
2008/01/20(日) 14:43:53スイマセン……頑張っても頑張っても理解を超えた内容でした
>>305 >>306
ややこしくてすいません。23:30です
0308デフォルトの名無しさん
2008/01/20(日) 14:59:47下手に頑張っても頑張っても…とか書かれると、どう頑張って何を身につけたのか訊きたくなるじゃないか。
頑張ったからには途中まで出来ているだろうから、そこまでのソースを見せろ、とかね。
0309デフォルトの名無しさん
2008/01/20(日) 15:10:170310デフォルトの名無しさん
2008/01/20(日) 15:16:37サディスト吹いたわw
0311デフォルトの名無しさん
2008/01/20(日) 15:21:45今から苦Cでもう一度基礎から勉強して何とかやってみます
見苦しいレスばかりしてしまい、申し訳ありませんでした
0312デフォルトの名無しさん
2008/01/20(日) 15:29:22ただ「〜がかかっている」とか理由をつけて解答を迫ってるのが
人によっては癪に障るだけで。
0313デフォルトの名無しさん
2008/01/20(日) 15:41:42あんなサイトで基礎から勉強するから見につかないんだと思うぞ。
0314 ◆8QYSceiIsU
2008/01/20(日) 15:49:453しか出ないのですが、どこを書き換えればいいですか?
0315デフォルトの名無しさん
2008/01/20(日) 15:51:32>>298のレスを3で検索かけてみればいいだろ
0316 ◆8QYSceiIsU
2008/01/20(日) 15:55:00int brace_num=3;のところだと思うのですが、そこをどう書き換えればいいのかわからないのですorz
scanfだと思っていろいろいじったのですがエラーになってしまって…
0317デフォルトの名無しさん
2008/01/20(日) 16:15:100318 ◆8QYSceiIsU
2008/01/20(日) 16:17:01今は提出だけが目的なんで…すみませんorz
0320デフォルトの名無しさん
2008/01/20(日) 16:24:17[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5826.txt
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C
[4] 期限:1月21日
0321デフォルトの名無しさん
2008/01/20(日) 16:50:13ありがとうございます!なんでエラーがおこるのかわからなくて相当困ってました。
0322デフォルトの名無しさん
2008/01/20(日) 16:59:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5827.c
<<><>><<>><>
<<><>><><<>>
<<>><<><>><>
みたいに入れ子関係を変えない並び替えで同じになるものは同一とみなした.
これってグラフ理論とかの講義?
0323 ◆8QYSceiIsU
2008/01/20(日) 17:07:17ありがとうございます!
これはゼミの問題でしたσ(^_^;)アセアセ...
0324デフォルトの名無しさん
2008/01/20(日) 17:41:22[2] 問題文:
最大50文字で文字列を読み取り、
その文字数を出力するプログラム
(例:aiueo=5文字)
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:?
[3.3] 言語:C++
[4] 期限: 2008年1月20日22:00まで
[5] その他の制限:
お願いします(ノ_・。)
0325デフォルトの名無しさん
2008/01/20(日) 17:46:55#include<iostream>
#include<string>
int main()
{
std::string str;
std::cin>>str;
std::cout<<str.size()<<"文字"<<std::endl;
return 0;
}
0326デフォルトの名無しさん
2008/01/20(日) 17:47:24ごめんなさい..
[1] 授業単元:
[2] 問題文:
数値を文字列として2つ入力し、
大小を求めるプログラムを作成せよ
(例:52846>48426)
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C++
[4] 期限:2008年1月20日22:00まで
[5] その他の制限:
お願いします(ノ_・。)
0327デフォルトの名無しさん
2008/01/20(日) 17:48:16ありがとうございます!!
0328デフォルトの名無しさん
2008/01/20(日) 17:50:40int main(void)
{
using namespace std;
int a, b;
cin >> a;
cin >> b;
cout << max(a,b) << ">" << min(a,b) << endl;
return 0;
}
0329デフォルトの名無しさん
2008/01/20(日) 18:03:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5828.txt
0330269
2008/01/20(日) 18:09:260331デフォルトの名無しさん
2008/01/20(日) 18:16:18#include <iostream>
int main (int argc, char **argv) {
using namespace std;
int a, b;
cout << "数字を二つ入力してよ" << endl;
cin >> a >> b;
cout << a << (a == b ? "=" : (a < b ? "<" : ">")) << b << endl;
}
0332デフォルトの名無しさん
2008/01/20(日) 18:20:46問題文が理解不能だった
0333デフォルトの名無しさん
2008/01/20(日) 18:56:02とりあえずA.txtとB.txtとC.txtの見本みたいのがないとよくわからんな
あと樹形図化ってあるけど、どういう規則の木構造なのかもわかるとうれしい
0334デフォルトの名無しさん
2008/01/20(日) 19:11:11わかるかたお願いします↓
[1] 授業単元:
[2] 問題文:
最大50文字の数値を文字列として2つ入力して、
その差を求めるプログラムを作成せよ。
なお、最初に入力したものから後に入力したものを引くこととする
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C++
[4] 期限:2008年1月20日23:00まで
[5] その他の制限:
答えがマイナスになる場合もお願いします、、
あとできれば説明もお願いします
0335デフォルトの名無しさん
2008/01/20(日) 19:51:31[2] 問題文(含コード&リンク):添付されたファイル"city.txt"に、
日本の政令指定都市に関するデータが収められている。
このファイルを読んで、構造体の配列に格納し、
ソートを実行するプログラムを作成する。
構造体のメンバは、
都市名・登録年月日・面積・人口とし、
ソートはレコードの内容について、
まず、都市名の昇順(アルファベット順)にソートし、
次に、登録年月日の昇順にソートするものとする。
単純交換法でソートを実行した場合と、
単純選択法でソートを実行した場合の結果を示し、
違いがあれば、その違いの特徴を説明し、理由も書きなさい。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C
[4] 期限: 1/22日まで
[5] その他の制限:city.txtなどは次に書きます。よろしくお願いします。
0336デフォルトの名無しさん
2008/01/20(日) 19:52:30city.txtの中身
都市名 登録年月日 面積[km^2] 人口[人] (2007年12月1日現在)
Sapporo 1972/04/01 1,121.12 1881218
Sendai 1989/04/01 735.16 1029595
Saitama 2003/04/01 217.49 1192005
Chiba 1992/04/01 272.08 938293
Yokohama 1956/09/01 437.38 3,630830
Kawasaki 1972/04/01 142.70 1,372762
Niigata 2007/04/01 726.10 813170
Shizuoka 2005/04/01 1,388.78 710902
Hamamatsu 2007/04/01 1,511.17 811446
Nagoya 1956/09/01 326.45 2238223
Kyoto 1956/09/01 827.90 1469242
Osaka 1956/09/01 222.27 2645790
Sakai 2006/04/01 149.99 835257
Kobe 1956/09/01 552.15 1530912
Hiroshima 1980/04/01 905.13 1163051
Kitakyushu 1963/04/01 487.71 987337
Fukuoka 1972/04/01 340.60 1429828
0337デフォルトの名無しさん
2008/01/20(日) 19:53:26すいません見にくかったです。
都市名 登録年月日 面積[km^2] 人口[人] (2007年12月1日現在)
Sapporo 1972/04/01 1,121.12 1881218
Sendai 1989/04/01 735.16 1029595
Saitama 2003/04/01 217.49 1192005
Chiba 1992/04/01 272.08 938293
Yokohama 1956/09/01 437.38 3,630830
Kawasaki 1972/04/01 142.70 1,372762
Niigata 2007/04/01 726.10 813170
Shizuoka 2005/04/01 1,388.78 710902
Hamamatsu 2007/04/01 1,511.17 811446
Nagoya 1956/09/01 326.45 2238223
Kyoto 1956/09/01 827.90 1469242
Osaka 1956/09/01 222.27 2645790
Sakai 2006/04/01 149.99 835257
Kobe 1956/09/01 552.15 1530912
Hiroshima 1980/04/01 905.13 1163051
Kitakyushu 1963/04/01 487.71 987337
Fukuoka 1972/04/01 340.60 1429828
0338デフォルトの名無しさん
2008/01/20(日) 19:58:11337はミスりました、すいません。
#include<stdio.h>
#define N 17 //*keyの個数
#define SIZE 20 //*nameの大きさ
struct city{
char name[SIZE];
int year, month, day;
double area;
int population;
};
struct city key[N];
int main(void){
FILE *fp;
int i;
char naka[100];
fp = fopen("city.txt","r");
if(fp!=NULL){
printf("ファイルを開きました\n");
}
fgets(naka,100,fp);
for(i = 0; i < N; i++){
fscanf(fp,"%s %d/%d/%d %lf %d",key[i].name, &key[i].year, &key[i].month, &key[i].day, &key[i].area, &key[i].population);
printf("%s %d/%d/%d %lf %d\n",key[i].name, key[i].year, key[i].month, key[i].day,key[i].area, key[i].population);
}
return 0;
}
これを元に作ってほしいです。よろしくお願いします
0339デフォルトの名無しさん
2008/01/20(日) 20:09:55#include <iostream>
using namespace std;
int main()
{
double n1, n2;
// 一つ目入力
cout << "n1 : ";
cin >> n1;
// 二つ目入力
cout << "n2 : ";
cin >> n2;
// 結果出力
cout << "n1 - n2 : " << n1 - n2 << endl;
return 0;
}
0340デフォルトの名無しさん
2008/01/20(日) 20:32:40ありがとうございます!
でもまだ
using namespace std;
をならってません(ノ_・。)
0341デフォルトの名無しさん
2008/01/20(日) 20:34:030342デフォルトの名無しさん
2008/01/20(日) 20:38:37stringなりchar配列でやれって意味だと思うんだけど
0343デフォルトの名無しさん
2008/01/20(日) 20:42:32文字列から数値への変換は自分でやるの?
入力とかは、scanfとかでやれとか?
使っていいものの条件をかいてくれ。
0344デフォルトの名無しさん
2008/01/20(日) 20:57:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5829.txt
冗長だが。
数値に区切って算出した方がいいんだよな。
0345デフォルトの名無しさん
2008/01/20(日) 21:04:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5830.txt
city.txtの","って取り除かないと読めなくない?
0346344
2008/01/20(日) 21:05:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5831.txt
ますますクソだわ、吊ってくる...
0347デフォルトの名無しさん
2008/01/20(日) 21:09:54あとscanfもまだ習っていません、、
文字列の入力は cin.getline しか習ってないんですが。。。
まさかこれでこの問題乗り切るのむりですか?(´△`)
よくわかんないので、以前に和を出す方法を教えてもらったのでそれの一部のせます!
前後はしょってるので意味わかんなかったらごめんなさい、、
// 足し算
// a = b + c
int add(char a[], char b[], char c[])
{
int i ,carry = 0;
for( i = 0 ; i < Max_Length ; i++ ) {
a[i] = b[i] + c[i] + carry;
carry = a[i] / 10;
a[i] = a[i] - carry * 10;
}
return carry;
}
0348デフォルトの名無しさん
2008/01/20(日) 21:43:20今ソフトがないもんで・・・
0349デフォルトの名無しさん
2008/01/20(日) 21:53:38[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
問題1;nの階乗の表を表示するプログラム(intで表示できる範囲のみ)
問題2: 二次元配列を使い、以下の点数表から各人の3科目の平均点と各科目ごとの5人の平均点を求めるプログラム
国語 数学 英語
安藤 56 45 67
加藤 64 34 55
田中 53 76 46
山田 75 78 78
山本 60 67 62
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:コマンドプロンプト
[3.3] 言語: C
[4] 期限: 2008年1月21日00:00まで
[5] その他の制限: なし
0350デフォルトの名無しさん
2008/01/20(日) 21:55:48[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5832.txt
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C言語
[4] 期限:1月22日
[5]制限 : お願いします。
0351デフォルトの名無しさん
2008/01/20(日) 22:24:16#include <stdio.h>
#define LMAX 100
int char_counter(char c, char * str)
{
int cnt=0;
while(*str!='\0'){
if(*str==c)
cnt++;
str++;
}
return cnt;
}
main()
{
char c,str[LMAX];
int cnt=0;
printf("文章:");
fgets(str,LMAX-1,stdin);
for(c=33;c<127;c++){
cnt=char_counter(c,str);
if(cnt>0)
printf("[%c]->%d個\n",c,cnt);
}
}
0352デフォルトの名無しさん
2008/01/20(日) 22:33:36[2] 問題文
1つ以上の空白文字で区切られた英文を半角文字列として入力し、空白文字
を区切りとし分解して表示する。以上の動作をNULLが入力されるまで繰り返
すプログラムを作成しなさい。
�@文字列の入力にはgets関数を使用すること。また、最大で80文字
までしか入力されないものとする。
�A空白文字かどうかは文字検査関数(is・・・)を使用して調べること。
�B半角文字しか入力されないもとする
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C
[4] 期限:なし
[5] その他の制限:
0353shogo
2008/01/20(日) 23:15:54ディフォルトの名無しさんご回答ありがとうございました!
大変参考になりました!!
0354デフォルトの名無しさん
2008/01/20(日) 23:27:080355デフォルトの名無しさん
2008/01/20(日) 23:30:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5836.txt
無駄に長くした。
0356デフォルトの名無しさん
2008/01/20(日) 23:32:25空白を複数個入れると表示が見苦しくなるが気にするな。
そうしちゃいけないとは書いていないから。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char buf[81];
int i;
while(gets(buf)){
if(!strcmp(buf,"NULL"))
break;
for(i=0;buf[i];i++)
putchar(isspace(buf[i])?'\n':buf[i]);
printf("\n\n\n");
}
return 0;
}
0357デフォルトの名無しさん
2008/01/20(日) 23:56:04#include <stdio.h>
#include <ctype.h>
#define LMAX 80
main()
{
int i=0;
char str[LMAX+1];
while(gets(str)){;//本当はfgets(str,LMAX,stdin)を使いたい
while(str[i]!='\0'){
if(isspace(str[i])){
if(i>0&&!isspace(str[i-1]))
putchar('\n');
}else
putchar(str[i]);
i++;
}
putchar('\n');
}
}
0358デフォルトの名無しさん
2008/01/21(月) 00:09:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5838.txt
なんとなく。
0359269
2008/01/21(月) 00:33:14混乱させていたらごめんなさい、樹形図化とはただの総書き出しのことです。
以下は私のイメージによる、辞書式に総書き出しをした場合の最初と最後の100件ずつ計200行です。
。
1行は常に25bytesです(Numberの右揃え7桁で7bytes+半角スペース1個で1byte+Combinationの2桁表記数字が6個分と半角カンマ5個分で17bytes)。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5837.txt
これはn2c処理の材料の一例、B.txt(右揃え無し)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5833.txt
これはB.txtにn2c処理をした後=C.txt(Number部分は右揃え7桁になっている)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5834.txt
n2c処理出来るものさえ頂戴出来れば僥倖ですが、c2n処理の材料であるA.txtは以下。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5835.txt
あと、自分でヒントを探した際に理解できなかったのですが(C#だし)考え方のノリとしてはこれです。
http://www.microsoft.com/japan/msdn/vs/vcsharp/mth_lexicograp.aspx
0360デフォルトの名無しさん
2008/01/21(月) 00:36:34>303
【未解決問題】
>>86 1/22
>>335 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>>148
>278 無期限
0361デフォルトの名無しさん
2008/01/21(月) 00:41:37http://mori.eco.to/
0362デフォルトの名無しさん
2008/01/21(月) 00:44:150364デフォルトの名無しさん
2008/01/21(月) 01:43:30もしだめなら仕様書のせてプログラム作ってくれるスレ教えてくだされ(ノ_・。)
0365デフォルトの名無しさん
2008/01/21(月) 01:46:29無償では誰もやらないと思うYO!
0366デフォルトの名無しさん
2008/01/21(月) 01:50:050367デフォルトの名無しさん
2008/01/21(月) 02:53:00作るならJAVAやC#その他言語もOKなスレにして欲しいな。
【無料】仕事代行ギコ猫商会【無保証】
猫の手を借りたいほど忙しい人が、プログラム好きの猫たちに仕事を依頼するスレです。
猫たちは気紛れなので、依頼を受け無い時もあります。途中で投げ出すかも知れませんし
出来たとしても猫たちの能力はまちまちなので品質は保証できません。
また、倫理や契約に違反する可能性がありますので十分注意してください。
まあ利用できるのは、個人ぐらいだろうな。企業とかでこんな所に仕事を投げたのが
ばれたら大変な事になりそう。
0368デフォルトの名無しさん
2008/01/21(月) 03:06:34ロト6のできたよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5842.txt
何に使うのか気になるなw
0369348
2008/01/21(月) 03:21:22ところで250の
printf("input (e.g. ****/**/**)\n>>");
の意味がわからないのですが・・・
0370デフォルトの名無しさん
2008/01/21(月) 03:27:15いや、"input (e.g. ****/**/**)\n>>"って表示するだけのことだろ。
****/**/**は年/月/日で入力しろってことでしょ
0372デフォルトの名無しさん
2008/01/21(月) 04:03:55面白そうなので、ちょっとやってみた。
期限過ぎてるし、手元に開発環境がなくてrubyだしで
スレ違いすまん
--
def create(n)
if n < 2
return "<>"
else
strs= create(n-1)
result = []
strs.each do |str|
result.push "<"+ str +">"
result.push str +"<>"
end
return result
end
end
create(ARGV.shift.to_i).each { |str| print str, "\n"}
--
0374デフォルトの名無しさん
2008/01/21(月) 04:13:44スクリプト系だと結構楽にかけそうなんだよね。
Cだと、リストと文字列処理が貧弱すぎて泣ける
0375デフォルトの名無しさん
2008/01/21(月) 09:39:31[2] 問題文(含コード&リンク):ある金額を入力し、その金額のお金の種類と数(1万円札〜1円玉)を求めるwhile文を作れ。
[3] c言語
[4] 期限:今
[5] その他の制限:ど基礎。for,while程度
よろしくお願いします。
0376デフォルトの名無しさん
2008/01/21(月) 09:43:340377デフォルトの名無しさん
2008/01/21(月) 09:44:100378375
2008/01/21(月) 09:47:120379デフォルトの名無しさん
2008/01/21(月) 09:57:510380デフォルトの名無しさん
2008/01/21(月) 10:03:26そんなスレあったら俺が依頼したいww
0381デフォルトの名無しさん
2008/01/21(月) 10:17:45int main(void) {
int N=147568,a=10000;
while(N) {
printf("%d円:%d枚\n",a,N/a);
N%=a;
a/=2;
if(N) {
printf("%d円:%d枚\n",a,N/a);
N%=a;
a/=5;
}
}
return 0;
}
0382デフォルトの名無しさん
2008/01/21(月) 10:22:53[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5843.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日の24時まで
[5] その他の制限:
長いプログラムになっても構わないので、
if文やfor文などの初歩的な関数を使いまくる感じでお願いします
0383382
2008/01/21(月) 10:24:370384デフォルトの名無しさん
2008/01/21(月) 10:27:15なるほど、そういう風にwhileを使うのか・・・全然思いつかなかった・・・・・orz
0385デフォルトの名無しさん
2008/01/21(月) 12:05:48#include <stdio.h>
struct student {
char name[32];
int ID;
int score;
};
int main(void) {
int i,j,x;
char buf[32];
struct student s[5];
for(i=0;i<5;i++) {
printf("氏名:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%s",&s[i].name);
printf("ID:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&s[i].ID);
printf("点数:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&s[i].score);
}
printf("何点以上?:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&x);
for(i=0;i<5;i++) if(s[i].score>=x) printf("%s ID:%d %d点\n",s[i].name,s[i].ID,s[i].score);
return 0;
}
0386デフォルトの名無しさん
2008/01/21(月) 12:28:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5823.c
0387デフォルトの名無しさん
2008/01/21(月) 12:57:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5845.c
0388デフォルトの名無しさん
2008/01/21(月) 13:13:09#include<stdio.h>
long get_power(long base, int expt);
int main(int argc, char *argv[]){
int base, expt;
long power_out;
if(argc != 3){
fprintf(stderr, "input error\n");
return 1;
}
base = atoi(argv[1]);
expt = atoi(argv[2]);
if(expt < 0){
fprintf(stderr, "input error\n");
return 1;
}
power_out = get_power(base, expt);
printf("%d^%d = %ld\n", base, expt, power_out);
return 0;
}
long get_power(long base, int expt){
if(expt == 0) return 1;
if(expt % 2 == 0){
expt /= 2;
base *= base;
return get_power(base, expt);
}else{
expt -= 1;
return base * get_power(base, expt);
}
}
0389デフォルトの名無しさん
2008/01/21(月) 13:27:02#include<stdio.h>
int get_gcd(int num1, int num2);
int main(int argc, char *argv[]){
int num1, num2;
int gcd_out;
if(argc != 3){
fprintf(stderr, "input error\n");
return 1;
}
num1 = atoi(argv[1]);
num2 = atoi(argv[2]);
if(num2 < 0){
fprintf(stderr, "input error\n");
return 1;
}
gcd_out = get_gcd(num1, num2);
printf("GCD(%d,%d) = %d\n", num1, num2, gcd_out);
return 0;
}
int get_gcd(int num1, int num2){
if(num1 == num2) return num1;
if(num1 > num2){
return get_gcd(num1-num2, num2);
}else{
return get_gcd(num1, num2-num1);
}
}
0390デフォルトの名無しさん
2008/01/21(月) 15:27:31[1] 授業単元:プログラミングC++
[2] 問題文(含コード&リンク):
以下のデータを空白を区切りとしてキーボードから入力して
配列に読み込み、英語のアルファベット順に並び替えよ。
ただし、文字列の大きさの比較にはstrcmp関数を
文字列の入れ替えにはstrcpy関数を利用しなさい。
日本語 英語 味わい月
鯖 mackerel 10
新巻鮭 salmon 12
岩魚 charr 7
牡蛎 oyster 2
帆立貝 scallop 1
正答動作画像
http://www-2ch.net:8080/up/download/1200896566698764.Kngz6w
[3] 環境
[3.1] OS: WindowsXP
[3.2] Microsoft Visual C++
[3.3] C++
[4] 期限: 2008年1月23日18:00まで
[5] その他の制限:strcmpとstrcpyを利用したソートをさせるのが問題の主眼かなと思います。
よろしくお願いします。
0391デフォルトの名無しさん
2008/01/21(月) 17:06:20[3] 環境
[3.1] OS:WindowsXP
[3.2] gcc 3.4
[3.3] 言語:C
カンマで区切った単語を入力してその中で一番長い文字列を表示させる。
例
単語を入力してください:1,10,10,1000
最長文字列は1000です。
strtokでカンマごとに切断することは出来たのですがそこからどうすればいいか分かりません。
よろしくお願いします。
0392デフォルトの名無しさん
2008/01/21(月) 17:10:230393デフォルトの名無しさん
2008/01/21(月) 17:53:140394デフォルトの名無しさん
2008/01/21(月) 18:36:29#include <stdio.h>
#include <string.h>
int main()
{
int i = 0, max = -1, max_i = -1;
char buf[200], *p, *tmp[100];
printf("単語を入力してください:");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%s", buf);
for (p = strtok(buf, ","); p != NULL; i++)
{
int len = strlen(p);
if (max < len)
{
max = len;
max_i = i;
}
tmp[i] = p;
p = strtok(NULL, ",");
}
printf("最長文字列は%s", tmp[max_i]);
return 0;
}
0395デフォルトの名無しさん
2008/01/21(月) 19:24:02[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5847.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008/01/27 23:59
[5] できれば配列とforメインでおねがいします
0396デフォルトの名無しさん
2008/01/21(月) 19:45:45int main () {
int y, m, d, sum = 0;
int m_array[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
char *week[7] = {"日", "月", "火", "水", "木", "金", "土"};
printf("input (e.g. ****/**/**)\n>>");
スイマセン、このinputとe.gの意味がわかりません
0397デフォルトの名無しさん
2008/01/21(月) 19:49:150398デフォルトの名無しさん
2008/01/21(月) 19:59:56e.gは、らてんごでたとえばっていみだよ
0399デフォルトの名無しさん
2008/01/21(月) 21:14:09[2] 問題文(含コード&リンク):オンラインゲームを作成せよ。
ラグナロクオンラインやリネージュのようなオンラインゲームを
作成してみよう。データを送信するのに必要なライブラリ等は各自
調べておくこと。またDirectXを使用すること。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VisualStudio2005
[3.3] 言語: C++
[4] 期限: 2008/2/1 23:59
[5] できれば3DのデータをMAXやMAYA、Shade等で作成する。
0400デフォルトの名無しさん
2008/01/21(月) 21:16:060401デフォルトの名無しさん
2008/01/21(月) 21:30:47#include <stdio.h>
int main(void)
{
char input[100];
printf("******ログイン画面******\n");
printf("UserID:");
scanf("%s",input);
printf("Password:");
scanf("%s",input);
printf("@@@@ログイン完了@@@@\n\n");
//roop for ever
while(1){
printf("チャット発言:");
scanf("%s",input);
printf("\n ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n");
printf("( ´∀`)< %s\n",input);
printf("( ) \______________\n");
printf(" | | |\n");
printf("(__)_)\n\n");
}
return 0;
}
0402デフォルトの名無しさん
2008/01/21(月) 21:39:40#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string input;
cout<<"******ログイン画面******"<<endl;
cout<<"UserID:";
cin>>input;
cout<<"Password:";
cin>>input;
cout<<"@@@@ログイン完了@@@@\n"<<endl;
//roop for ever
while(1){
cout<<"チャット発言:";
cin>>input;
cout<<endl;
cout<<" ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄"<<endl;
cout<<"( ´∀`)< "<<input<<endl;
cout<<"( ) \______________"<<endl;
cout<<" | | |"<<endl;
cout<<"(__)_)\n"<<endl;
}
return 0;
}
0403デフォルトの名無しさん
2008/01/21(月) 21:43:02これが正解だw
#include <iostream>
#include <string>
int main(void)
{
std::string input;
while(true){
std::cout<<"******ログイン画面******"<<std::endl;
std::cout<<"UserID:";
std::cin>>input;
std::cout<<"Password:";
std::cin>>input;
std::cout<<"IDまたはパスワードが違います\n"<<std::endl;
}
return 0;
}
0404デフォルトの名無しさん
2008/01/21(月) 22:26:06[2] 問題文(含コード&リンク):()
自動販売機のオブジェクトを作成し実現しなさい(ジュース,たばこ,カップラーメンなど何でも良い(何の自販機は出力すること))。
ただし,下記の条件を満たすこと。
<条件>
自動販売機で購入できる「商品」,「お金」,「自動販売機」は最低限クラス化すること。
「カプセル化」,「継承」,「多様性」を全て利用すること。
例外処理をすること(プログラムが頓挫した時点でNGとします)。
入出力は,下記のとおり行うこと。
【入力】
・お金(10円〜1000円)の個数(枚数)
・購入商品選択(複数可)
【出力】
・つり銭(10円〜100円)の個数(枚数)と総購入代金
・購入商品名(複数)
実現は,main()関数で「自動販売機」クラスのインスタンスを1つ作成し,そのクラスのbuy( )メンバ関数を呼び出したら全てが動作するようにする。
※条件以外に動的メモリ,ファイル入出力などを用いて自動販売機の機能が拡張されるほど良い。ただし,明らかに無駄なコードを追加して機能を増やしている場合はその限りではありません。
[3] 環境
[3.1] OS: Windows XP
[3.2] visual studio 2005
[3.3] 言語: C++
[4] 期限: 2008/1/25まで
[5] その他の制限: 特に無し。
よろしくお願いします。
0405デフォルトの名無しさん
2008/01/21(月) 22:28:22なし
【未解決問題】
>>335 1/22
>>390 1/23 18:00
>>404 1/25
>>395 1/27 23:59
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>399 2/1 23:59
>79 無期限
>144 無期限 問題文>>148
0406デフォルトの名無しさん
2008/01/21(月) 22:30:21#define N 1;
typedef struct{
}Record;
void inputData(int n, Record r[]);
void outputData(int n, Record r[]);
void calcBMI(int n; Recordr[]);
int main(void)
{
Record rrr[N];
int i;
printf("%d人まで処理します",N);
for(i=0;i<N;i++){
inputData(i,rrr);
outputData(i,rrr);
calcBMI(i,rrr);
printf("\n");
}
return 0;
}
0407デフォルトの名無しさん
2008/01/21(月) 22:30:45void inputData(int n, Record r[]){
printf("%d人目の入力\n",n+1);
printf("名前は? →");scanf("%s", r[n].personal);
printf("生年月日は?(8桁)→");scanf("%s", r[n].birth);
printf("身長は?(cm) →");scanf("%lf", &r[n].height);
printf("体重は?(cm) →");scanf("%lf", &r[n].weight);
}
/*outputData関数の定義*/
/*calcBMIの定義*/
実行結果は
1人まで処理します
1人目の入力
名前は? →hoge
生年月日は? →19700917
身長は(cm)? →174.5
体重は(kg)? →69.5
1人目の出力
名前は hoge
生年月日は 1970年09月17日
身長は 174.50cm
体重は 69.50kg
1人目のBMIは 22.82
Record型構造体の定義とoutputData関数の定義とcalcBMIの定義がよくわからないのですがどなたかわかりませんか?
BMIの計算内にはpower関数を利用しなくてはいけないんですが
0408デフォルトの名無しさん
2008/01/21(月) 22:45:51[1] 授業単元:C実習
[2] 問題文(含コード&リンク):()
キーボードから氏名、生年月日、身長、体重をそれぞれよみこんでRecord構造体変数に格納し
そのデータからBMIを計算し同じ構造体メンバに格納し、画面に表示するプログラム
氏名、生年月日、身長、体重、BMIをメンバとする構造体Recordを定義する
なおBMIは次の計算で求められる
BMI=体重(kg)/身長^2(m)
BMIの計算には、power関数も利用し、また、身長の入力単位がcmであることに注意する
[3] 環境
[3.1] OS: Windows vista
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 2008/1/22まで
[5] その他の制限: 特に無いです
よろしくおねがいします
0409デフォルトの名無しさん
2008/01/21(月) 23:16:08求めなさい。
このプログラムをお願いします。
0410デフォルトの名無しさん
2008/01/21(月) 23:18:28>>408
>>233
0411デフォルトの名無しさん
2008/01/21(月) 23:28:58まあ落ち着いて>>1でも読めよ
0412デフォルトの名無しさん
2008/01/21(月) 23:40:13ありがとうございます。
>>233さんの方法を試してみたのですがじっこうけっかがうまくいかなくて・・
0413デフォルトの名無しさん
2008/01/21(月) 23:44:04今年のセンター試験2Bでそのプログラムが出たよ
BASICだけど
0414デフォルトの名無しさん
2008/01/21(月) 23:45:19何が駄目なのかくらい書けよ。
0415デフォルトの名無しさん
2008/01/21(月) 23:50:43あと出力のところで〜年〜月〜日とださなければいけないのですがその部分もわからないです
0416デフォルトの名無しさん
2008/01/21(月) 23:51:450417デフォルトの名無しさん
2008/01/21(月) 23:53:380418デフォルトの名無しさん
2008/01/21(月) 23:55:071970年09月17日と分けるにはどうすればいいかわからないです
0419デフォルトの名無しさん
2008/01/21(月) 23:56:25fgets(buf, sizeof(buf), stdin);
printf("%.4s年%.2s月%.2s日\n", buf, buf + 4, buf + 4 + 2);
0420デフォルトの名無しさん
2008/01/22(火) 00:11:020421デフォルトの名無しさん
2008/01/22(火) 00:22:22double pow(double a)
{
return a*a;
}
こんなかんじじゃだめですかね?
0422デフォルトの名無しさん
2008/01/22(火) 00:24:36なんだからダメだろ
0423デフォルトの名無しさん
2008/01/22(火) 00:27:540424デフォルトの名無しさん
2008/01/22(火) 00:30:290425デフォルトの名無しさん
2008/01/22(火) 00:30:32それとpowerは2乗じゃなく累乗の意。
0426デフォルトの名無しさん
2008/01/22(火) 00:30:45知識不足の自分に教えてくださってありがとうございます
0427デフォルトの名無しさん
2008/01/22(火) 00:38:02042886
2008/01/22(火) 01:05:39ありがとうございました!!
まさか丁度300レス後とはwwww
0429デフォルトの名無しさん
2008/01/22(火) 01:07:43043086
2008/01/22(火) 01:07:57な、内容みたら文字化けがwwwwwwwwwwwwwwwwwww
orz
0431デフォルトの名無しさん
2008/01/22(火) 01:09:17エンコードをEUCにしなさい。
0432デフォルトの名無しさん
2008/01/22(火) 01:09:43cout << "w";
0433デフォルトの名無しさん
2008/01/22(火) 01:09:490434デフォルトの名無しさん
2008/01/22(火) 02:06:13[1] 授業単元:情報処理概論
[2] 問題文(含コード&リンク):()
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 22日10時まで
問題文
(ファイルからのデータ入力、ファイルへの出力)
"in_file"という名前のファイルの中に多数の整数データが空白や改行コードで区切られて並んでいると仮定した上で
この入力ファイルのなかのデータを1行に5個ずつ綺麗に並べて"out_file"という名前のファイルに出力するCプログラムを作成せよ。
入力ファイル”in_file"の内容が
_-1111111111______2222222__33333 4444 55 6 7 8 9 0 1 2 3 4
5 6 7890123
のときには次のような内容を出力ファイル”out_file"に書き出す
_-11111111_____22222______333333________4444__________55
_____________6___________7______________8____________9____________0
_____________1___________2______________3____________4____________5
_____________6__7890123
です、よろしくお願いします。
0435434
2008/01/22(火) 02:08:11「 _ 」はスペースで右揃えに並ぶ感じです。
よろしくお願いします
0436デフォルトの名無しさん
2008/01/22(火) 02:10:43ありがとうございます。プログラムで見てみるとどういうことだったのかよく分かりました。
もっと勉強していこうと思います!!
0437デフォルトの名無しさん
2008/01/22(火) 03:34:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5851.txt
C++の単元で"ソートにstrcmp()とstrcpy()を使え"ってホント?
あまりに稚拙なコードで組んでて泣けてきた。
0438デフォルトの名無しさん
2008/01/22(火) 04:40:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5852.c
strtokをあえて使わない 俺ってそんな男
0439デフォルトの名無しさん
2008/01/22(火) 05:41:11でも符号の分いれて、%11dの予感。
0440デフォルトの名無しさん
2008/01/22(火) 07:12:54[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5853.txt
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン:gcc3.4
[3.3] 言語:C言語
[4] 期限:2008年1月23日10時まで
[5] その他の制限:特にないです
どうかよろしくお願いします。
0441デフォルトの名無しさん
2008/01/22(火) 07:49:05うぷろだの5854.txt
規制で携帯からなんでアドレス貼れなくてスマソ
0442デフォルトの名無しさん
2008/01/22(火) 07:51:01このスレと違いはあるのですか?
0443デフォルトの名無しさん
2008/01/22(火) 07:57:270444デフォルトの名無しさん
2008/01/22(火) 10:36:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5855.c
たぶん大丈夫と思う。テストデータの答えがわからないからなんとも言えないけど
0445デフォルトの名無しさん
2008/01/22(火) 10:51:32[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5856.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
[3.3] 言語: C
[4] 期限: 2008/1/24
[5] その他の制限:
0446デフォルトの名無しさん
2008/01/22(火) 15:14:04buffer=(char *)malloc(buffer_size);
while(fgets(buffer,sizeof(buffer),stdin)){
fputs(buffer,fp);
if(sizeof(buffer)==buffer_size){
buffer=(char *)malloc(sizeof(buffer)*2);
buffer_size=buffer_size*2;
fputs(buffer,fp);
free(buffer);
ファイル入出力プログラムの一部ですが、
sizeof(buffer)では4バイトしか確保できないということに気がつきました。
できるだけプログラムをいじらず入力したサイズを取得する方法はありますか?
ヒントをください。buffer_sizeの初期設定は1000byteです。
strlenでもできませんでした。
0447デフォルトの名無しさん
2008/01/22(火) 15:29:44スレ違い。
初心者スレにでもどうぞ。
その際は何故バッファが必要なのか、その理由を書くことをお推めします。
0448デフォルトの名無しさん
2008/01/22(火) 16:30:04[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5859.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語:C
[4] 期限:2008年1月23日
[5] その他の制限:特になし
よろしくお願いします。
0449デフォルトの名無しさん
2008/01/22(火) 16:30:31ありがとうございました
0450デフォルトの名無しさん
2008/01/22(火) 16:33:23http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5860.txt
0451デフォルトの名無しさん
2008/01/22(火) 18:07:10有難う御座いますm(_ _)m
0452デフォルトの名無しさん
2008/01/22(火) 18:40:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5861.txt
0453デフォルトの名無しさん
2008/01/22(火) 19:40:07[2] 問題文:任意の数(最大10個)の整数を入力した後、
それらの最小公倍数と最大公約数を関数内で求め、mainの中で表示プログラムを作成すること。
[
3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio
[3.3] 言語: C
[4] 期限: 2008/1/25
[5] その他の制限:
0454デフォルトの名無しさん
2008/01/22(火) 20:40:54ありがとうございました。
助かります!
0455デフォルトの名無しさん
2008/01/22(火) 21:03:49[2] 問題文(含コード&リンク):霰の計算
問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5862.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: (2008年1月23日12:00まで
[5] その他の制限: 入出力と計算部分は関数化します。
よろしくお願いいたします。
0456455
2008/01/22(火) 21:08:18誤 1?n?10000の範囲
↓
正 1≦n≦10000の範囲
です。宜しくお願いいたします。
0457デフォルトの名無しさん
2008/01/22(火) 21:29:23c:\documents and settings\sano takumi\my documents\visual studio 2005\projects\san\san.cpp(26) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
と出たのですがこれはどういうことでしょうか?
0458デフォルトの名無しさん
2008/01/22(火) 21:30:05してないならしろ。
0459デフォルトの名無しさん
2008/01/22(火) 21:30:530460デフォルトの名無しさん
2008/01/22(火) 22:04:230461デフォルトの名無しさん
2008/01/22(火) 22:14:05>ちなみに1<=n<=10000の範囲で一番大きなf(n)の値を返すnは871であり、
>f(871)=178である。
n = 6171, f(6171) = 261 じゃないの?
0462デフォルトの名無しさん
2008/01/22(火) 22:24:47[2]穴埋めです
[3]わかんないです。
[3.1] (Windows)
[3.2] lc-86? C-pad?:
[3.3] C言語:
[4] 期限: 2008/1/24
0463デフォルトの名無しさん
2008/01/22(火) 22:25:564個の変数
a 整数
b 実数
c 精度の高い実数
d 文字
を宣言し、それぞれに
適当なデータを代入する。
そして次のように画面表示
するプログラム
a の値は ... です
b の値は ... です
c の値は ... です
d の値は ... です
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>
void main(){
getch();
}
0464デフォルトの名無しさん
2008/01/22(火) 22:27:09その結果を表示するプログラム
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>
void main(){
for( )
{
}
printf( );
getch();
}
0465デフォルトの名無しさん
2008/01/22(火) 22:30:030466デフォルトの名無しさん
2008/01/22(火) 22:33:080.001 づつ増加させることを
繰り返し、x^2 + 7x - 1 の値
が初めて正となった時点で
繰り返しを終了し、そのときの
x の値を表示するプログラム
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>
void main(){
while( )
{
}
printf( );
getch();
}
0467デフォルトの名無しさん
2008/01/22(火) 22:33:51その数を x に代入する。
x が 100 より大きいとき、
「入力した数は 100 より大きい」
と表示し、x が 100 以下のとき、
「入力した数は 100 以下です」
と表示するプログラム
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>
void main(){
getch();
}
0468デフォルトの名無しさん
2008/01/22(火) 22:38:11「c」のとき、「c です」「d」のとき、「d です」「e」のとき、「e です」
と表示し、それ以外のとき「a,b,c,d,e 以外の文字」と表示するプログラム
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>
void main(){
switch( )
{
}
getch();
}
0469デフォルトの名無しさん
2008/01/22(火) 22:40:010470デフォルトの名無しさん
2008/01/22(火) 22:40:12縦 100m、横 120mのグランド
がある。
縦横それぞれ同じ長さ x だけ
長くして面積が 13000�u と
なるようにしたい。
x を少数点以下1桁までの精度
で求めるプログラム。
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>
void main(){
float x=0;
while( )
{
x = x + 0.01;
}
printf("縦横 %5.1f �b広げればよい\n",x);
getch();
}
0471デフォルトの名無しさん
2008/01/22(火) 22:42:01問7
キーボードから実数を一つ入力させ、それを x に代入する。
x ≦ 100 のとき「A」、
100 < x ≦ 350 のとき「B」、
350 < x ≦ 600 のとき「C」、
600 < x のとき「D」と表示するプログラム
問8
1 + 4 + 9 + 16 + ・・・と加えて行き、
和が初めて 10000を超えたとき、
その和の値、および最後に加えた数を求めて表示するプログラム
問9
次に書かれた数の総和を求め、結果を表示するプログラム:
1
1+2
1+2+3
1+2+3+4
・
・
・
1+2+3+4+5+・・・+ 10
0472デフォルトの名無しさん
2008/01/22(火) 22:48:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5863.txt
丸投げスレだから問題丸投げはいい。でも>>1に長いならうpろだ使えってかいてあるよね?
0474デフォルトの名無しさん
2008/01/22(火) 22:54:16おそらく1〜1000の書き間違いだろ
気にするな
0475デフォルトの名無しさん
2008/01/22(火) 22:56:311から1000までの範囲にしといた
#include <stdio.h>
#define N 300
int f(int);
int k=0,array[N]={0};
int main(void) {
int n,a,b=0,c;
for(n=1;n<=1000;n++) {
a=f(n);k=0;
if(a>b) {
b=a;
c=n;
}
}
printf("%d %d\n\n",c,f(c));
for(n=0;n<=b;n++) printf("%d ",array[n]);
return 0;
}
int f(int n) {
array[k++]=n;
if(n==1) return k-1;
if(n%2==0) f(n/2);
else f(3*n+1);
}
0476472
2008/01/22(火) 23:01:36>>468,470,471
>>471の問9に関して題意が不明確なのでこっちで勝手に解釈した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5864.txt
>>472含めすべてのプログラムの動作未確認、コンパイルもしていない。
間違ってたらごめんちゃい。
0477デフォルトの名無しさん
2008/01/22(火) 23:06:230478461
2008/01/22(火) 23:08:43>>474が言ってるように、1〜1000なら正しい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5865.txt
0479デフォルトの名無しさん
2008/01/22(火) 23:11:570480デフォルトの名無しさん
2008/01/22(火) 23:17:31#include <stdio.h>
#include <conio.h>
#include <math.h>
void main(){
float x=0;
while(0)
{
x = x + 0.01;
}
x=floor((-110+10*sqrt(131.0))*10+0.5)/10;
printf("縦横 %5.1f �b広げればよい\n",x);
getch();
}
0481デフォルトの名無しさん
2008/01/22(火) 23:20:330482455
2008/01/22(火) 23:28:361≦n≦10000の範囲で大きな関数を求めることは正しいのですが、
ちなみに〜の下りの問題文の方では皆さんのおっしゃる通り
「1≦n≦1000の範囲」においてはnは871でした。
>>474さん
よく確認してから記述するよう以後気を付けます。すみませんでした。
>>475さん>>478さん
ありがとうございます!今自分でもプログラムを組んでいたのですが、
教えて頂いたプログラムを参考にして正しく実行できました。
本当に助かりました。
0483デフォルトの名無しさん
2008/01/22(火) 23:45:52x = -110 + sqrt(13100);
0484デフォルトの名無しさん
2008/01/22(火) 23:55:24>>480さんの、顔に、泥を、塗るな!!!!。
0485デフォルトの名無しさん
2008/01/22(火) 23:56:56なんで、そんな、しゃべり方、なの?
0486デフォルトの名無しさん
2008/01/23(水) 00:22:45[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5868.txt
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1/25
[5] その他の制限:なし
よろしくお願いします
0487デフォルトの名無しさん
2008/01/23(水) 00:28:45[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5869.txt
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語:C
[4] 期限:1月25日
[5] その他の制限:
どなたかよろしくお願いします
0488デフォルトの名無しさん
2008/01/23(水) 00:36:44[2] 問題文(含コード&リンク):
コマンドラインから入力された文字列に小文字のアルファベット
が含まれていた場合は全て大文字に変換し、文字列を昇順にソー
トして表示するプログラムを作成して下さい
パラメータ文字列が2つ以上入力されなかった場合には、エラー
メッセージうぃ表示して終了させて下さい
sample One
usage : sample STRING1 STRING2 [STRING3 ... ]
sample matsui ichiro
** String data **
matsui
ichiro
** Changed string **
ICHIRO
MATSUI
sample sample1 sample2 sample3
** String data **
sample3
sample2
sample1
** Changed string **
SAMPLE1
SAMPLE2
SAMPLE3
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++ 2005
[3.3] 言語: C
[4] 期限:1月24日
お願いしますm(_ _)m
0489デフォルトの名無しさん
2008/01/23(水) 00:53:53#include<stdio.h>
#define MAX 5
int main(){
int a[MAX]={1},i,j;
for(i=1;i<=30;i++){
for(j=0;j<MAX;j++)
a[j]*=i;
for(j=0;j<MAX-1;j++)
a[j+1]+=a[j]/10000000,
a[j]%=10000000;
}
for(i=0;i<MAX;i++)
printf("%08d",a[MAX-i-1]);
printf("\n");
return 0;
}
0490デフォルトの名無しさん
2008/01/23(水) 01:10:09>335
【未解決問題】
>>488 1/24
>>404 1/25
>>453 1/25
>>486 1/25
>>395 1/27 23:59
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
0491デフォルトの名無しさん
2008/01/23(水) 01:11:10まとめおつん
0492デフォルトの名無しさん
2008/01/23(水) 01:16:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5871.txt
0493デフォルトの名無しさん
2008/01/23(水) 04:03:32#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
int cmp( const void * l, const void * r ) { return strcmp( *((char **)l), *(( char **)r) ); }
int main( int argc, char **args )
{
int i;
if ( argc < 3 ) {
fprintf( stderr, "usage: sample STRING1 STRING2 [STRING3 ... ]\n" );
exit( 1 ) ;
}
argc --; args ++;
puts( "** String data **" );
for ( i = 0; i < argc; ++i )
puts( args[ i ] );
puts( "** Changed string **" );
qsort( args, argc, sizeof( char * ), cmp );
for ( i = 0; i < argc; ++i ) {
char *p;
for ( p = args[ i ]; *p != '\0'; ++p )
putchar( toupper( *p ) );
puts("");
}
return 0;
}
0494デフォルトの名無しさん
2008/01/23(水) 04:48:22#include <stdio.h>
#define N 10
int get_gcd( int m, int n ) { return ( m < n ) ? get_gcd( n, m ) : ( n == 0 ) ? m : ( m % n == 0 ) ? n : get_gcd( n, m % n ); }
int get_lcm( int m, int n ) { return ( m == 0 || n == 0) ? 0 : m * n / get_gcd( m, n ); }
int main( int argc, char ** args ) {
int nums[ N ] = {0}, i, l, gcd, lcm;
puts( "input numbers. " );
for ( i = 0; i < N; ++i ) {
scanf( "%d", &nums[ i ] );
if ( nums[ i ] < 1 ) { break ; }
}
l = i;
gcd = lcm = nums[ 0 ];
for ( i = 1; i < l; ++i ) {
gcd = get_gcd( gcd, nums[ i ] );
lcm = get_lcm( lcm, nums[ i ] );
}
for ( i = 0; i < l; ++i ) {
printf( "%d ", nums[ i ] );
}
printf( "\nLCM:%d, GCD:%d\n", lcm, gcd );
return 0;
}
10個入れるか,0以下の数を入れるかで入力をやめるようにしてみた
0495デフォルトの名無しさん
2008/01/23(水) 07:36:23http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5872.c
0496デフォルトの名無しさん
2008/01/23(水) 10:23:18[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5873.txt
このプログラムを実行すると1つのxにつき100個の誤差付きのyが出てくるので
それぞれのxにおけるyの平均値(=(狽凵j/100)を求めたい
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語: C
[4] 期限: 2008/1/24
[5] その他の制限:
よろしくお願いします
0497デフォルトの名無しさん
2008/01/23(水) 11:29:13#include <stdlib.h>
void fileread(int,char *);
void filewrite(int,char *);
int main(int argc ,char *argv)
{
if(argc!=3){
printf("次回から引数を入力してください\n");
return 0;
}
fileread(argc,argv);
filewrite(argc,argv);
return 0;
}
void fileread(int argc,char *argv){
FILE *fp;
char *buffer;
fpos_t start_fpos;
int filesize;
if(!strcmp(argv[2],"r")){
fp=fopen(argv[1],"r");
fgetpos(fp,&start_fpos);
0498デフォルトの名無しさん
2008/01/23(水) 11:29:44filesize=ftell(fp);
fsetpos(fp,&start_fpos);
buffer=(char *)malloc(sizeof(char)*filesize);
while(fgets(buffer,filesize,fp))printf("%s",buffer);
free(buffer);
}
}
void filewrite(int argc,char *argv){
FILE *fp;
char *buffer,*stock;
int buffer_size=1000,count=0;
if(!strcmp(argv[2],"w")){
fp=fopen(argv[1],"w");
buffer=(char *)malloc(sizeof(char)*buffer_size);
while(fgets(buffer,buffer_size,stdin)){
count++;
stock=realloc(buffer,sizeof(char)*count);
sscanf(buffer,&stock[count-1]);
}
fputs(stock,fp);
free(buffer);
}
fclose(fp);
}
0499497
2008/01/23(水) 11:33:24コンパイルエラーが出ます。
passing argument 1 of ‘fopen’ makes pointer from integer without a cast
fopenの箇所が整数値を吐き出してるのだとは分かるのですが、
どう修正していいのか理解できません。ご教授ください。
0500390
2008/01/23(水) 11:53:55大変参考になりました、ありがとう御座います。
strcmp()とstrcpy()については授業でそれを教えたから
とにかくそれを使わせて習得させるという方針っぽいです。
構造体structも次回の講義で始めて習うという初歩っぷりですので
基礎的な部分から稚拙さが漂ってくるのかもしれませんが…
structの勉強もできて非常にためになりました、多謝です
0501デフォルトの名無しさん
2008/01/23(水) 12:04:02スレ違い.
main( int argc, char * argv ) ;じゃなくて
main( int argc, char * argv[] ) ;
void fileread(int argc,char *argv) じゃなくて
void fileread(int argc,char *argv[]) にしないと
0502デフォルトの名無しさん
2008/01/23(水) 12:38:41#include <stdio.h>
int main(int argc, char *argv[])
{
int i, j;
double x, y, sum;
char buf[100];
FILE *fp;
if (argc != 2)
return 1;
fp = fopen(argv[1], "r");
if (fp == NULL)
return 1;
for (i = 0, sum = 0.0; i <= 10; i++) {
for (j = 0; j < 100; j++) {
fgets(buf, sizeof(buf), fp);
sscanf(buf, "%lf %lf\n", &x, &y);
sum += y;
}
printf("%lf\t%lf\n", x, sum/100);
}
return 0;
}
0503デフォルトの名無しさん
2008/01/23(水) 12:55:40馬鹿発見。スレ違いと言う点には同意するので、どこら辺が馬鹿なのかは割愛。
0504デフォルトの名無しさん
2008/01/23(水) 13:13:10501じゃないけど解説求む
0505デフォルトの名無しさん
2008/01/23(水) 13:15:490506デフォルトの名無しさん
2008/01/23(水) 13:40:59ありがとうございます。
因みにLCMが最大公約数でGCMが最小公倍数なんですかね?
0507デフォルトの名無しさん
2008/01/23(水) 13:42:12いいえ。
0508デフォルトの名無しさん
2008/01/23(水) 13:42:41lcm と gcd でググれば何の略か分かる
0509デフォルトの名無しさん
2008/01/23(水) 16:17:14fopenの引数が間違ってる、という説明に留めろという理解でよろしい?
確かに、
>main( int argc, char * argv ) ;じゃなくて
>main( int argc, char * argv[] ) ;
というのは先走り感が否めないが。
0511デフォルトの名無しさん
2008/01/23(水) 16:33:200512デフォルトの名無しさん
2008/01/23(水) 17:55:25[2] 問題文:2つあるので下に書いていきます
[3] 環境
[3.1] OS:Windows
[3.2] gcc 3.4
[3.3] 言語:C
[4] 期限: 明後日
1.0から1000までの数を1行に10個ずつカンマ区切りで表示する。
末尾にはカンマを加えない。
実行例
0,1,2,3,4,5,6,7,8,9
10,11〜〜〜〜
〜〜〜〜〜〜998,999
1000
2.文字列を入力して、その文字列の中にアルファベットと数字をそれぞれカウントして結果を表示する。
実行例
入力して:nurupo ga!!!!1111
アルファベットは8文字
数字は4文字
それ以外は4文字
2つも出してしまい、申し訳ないですがかなり切羽詰ってます。
プログラムに関しては先月始めたばかりで初心者中の初心者です、なのでそこまで難しいことは習ってないと思います。
ですが分からないのでお力を貸してください。
0513デフォルトの名無しさん
2008/01/23(水) 18:01:12スペースは普通その他だろ
0514デフォルトの名無しさん
2008/01/23(水) 18:04:17すいません、見落としてました。スペースもそれ以外に追加します。
0515デフォルトの名無しさん
2008/01/23(水) 18:34:24#include<stdio.h>
int main(void){
int i;
for(i=0;i<=1000;i++){
if(i%10==0) printf("%d", i);
else printf(",%d", i);
if((i+1)%10==0) printf("\n");
}
return 0;
}
#include<stdio.h>
#include<ctype.h>
int main(void){
char buf[256];
int i, alphanum=0, digitnum=0, othernum=0;
printf("入力して:");
fgets(buf, sizeof(buf), stdin);
for(i=0;buf[i]!='\0';i++){
if(isalpha(buf[i])) alphanum++;
else if(isdigit(buf[i])) digitnum++;
else othernum++;
}
printf("アルファベットは%d文字\n", alphanum);
printf("数字は%d文字\n", digitnum);
printf("それ以外は%d文字\n", othernum);
return 0;
}
0516デフォルトの名無しさん
2008/01/23(水) 18:41:40>for(i=0;buf[i]!='\n';i++){
の方がいいかもNE!
0517デフォルトの名無しさん
2008/01/23(水) 18:48:57ありがとうございます。
今、外なんで家に帰ってから実行してみようと思います。
0518デフォルトの名無しさん
2008/01/23(水) 19:01:42[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5874.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語: C言語
[4] 期限: 今日中です。。。
[5] その他:長くてめんどくさいかもしれませんが、どうかよろしくお願い致します。
0519デフォルトの名無しさん
2008/01/23(水) 19:22:42[2] 台形公式を用いて∫0^2 √4-x^2 の近似値を求めるプログラミングを作成しなさい
[3] 環境
[3.1] OS: Linux
[3.3] 言語: (C言語
[4] 期限:明日
[5] その他の制限: お願いします
0520デフォルトの名無しさん
2008/01/23(水) 19:32:49#include <iostream.h>
void main(){cout << "どう見ても0です << endl;}
0521デフォルトの名無しさん
2008/01/23(水) 20:47:29#include <stdio.h>
#include <math.h>
#define E 0.00001
double TrapMethod(double (*f)(double), double a, double b, double e)
{
if (fabs(b - a) < e) return 0.5 * (f(a) + f(b)) * fabs(b - a);
else {
double t = 0.5 * fabs(b - a);
return TrapMethod(f, a, a + t, e) + TrapMethod(f, a + t, b, e);
}
}
double func(double x) { return sqrt(4 - x * x); }
int main(void)
{
printf("%.10f\n", TrapMethod(func, 0.0, 2.0, E));
return 0;
}
0522デフォルトの名無しさん
2008/01/23(水) 20:54:30つ265252859812191058636308480000000
0523デフォルトの名無しさん
2008/01/23(水) 23:41:10[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5879.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1/26
[5] その他の制限:特になし
よろしくおねがいします
0524デフォルトの名無しさん
2008/01/23(水) 23:44:04[2] 問題文:ファイル中の文字数,単語数,行数をカウントするプログラムを作成せよ。
単語の切れ目はアルファベット以外の文字、行の終わりは改行文字またはファイルの終端とします。
この課題のソースファイルで動作確認しなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1/25
[5] その他の制限:特になし
お願いします
0525デフォルトの名無しさん
2008/01/23(水) 23:53:51#include <stdio.h>
int main(void)
{
int i, j, n, num[] = {1000, 500, 100, 50, 10, 5, 1};
char roman[] = "MDCLXVI";
while(1) {
printf("Input integer (0 quit) ====>");
scanf("%d", &n);
if(n==0) break;
printf("%d ====> ", n);
for(i=0; n; i++) {
int c = n / num[i];
for(j=0; j<c; j++) putchar(roman[i]);
n %= num[i];
}
putchar('\n');
}
return 0;
}
0526デフォルトの名無しさん
2008/01/24(木) 00:10:52繰り返しでやってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5881.txt
0527デフォルトの名無しさん
2008/01/24(木) 00:12:420528デフォルトの名無しさん
2008/01/24(木) 00:18:31適当 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5882.txt
0529デフォルトの名無しさん
2008/01/24(木) 00:27:37ミスあった >>528 修正 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5883.txt
0530デフォルトの名無しさん
2008/01/24(木) 00:31:13勘違いしてたから修正
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5884.txt
0531デフォルトの名無しさん
2008/01/24(木) 00:45:02[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5885.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:2008/1/25 am 0:00
[5] その他の制限: 特に無し
よろしくお願いします
0532デフォルトの名無しさん
2008/01/24(木) 01:31:43>518
【未解決問題】
>>531 1/25 0:00
>>404 1/25
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
0533デフォルトの名無しさん
2008/01/24(木) 01:38:17なんで、そんなに括弧で囲む必要があるんだい?
0534デフォルトの名無しさん
2008/01/24(木) 01:39:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5887.c
すでに時間切れ 且つ なぜかリスト構造を使ってしまったけど、一応動いたのでうp
0535デフォルトの名無しさん
2008/01/24(木) 01:39:57[2] 問題文
最小全域木問題
で以下のコメント文の
e[i] を、e[t[0]], ..., e[t[k - 1]]に加えても閉路ができない
をどうやって書くのか分かりません。トレースの問題で躓いてしまいます。
プログラムが分かればトレース出来そうなのでよろしくお願いします。
void mst(int i, int k, int weight) {
if (k == n - 1) {
if (weight < best_weight) {
best_weight = weight;
配列 best_tree に t をコピー;
}
}
else if (i <= m) {
if (e[i] を、e[t[0]], ..., e[t[k - 1]]に加えても閉路ができない){
t[k] = i;
mst(i + 1, k + 1, weight + w[i]);
}
mst(i + 1, k, weight);
}
}
[4] 期限:1/24 9am test..!
0536デフォルトの名無しさん
2008/01/24(木) 01:46:51これをどう利用して記述して求めているのかが分かりません。
辺の番号 1 2 3 4 5 6 7 8 9 10 11 12
端点1 4 3 1 2 4 6 1 8 5 6 7 5
端点2 6 7 5 3 5 1 2 4 4 2 8 2
重み 9 16 13 8 7 12 10 5 11 15 4 2
0537デフォルトの名無しさん
2008/01/24(木) 01:56:17データ(変数)を尊重し、できるだけそのデータが使われるときに、宣言し使う。
こうすることで、必要のないデータを他のブロックで誤って書き換えられることを防いでいる。
いわゆる、データ指向プログラミング。
>>529 fclose忘れてるな。別にいいけど。
0538デフォルトの名無しさん
2008/01/24(木) 02:05:12ありがとうございます!!!
0539デフォルトの名無しさん
2008/01/24(木) 02:42:42{NULL};が気になる。普通{0}じゃね?残りは0で埋められるわけだし。
NULLだとアドレスかと思ってしまうな
まぁ実用上はまったく問題ないと思うけど
0540デフォルトの名無しさん
2008/01/24(木) 02:43:52配列eのメンバがわからないことには何とも言えない。
つーか、ソースうp。
0541デフォルトの名無しさん
2008/01/24(木) 02:54:33再うp。
まず、バックトラックによって、グラフGの最小全域木を求める
次のようなアルゴリズムを考えます。ここで、n はGの 頂点数、m は辺の数で、e[i] (i = 1, ..., m) はGのi番目の 辺を表し、w[i] はその重み(正整数)を表すものとします。
また、int 型の配列 t と best_tree は大域変数であるとします。
void mst(int i, int k, int weight) {
if (k == n - 1) {
if (weight < best_weight) {
best_weight = weight;
配列 best_tree に t をコピー;
}
}
else if (i <= m) {
if (e[i] を、e[t[0]], ..., e[t[k - 1]]に加えても閉路ができない){
t[k] = i;
mst(i + 1, k + 1, weight + w[i]);
}
mst(i + 1, k, weight);
}
}
関数mstへの呼び出しと戻りを「イベント」と呼ぶことにします。 n = 8, m = 12 であり、Gの頂点が 1, 2, ..., n であって、 Gの m 本の辺の各端点と重みが次のように与えられるとします。
辺の番号 1 2 3 4 5 6 7 8 9 10 11 12
端点1 6 7 5 4 3 1 6 7 8 4 5 2
端点2 7 5 4 3 1 2 4 3 6 8 3 8
重み 14 11 15 12 4 9 6 16 8 7 10 2
0542デフォルトの名無しさん
2008/01/24(木) 03:36:47そこまでするならサブルーチン化した方がいいような気もするが。読みづらいしな。
0543デフォルトの名無しさん
2008/01/24(木) 04:12:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5888.txt
ヘロンの公式は使ってないけど。眠い。
0544デフォルトの名無しさん
2008/01/24(木) 04:17:09純粋な興味として聞きたいんだが、どうして座標が整数値で与えられているのにヘロンの公式を使うんだろう。
0545デフォルトの名無しさん
2008/01/24(木) 04:36:59ちょ、間違ってる。
0546デフォルトの名無しさん
2008/01/24(木) 08:21:22[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5876.txt
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:study C
[3.3] 言語:C
[4] 期限:今日の15時
[5] その他の制限:入門科目なので簡単なコードでお願いします。
0547デフォルトの名無しさん
2008/01/24(木) 10:54:30[2] 問題文(含コード&リンク):0<N <100,000,000の整数を入力したとき、Nの素因数分解結果を出力するプログラムを作成せよ。
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C++
[4] 期限:1/25 15時
[5] その他の制限:
2から √Nまでの素数について、小さい順にNを割ってみて割り切れたらその素数aはNの素因数である。
割り算の結果N1についてa から √N1 までの素数について小さい順にN1を割り切れたらその素数b も
Nの素数である。以上を割り算の結果Nxが素数になるまで繰り返す。Nx もNの素因数である。
ということを使ってやれと言われました。
簡単なコードでお願いします。
0548デフォルトの名無しさん
2008/01/24(木) 10:56:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5889.txt
入力チェックはしてない。
0549デフォルトの名無しさん
2008/01/24(木) 11:24:200551デフォルトの名無しさん
2008/01/24(木) 12:35:110552デフォルトの名無しさん
2008/01/24(木) 13:04:350553デフォルトの名無しさん
2008/01/24(木) 13:06:2790分×14回 = 21時間 だから、無理もない
たったの二日で何が習得出来るって話だ
0554548
2008/01/24(木) 13:14:10これで単位か・・・羨ましいような羨ましくないような。
>>547
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5891.txt
0555デフォルトの名無しさん
2008/01/24(木) 14:09:37ちょっと解説してもらえませんか?
0556デフォルトの名無しさん
2008/01/24(木) 14:43:55回答した本人じゃないが、
for (i = 0, sum = 0.0; i <= 10; i++) {
for (i = 0, sum = 0.0; i <= 10; i++, sum=0.0) {
にすれば問題ないのでは?
0557デフォルトの名無しさん
2008/01/24(木) 15:30:11ちょっWwおまWw
どこの大学だよ
それで単位認定って
笑った
0558デフォルトの名無しさん
2008/01/24(木) 15:33:440559デフォルトの名無しさん
2008/01/24(木) 15:40:41[1] 授業単元:CG
[2] 問題文(含コード&リンク):対戦型シューティングゲームを作ったんですけど、
もう1つのポットから、玉が出ないんです。どうしたら、出るようになるんでしょうか?
教えてください。あと、当たり判定も作ったんですが、これよりもっといいプログラムは
ありますか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5893.c
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cで書いてあります
[4] 期限: 今日の18時まで
[5] その他の制限:なし
0560デフォルトの名無しさん
2008/01/24(木) 15:42:32よくあるのはベクトルのノルムで判定する方法
0561デフォルトの名無しさん
2008/01/24(木) 15:43:21[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5892.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:BCC
[3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:特にないです。。。
お願いします。
0562デフォルトの名無しさん
2008/01/24(木) 16:51:24ファイルに書き出すときのテキストのフォーマットは?
0563デフォルトの名無しさん
2008/01/24(木) 18:13:49txt形式でお願いします。
0564デフォルトの名無しさん
2008/01/24(木) 18:46:30CSVとかそういうのを聞きたいんだと思うよ。
>>561
CSVにした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5895.zip
0565548
2008/01/24(木) 18:47:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5894.txt
0566548
2008/01/24(木) 18:51:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5896.txt
0567デフォルトの名無しさん
2008/01/24(木) 19:03:53>>565
ありがとうございます!
0568デフォルトの名無しさん
2008/01/24(木) 19:12:25出遅れたけど載せておく
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5897.txt
0569デフォルトの名無しさん
2008/01/24(木) 19:23:16ありがとうございます!本当に助かります。
0570548
2008/01/24(木) 19:40:44ex11_2.c内の24行目
誤)p = &pmemb[count];
正)p = &pmemb[count++];
度々申し訳ない。
0571デフォルトの名無しさん
2008/01/25(金) 00:22:36[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5899.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年1月28日まで
[5] その他の制限:配列まで習いました。
よろしくお願いします。
0572デフォルトの名無しさん
2008/01/25(金) 00:27:56[2] 問題文(含コード&リンク):
ソートに関する問題です。詳細は↓
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5900.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6
[3.3] 言語:C
[4] 期限:1/31まで
[5] その他の制限:なし
よろしくお願いします。
0573デフォルトの名無しさん
2008/01/25(金) 02:08:46入力されうる最大の値はないのかい?
> (* ここに解答を書き加える *)
って、他の場所に全く手を加えてはいけないのか分からないよ。
sqrt()のためにmath.hを入れたが、それ以外他の場所には記述を加えずに書いてみた。
割り切れるかのループを回すところで素数以外でも計算してるのが無駄だが、1000000以下の素数を列挙するのに10秒程度。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5901.txt
0574573
2008/01/25(金) 02:18:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5902.txt
0575デフォルトの名無しさん
2008/01/25(金) 02:35:02>404 >535 >559
【未解決問題】
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>572 1/31
>79 無期限
>144 無期限 問題文>148
0576デフォルトの名無しさん
2008/01/25(金) 04:29:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5903.txt
0577ラッセン沖縄
2008/01/25(金) 05:16:32[2]問題文 次の仕様を満たし、入力例の通りにして実行でき、更に、出力例の通りに出力されるようなCプログラムを作成せよ。(出力の空白や桁数にも留意せよ。)
仕様 三角形の底辺と高さ入力し、その面積を求める。
入力例 Z:\>(kadai)
(カッコ内を 底辺=(3.0)
入力する)高さ=(4.5)
出力例* ----+----|----+----|----+----|----+----|----+----|
底辺=3.000, 高さ=4.500
面積=6.7500
(*目盛りは桁を示すためのもの。プログラムで出力するのではない。)
[3]期限1/25 14時まで
急いでいます!
よろしくお願いします。
0578デフォルトの名無しさん
2008/01/25(金) 07:18:51[2] 問題文:
今年のカレンダーを表示させる
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語: C言語
[4] 期限: 明日まで
[5] 意味のある定数はマクロ define文
途中でreturn exit 外部変数は使わない。
ヨロシクお願いします
0579デフォルトの名無しさん
2008/01/25(金) 11:55:44爆弾の位置座標は既知であり、ボンバーマンの速度は4m/sとする。
[2] 環境
[2.1] OS: Windows
[2.2] コンパイラ名とバージョン: Visual Studio
[2.3] 言語: C++
[3] 期限: 2008年1月28日まで
[4] その他の制限:無し
自分では全く手が出ませんでした…orz
先輩方のお力添えを頂ければ幸いです!
宜しくお願い致します( ´・ω・`)
0580デフォルトの名無しさん
2008/01/25(金) 12:03:46スタート時にルートを決定するのではなく、ブロック毎に曲がれるか判断するみたいです。あとなるべく早くゴールにたどり着かないとダメみたいです(>_<)
0581デフォルトの名無しさん
2008/01/25(金) 12:16:56[2] 問題文(含コード&リンク):短いのでここに書きます。
(1) wavファイルを解析し、音声データを読むためのプログラムを作成せよ。
(2) 音声データを半分に縮め、変換させるプログラムを書け。
(3) 音声データを反転させるプログラムをかけ。
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2008年1月28日午前9時まで
[5] その他の制限: 特にありません。
C初心者なので、どう手をつけたらいいのか全くイメージできません。
皆様方のご協力をお願いいたしますm(_ _)m
なにとぞよろしくお願いいたします。
0582デフォルトの名無しさん
2008/01/25(金) 12:22:47期限が切れてしまってますが、どなたかよろしくお願いします。
0583デフォルトの名無しさん
2008/01/25(金) 13:21:55#include<stdio.h>
int main(void){
int year, month, day, week, tmpm, tmpy, i;
int daymax[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
year = tmpy = 2008;
month = tmpm = 1;
day = 1;
if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) daymax[1] = 29;
if (tmpm < 3) {
tmpy--;
tmpm += 12;
}
week = (tmpy + tmpy/4 - tmpy/100 + tmpy/400 + (13*tmpm+8)/5 + day) % 7;
for(; month <= 12; day++, week++){
if(week == 7) week = 0;
if(day == 1){
printf("\n***** %04d / %2d *****\n", year, month);
for(i=0; i < week; i++) printf(" ");
}
printf(" %2d", day);
if(day == daymax[month-1]){
putchar('\n');
day = 0;
month += 1;
continue;
}
if(week == 6) putchar('\n');
}
return 0;
}
0584デフォルトの名無しさん
2008/01/25(金) 14:56:31その書き込みの50分後、
mixiの宿題スレに全く同じ問題を貼った奴が居る。
開発環境と期限は違うが、もしかしてお前さんか?
0585デフォルトの名無しさん
2008/01/25(金) 15:26:40C++っての見逃して、思いっきりCで書いてしまった
ほかにもっとうまいやり方あったと思うけど、一応できたので参考程度に見てください
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5904.c
0586デフォルトの名無しさん
2008/01/25(金) 15:32:33printf("\ntime = %d\n", (weight_map[BLOCKNUM-1][BLOCKNUM-1]+1) * 5)
を
printf("\ntime = %d\n", (weight_map[BLOCKNUM-1][BLOCKNUM-1]) * 5)
に修正してください
0587デフォルトの名無しさん
2008/01/25(金) 16:06:30[2] 問題文:
(処理の中身ではなく、ファイルの読み込みに関してなのですが)
1. フォルダ内に複数存在する "***.dat"(***は数字ではない)を読み込んでそれぞれについて同じ処理を行なう。
2. 処理の中でそれぞれのファイル名(***)とその処理結果(これは2つの数値です)をまとめて別の1つのファイルに出力する。
3. フォルダ内の全ての "***.dat" について処理し終わったらプログラムを終了する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:1/28 AM10:00
上のようなことがしたいのですが、いい方法が思いつきません…
どなたかよろしくお願いします。
0588デフォルトの名無しさん
2008/01/25(金) 16:22:49好きなように繰り返しをすればいい
ここは丸投げスレなんだからもっと具体的に書け
0589デフォルトの名無しさん
2008/01/25(金) 17:38:07ファイルは"(生徒の名前).dat"となっていて各教科のテストの点が書かれているのでそれを合計し
1つのファイルに全員の分を"生徒の名前:合計点 \n"みたいな感じで出力したいのですが、
おっしゃっている「コマンドラインから〜」というやり方がわからないんです。
すいません
0590デフォルトの名無しさん
2008/01/25(金) 18:29:04#include <iostream>
#include <fstream>
void main(int argc, char *argv[])
{
std::ofstream output( "output.dat" );
for(int i=1; i<argc; i++){
//argv[i]を読み込んで名前と合計点をoutputに書き出す。格納形式が分からんから書けん
}
cout << "オワタ" << endl;
}
実行ファイルをhoge.exeとするとコマンドラインから
hoge.exe *.dat
と入力すればよい
0591587,589
2008/01/25(金) 19:04:28>>588をみて同じようなことをしたのですが、
Output.dat には "* : 0" としか出力されないんです…
コマンドラインでワイルドカード使うために何か特別な作業が必要だったりしますか?
0592デフォルトの名無しさん
2008/01/25(金) 19:12:380593デフォルトの名無しさん
2008/01/25(金) 19:25:42"(教科名):(半角スペース)(数値)"というのが7行ならんでいます。
すいません。
0594デフォルトの名無しさん
2008/01/25(金) 19:38:38#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++)
printf("%s\n", argv[i]);
return 0;
}
これでも
a.exe *.dat
*.dat
とかになる?
0595デフォルトの名無しさん
2008/01/25(金) 20:45:430596デフォルトの名無しさん
2008/01/25(金) 20:52:300597デフォルトの名無しさん
2008/01/25(金) 20:54:230598デフォルトの名無しさん
2008/01/25(金) 20:59:39そうだったか、それならワイルドカードで指定する際に
カレントディレクトリに該当ファイル置いてないとかかね。
0599デフォルトの名無しさん
2008/01/25(金) 21:54:47�Aパズルの世界では、1 から 9 までの数字を 1 個ずつすべて使った数字(たとえば、123456789 とか 321654987)を 小町数 と呼ぶ。1 から 9 までの数字を順番に並べ、 数字の間に演算記号をつけて計算結果が 100 になるような計算式を求めることを 小町算 という。
加算と減算のみからなる小町算の解は、下記のようになる。
12-3-4+5-6+7+89 = 100
123-4-5-6-7+8-9 = 100
123-45-67+89 = 100
123+4-5+67-89 = 100
123+45-67+8-9 = 100
12+3-4+5+67+8+9 = 100
12+3+4+5-6-7+89 = 100
1+23-4+56+7+8+9 = 100
1+23-4+5+6+78-9 = 100
1+2+3-4+5+6+78+9 = 100
1+2+34-5+67-8+9 = 100
9から1までの数を降順に並べ、加算と減算のみで計算式を構成し、計算結果が 0 になるものを全て求めよ。
9 □ 8 □ 7 □ 6 □ 5 □ 4 □ 3 □ 2 □ 1 = 0
上の問題を解くプログラムを作成しなさい。
3、
3,1 windows
2 gcc
3 C
4、明日の午後8時まで
5、特にないです。
よろしくお願いします^
0600デフォルトの名無しさん
2008/01/25(金) 22:20:15遅れてすいませんやっと発言ができました(プロバがアク禁食らってました)
本当に感謝ですー
ありがとうございました!
0601デフォルトの名無しさん
2008/01/25(金) 22:47:19ソフ開試験の午後1問5に同じ問題がある
ttp://www.jitec.jp/1_04hanni_sukiru/mondai_kaitou_2007h19_1/2007h19h_sw_pm1_qs.pdf
ttp://www.jitec.jp/1_04hanni_sukiru/mondai_kaitou_2007h19_1/2007h19h_sw_pm1_ans.pdf
0602デフォルトの名無しさん
2008/01/25(金) 22:54:45int main(void)
{
puts("98+7-65-43+2+1");
puts("98-76+5+4-32+1");
puts("98-7-6-54-32+1");
puts("9+8+7+6+5-4-32+1");
puts("9+8+7+6-54+3+21");
puts("9+8-76-5+43+21");
puts("9-87+6+54-3+21");
return 0;
}
0603デフォルトの名無しさん
2008/01/25(金) 23:11:16[2] 問題:関数 f は f=√x * √(1 - 2.5 * 10^-5 * x^2)で表される。
xの初期値4.0から0.5刻みで20.0まで変化させたときの
xとfの値をExcelに出力せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: C
[4] 期限: 2008年1月27日
[1] 授業単元: C言語
[5] その他の制限:出力はcsvファイル可。
0604591
2008/01/25(金) 23:30:58そのプログラムでやってみても *.dat となりますね・・・
>>598のせいだ!と思ったので、.exeのあるディレクトリに .datを全部移してみたのですが、
それでも結果は変わらなかったです。
これはもう手書きで1個1個ファイル指定していくしかないんでしょうか・・・
0605デフォルトの名無しさん
2008/01/25(金) 23:32:43一度exeのあるパスまでcdコマンドで移動してから実行しないとダメだぞ。
0606591
2008/01/25(金) 23:42:57すいません
0607デフォルトの名無しさん
2008/01/25(金) 23:44:26#include<stdio.h>
int calc(char *str){
int ret=0, value, idx;
while(sscanf(str, "%d%n", &value, &idx)>0){
ret+=value;
str+=idx;
}
return ret;
}
char *top(char *str){
while(*--str);
return str+1;
}
void check(char *work, int depth){
if(depth<=0){
*work='\0';
if(calc(top(work))==0) puts(top(work));
return;
}
*work++='0'+depth;
if(depth>1){
*work='+';check(work+1, depth-1);
*work='-';check(work+1, depth-1);
}
check(work, depth-1);
}
int main(void){
char str[20]="";
check(str+1, 9);
return 0;
}
0608デフォルトの名無しさん
2008/01/25(金) 23:54:23mixiはやっていないので、私ではないです。
0609デフォルトの名無しさん
2008/01/25(金) 23:58:54Windows のコマンドプロンプトはワイルドカードを展開しないようだ
解決案
1.コマンドプロンプトで動作するシェル(bash とか)を一段かませる
2.実行ファイルのスタートアップルーチンでワイルドカードを展開するコンパイラ(ライブラリ)を使う
3.dir /b の結果を実行ファイルに渡す
4.自力でファイル検索ルーチンを作る
5.手作業でやる
0610591
2008/01/26(土) 00:13:33そうですか。 わかりました。
1,2,4は今の自分には荷が重そうなので
とりあえず "dir /b > temp.dat" で temp.dat を読ませる感じにしようかと思います。
ありがとうございます。
他の方もありがとうございました。
0611デフォルトの名無しさん
2008/01/26(土) 00:46:38>577
【未解決問題】
>>603 1/27
>>581 1/28 9:00
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
>404 期限切れだがやって欲しい
0613デフォルトの名無しさん
2008/01/26(土) 01:18:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5905.txt
0614デフォルトの名無しさん
2008/01/26(土) 02:15:02[2] 問題文 3問あります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5908.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual C++ 2005
[3.3] 言語: C
[4] 期限: 1月28日 午前8時まで
[5] その他の制限:特にないですが
考察も書かないといけないので何をやっているか軽い注訳をつけてくれるとありがたいです(これはなくても構いません)
0615デフォルトの名無しさん
2008/01/26(土) 02:22:27課題1と課題2は現行スレで見た気がするぞ。
0616デフォルトの名無しさん
2008/01/26(土) 02:37:23本当ですか?
ちょっと探してみます
レス番のあてつけとか出来ませんか
0617デフォルトの名無しさん
2008/01/26(土) 03:07:10つくりかけで忘れていた。もう見れたもんじゃない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5909.zip
0619デフォルトの名無しさん
2008/01/26(土) 03:20:41本当にありがとうございます(´;ω;`)
0620デフォルトの名無しさん
2008/01/26(土) 08:00:09問題下[1]プログラミング�U
[2]
(1)
次の学生の成績表を元に,出力結果のように合計点と平均点を出力するプログラムを作成せよ。ただし,for文を使うこと。
(成績表)
学籍番号 5001 5002 5003
数学 62 45 76
英語 75 65 93
国語 54 82 63
(出力結果)
数学の合計点=177点,数学の平均点=59.0点
英語の合計点=233点,英語の平均点=77.7点
国語の合計点=199点,国語の平均点=66.3点
(2)
(1)で作成したプログラムを元に,学生別の合計点を出力するプログラムを作成せよ
(出力結果)
学籍番号5001の合計点は,191点です。
学籍番号5002の合計点は,192点です。
学籍番号5003の合計点は,226点です。
0621デフォルトの名無しさん
2008/01/26(土) 08:02:59(1)で作成したプログラムを元に,科目別の最高得点を表示するプログラムを作成せよ。
(出力結果)
数学の最高得点は70点です。
英語の最高得点は93点です。
国語の最高得点は82点です
(4)
(1)で作成したプログラムを元に,70点以上を得点した学生の人数を科目別に表示するプログラムを作成せよ。
(出力結果)
数学:1人
英語:2人
国語:1人
(5)
(1)で作製したプログラムを元に、出力結果をユーザ関数を使って表示するプログラムを作成せよ。
(ユーザ関数の概要)
main()関数から成績データを渡し、そのデータを(1)の(出力結果)どおりに表示する。
また、ユーザ関数はhyouji()とする。
(6)
(1)で作製したプログラムを元に、次の構造体をつかって(出力結果)を表示するプログラムを作成せよ。
(構造体)
typedef struct{
int no;
int suugaku;
int eigo;
int kokugo;
}seiseki;
0622デフォルトの名無しさん
2008/01/26(土) 08:05:18[3.1]XP
[3.2]visual studio 2005
[3.3]C++
[4]今日中
[5]なし
sageソコね、長文申し訳ないです、期間も短いので、困難かもしれませんが出来る限りでいいのでお願いできませんか?
0623デフォルトの名無しさん
2008/01/26(土) 08:06:330624デフォルトの名無しさん
2008/01/26(土) 09:07:17#include <stdio.h>
#include <math.h>
main(int argc,char *argv[])
{
int point,i=0;
double x,y,old_x,old_y,distance=0.0;
char line[1000];
FILE *fp;
if(argc!=2){
printf("Usage: %s <filename>\n",argv[0]);
exit(1);
}
if((fp=fopen(argv[1],"r"))==NULL){
printf("file can't open.\n");
exit(1);
}
while(fgets(line,999,fp)!=NULL){
if(sscanf(line,"%lf %lf",&x,&y)==1){
point=x;//データが1つしかない=点の数なのでpointに代入
continue;
}
if(i==0){ old_x=x; old_y=y; }//初回は以前の点がないので同じにする
distance+=sqrt(((x-old_x)*(x-old_x))+((y-old_y)*(y-old_y)));//2点間の距離の公式
old_x=x; old_y=y;//前回座標の保存
i++;
}
printf("point = %d distance = %lf\n",point,distance);
}
前回の点から今回の点まで移動した距離の合算でいいんだよね?
0625デフォルトの名無しさん
2008/01/26(土) 12:05:11[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5910.zip
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5911.zip
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1/26
[5] その他の制限:なし
分かりません、よろしくお願いします。
0626デフォルトの名無しさん
2008/01/26(土) 12:40:18落として解凍するのダルいし
0627デフォルトの名無しさん
2008/01/26(土) 12:55:02ウィルス恐いよ〜・゚・(つД`)・゚・。
0628デフォルトの名無しさん
2008/01/26(土) 13:17:540629625
2008/01/26(土) 13:37:03もしかしたらこんな課題やらせるようなスレじゃなかったりして(汗)
ZIPは安心して、ウィルスなんかないから(´∀`)
0630デフォルトの名無しさん
2008/01/26(土) 13:38:13力学なら余裕なんだがすまんね
0631デフォルトの名無しさん
2008/01/26(土) 13:40:10そうです、ありがとうございました
0632デフォルトの名無しさん
2008/01/26(土) 13:55:330633デフォルトの名無しさん
2008/01/26(土) 13:57:470634デフォルトの名無しさん
2008/01/26(土) 14:31:590635デフォルトの名無しさん
2008/01/26(土) 14:47:170636デフォルトの名無しさん
2008/01/26(土) 14:49:250637デフォルトの名無しさん
2008/01/26(土) 15:31:15[2] 問題文(含コード&リンク):
格子点上に置かれた任意の4点を結ぶ最小の直線スタイナーツリーを見つけるプログラムを作成せよ。
候補が複数ある場合は、それらを全て表示させるようにさせよ。
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:2/7
[5] その他の制限:
直線スタイナー木とは、碁盤上の縦横の線の交点に点を置き、
置いた全ての点を、碁盤の直線に沿って作る線分によって結ぶネットワークの事です。
例 http://www.dotup.org/uploda/www.dotup.org2826.jpg.html
閉路(ある点を出て、またその点に帰ってくる道がある状態)を作ってはいけません。
その直線スタイナー木の中で、最も距離の短いものを探せというものです。
もちろん、答えは複数候補ある場合が圧倒的に多いです。
とりあえず、自分で4点の座標を適当に置いてやれ、という事です。
どんなに泥臭い方法でも構わないので、ご協力お願いします。
0639デフォルトの名無しさん
2008/01/26(土) 16:06:02[2] 問題文(含コード&リンク):
<問題1>
1からnまで加算して、その和が1000を超えるのはnがいくつのときか。
また、そのときの合計はいくつになるか。
<問題2>
1から30までの整数の中から奇数だけを取り出して配列に格納し、
その合計を求めるプログラムを作れ。
<問題3>
10個のデータをキーボードから入力し、合計を求めるプログラム
を作れ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:LCC-Win32
[3.3] 言語:C
[4] 期限:2/5
[5] その他の制限:なし
お願いします。
0640デフォルトの名無しさん
2008/01/26(土) 16:26:34裏切るんだな
0641デフォルトの名無しさん
2008/01/26(土) 16:41:54問題1
#include <stdio.h>
int main(void)
{
int i, sum;
for(i=sum=0;sum<=1000;sum+=++i);
printf("%d, %d\n", i, sum);
return 0;
}
0642デフォルトの名無しさん
2008/01/26(土) 16:43:180643デフォルトの名無しさん
2008/01/26(土) 16:56:392
#include <stdio.h>
int main(void) {
int odd[30/2+30%2] = {0}, n, i;
for(i=n=0;n<=30;++n) {
if(1 == n%2) {
odd[i++] = n;
}
}
for(i=n=0;i<sizeof(odd)/sizeof(int); ++i) {
n+=odd[i];
}
printf("%d¥n", n);
return 0;
}
0644デフォルトの名無しさん
2008/01/26(土) 16:58:500645デフォルトの名無しさん
2008/01/26(土) 17:08:390646デフォルトの名無しさん
2008/01/26(土) 19:07:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5913.txt
組んだ後にC++だと気づいたorz
なんでCだけど・・・一応うpしておきます。
0647デフォルトの名無しさん
2008/01/26(土) 19:58:08<問題3>
整数限定で。
#include <stdio.h>
#include <limits.h>
int main(void) {
int sum=0, i;
char sz[LINE_MAX];
const char * psz;
for(i=1; i<=10;) {
while(1) {
printf("input %d:", i);
if(fgets(sz, sizeof(sz), stdin)) {
int nTmp = strtol(sz, &psz, 10);
if('¥n' == *psz && sz != psz) {
sum += atol(sz);
++i;
break;
}
}
printf("error¥n");
}
}
printf("sum = %d¥n", sum);
return 0;
}
0648デフォルトの名無しさん
2008/01/26(土) 19:59:40- sum += atol(sz);
+ sum += nTmp;
0649デフォルトの名無しさん
2008/01/26(土) 23:26:00出力フォーマットが分からないと何とも。
あと入力されうる点の上下限値は示されてないのか。
4点からの最短共有点を列挙するプログラムを書いたので好きに変えてくれ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5914.txt
入力フォーマットは雰囲気で把握してくれ。
0650デフォルトの名無しさん
2008/01/27(日) 00:11:26[2] 直線補間法を用いて、[256x256]画素の画像を、[512x512]画素の画像になるよう
拡大するプログラムの作成
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 明後日までです
制限はないです!
お願いします。
0651デフォルトの名無しさん
2008/01/27(日) 00:12:38[2] 直線補間法を用いて、[256x256]画素の画像を、[512x512]画素の画像になるよう
拡大するプログラムの作成
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 明後日までです
制限はないです!
お願いします。
0652デフォルトの名無しさん
2008/01/27(日) 00:32:44>625
【未解決問題】
>>603 1/27
>>614 1/28 8:00 残:課題2
>>581 1/28 9:00
>>650 1/29
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
0653デフォルトの名無しさん
2008/01/27(日) 01:28:32#include <stdio.h>
#include <math.h>
double f(double x)
{
return sqrt(x)*sqrt(1.0-2.5e-5*x*x);
}
main()
{
double x;
FILE *fp;
if((fp=fopen("dat.csv","w"))==NULL){
printf("file can't open\n");
exit(1);
}
fprintf(fp,"x,f\n");
for(x=4.0;x<=20.0;x=x+0.5){
fprintf(fp,"%lf,%lf\n",x,f(x));
}
fclose(fp);
}
0654デフォルトの名無しさん
2008/01/27(日) 15:11:07スイマセン、ポインタも使わないという条件を書くのを
忘れていました。
もう一度お願いしてもいいでしょうか?
0655デフォルトの名無しさん
2008/01/27(日) 15:15:38条件後付けして再度やってくれって・・・。
つか、”ちゃんとソース見た"のか?
0656デフォルトの名無しさん
2008/01/27(日) 15:16:43#include<stdio.h>
int main(void){
int year, month, day, week, tmpm, tmpy, i;
int daymax[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
year = tmpy = 2008;
month = tmpm = 1;
day = 1;
if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) daymax[1] = 29;
if (tmpm < 3) {
tmpy--;
tmpm += 12;
}
week = (tmpy + tmpy/4 - tmpy/100 + tmpy/400 + (13*tmpm+8)/5 + day) % 7;
for(; month <= 12; day++, week++){
if(week == 7) week = 0;
if(day == 1){
printf("\n***** %04d / %2d *****\n", year, month);
for(i=0; i < week; i++) printf(" ");
}
printf(" %2d", day);
if(day == daymax[month-1]){
putchar('\n');
day = 0;
month += 1;
continue;
}
if(week == 6) putchar('\n');
}
return 0;
}
0657デフォルトの名無しさん
2008/01/27(日) 15:27:440658デフォルトの名無しさん
2008/01/27(日) 17:23:15(1)の問題のみ
http://www.aki7.com/cgi/up/file/whakei.zip
0659デフォルトの名無しさん
2008/01/27(日) 17:56:42課題 13.3 キーボードから 5 個の英単語を入力し、辞書順に並べ替えて表示するプログラムを作成せ
但し、
? main関数内で単語を入力し、並び替える作業を関数 Sort 内で行なう
? 関数 Sortは戻り値がなく、入力した配列 wordを引数に持つ
? 結果の表示は main関数内で行なう
? 完全に辞書順にするのは難しいため、1 文字目のみを見て並び変えれば良いものとする
? 入力する単語は apple、peach、banana、grape、melonとせよ
自分で製作したのですが、無理でした。
基本これに、似た形を作ってもらって。
間違えも指摘してください。
#include<stdio.h>
#define N 5
void Sort(char input[][]);
main() {
int i;
char array[N[6];
0660デフォルトの名無しさん
2008/01/27(日) 17:58:01for(i=0; i<N; i++) {
printf("array[%d] = ", i);
scanf("%s", (array+i));
}
Sort(array);
printf("Sort result.\n");
for(i=0; i<N; i++) {
printf("array[%d] = %s\n", i, array[i]);
}
}
void Sort(char input[][]) {
int i, j;
char temp;
for(i=1; i<N; i++) {
for(j=N-1; j>=i; j--) {
if(input[j-1][0] > input[j][0]) {
temp = input[j-1];
input[j-1] = input[j];
input[j] = temp;
}
}
}
}
0661デフォルトの名無しさん
2008/01/27(日) 18:32:350662デフォルトの名無しさん
2008/01/27(日) 18:55:05printf()って、引き数にポインタをとるんですよね?
ポインタを使わないでくださいって書いているんですけど読めないんですか?
0663デフォルトの名無しさん
2008/01/27(日) 18:55:54>間違えも指摘してください。
「間違え」ではなくて、「間違い」ですね。
0664デフォルトの名無しさん
2008/01/27(日) 19:08:53逆置換するプログラムを教えてください。
ある係数を渡すことで毎回同じ並びになるようにして
暗号のように使えるようにしないといけないみたいです。
例えば「1」という係数を渡すと
[3 2 4 1]を[2 4 1 3]にシャッフルして
それをもう一度[3 2 4 1]に戻したいです
0665デフォルトの名無しさん
2008/01/27(日) 19:25:04> 一次配列の中身をランダムに置換して更に、それを逆置換する
・一次配列って一次元配列ってこと?
・ランダムに置換の,「ランダムに」ってどの程度のことを言っているの?
0666664
2008/01/27(日) 19:36:22すみません「元」が抜けてましたね。
ランダムがどの程度か…そこまで指定されてないんですが
簡単な規則性が無ければ良いと思います。
0667デフォルトの名無しさん
2008/01/27(日) 19:38:22#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARRAY_SIZE 32
void shift(int *p, int v) {
int *buf = (int*)malloc(sizeof(int)*v+1);
memcpy(buf, p, sizeof(int)*v);
memmove(p, p+v, sizeof(int)*ARRAY_SIZE);
memcpy(p+(ARRAY_SIZE-v), buf, sizeof(int)*v);
}
void print(int *p) {
int i = 0;
printf("array[%d] = {", ARRAY_SIZE);
do {
printf("%d", p[i]);
} while (++i < ARRAY_SIZE && putchar(','));
printf("}\n");
}
int main () {
int i, in, array[ARRAY_SIZE];
for (i = 0; i < ARRAY_SIZE; ++i) array[i] = i;
print(array);
scanf("%d", &in);
shift(array, in%=ARRAY_SIZE);
print(array);
shift(array, ARRAY_SIZE-in);
print(array);
return 0;
}
0668デフォルトの名無しさん
2008/01/27(日) 19:39:11> [3 2 4 1]を[2 4 1 3]にシャッフルして
これがモロ規則性あるからその通りに作った。
0669デフォルトの名無しさん
2008/01/27(日) 19:54:07Sort関数内に
printf("%d,%d\n",i,j);
を追加して、ちゃんとソートが行われているかどうか確認するといい
0670デフォルトの名無しさん
2008/01/27(日) 20:03:38#include<stdio.h>
#include<stdlib.h>
typedef struct tag_dataset{int index, data;}dataset_t;
void swap_int(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
void swap_dataset(dataset_t *a, dataset_t *b){dataset_t c;c=*a;*a=*b;*b=c;}
void encode(int data[], int datanum, int seed){
int i;
srand(seed);
for(i=0;i<datanum;i++) swap_int(&data[i], &data[rand()%(i+1)]);
}
void decode(int data[], int datanum, int seed){
int i; dataset_t *tmp;
srand(seed);
tmp=malloc(sizeof(*tmp)*datanum);
for(i=0;i<datanum;i++) tmp[i].index=i;
for(i=0;i<datanum;i++) swap_dataset(&tmp[i], &tmp[rand()%(i+1)]);
for(i=0;i<datanum;i++) tmp[i].data=data[i];
for(i=0;i<datanum;i++) data[tmp[i].index]=tmp[i].data;
free(tmp);
}
void prt(int data[], int datanum){
int i;
for(i=0;i<datanum;i++) printf(" %d", data[i]);
printf("\n");
}
int main(void){
int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10}, datanum=sizeof(data)/sizeof(data[0]);
encode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */
decode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */
return 0;
}
0671581
2008/01/27(日) 20:12:35解析サンプルまで付けてくださってありがとうございます(T_T)
本当に困っていたので助かりました!!
これを元に(2)と(3)にも挑戦します・・・
でも期限には絶対間に合う予感がしない・・・orz
0672670
2008/01/27(日) 20:13:10>>670 を書き直した
#include<stdio.h>
#include<stdlib.h>
void swap(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
void encode(int data[], int datanum, int seed){
int i;
srand(seed);
for(i=0;i<datanum;i++) swap(&data[i], &data[rand()%(i+1)]);
}
void decode(int data[], int datanum, int seed){
int i, *tmp;
srand(seed);
tmp=malloc(sizeof(int)*datanum);
for(i=0;i<datanum;i++) tmp[i]=rand()%(i+1);
for(i=datanum-1;i>=0;i--) swap(&data[i], &data[tmp[i]]);
free(tmp);
}
void prt(int data[], int datanum){
int i;
for(i=0;i<datanum;i++) printf(" %d", data[i]);
printf("\n");
}
int main(void){
int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10};
int datanum=sizeof(data)/sizeof(data[0]);
encode(data, datanum, 0); /* 0 の部分が乱数seed */
prt(data, datanum);
decode(data, datanum, 0); /* 0 の部分が乱数seed */
prt(data, datanum);
return 0;
}
0673デフォルトの名無しさん
2008/01/27(日) 20:13:23[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5918.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:1/31まで
[5] その他の制限;特になし
どうかよろしくお願い致します。
0674659
2008/01/27(日) 20:14:55もう本当に無理っぽい。
誰か、答えを教えてください。
0675デフォルトの名無しさん
2008/01/27(日) 20:38:560676デフォルトの名無しさん
2008/01/27(日) 20:53:40[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5919.txt
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C言語
[4] 期限:1月28日中
[5] その他の制限:特にありません。
よろしくお願いします!
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5920.txt
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:VC 6
[3.3] 言語:C
[4] 期限:2008年01月28日午前まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。
0678デフォルトの名無しさん
2008/01/27(日) 21:08:28ここは宿題スレだ。
組んで欲しいならテンプレ使って正式に頼め。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5921.txt
ギャーギャー騒がれると目障りだし、これ持って去りな。
0679デフォルトの名無しさん
2008/01/27(日) 21:36:04なんというツンデレw
0680デフォルトの名無しさん
2008/01/27(日) 21:55:48showpidがおかしくないか?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid;
int i, status, flg = 0;
for (i = 0; i < 10; ++i) {
if ((pid = fork()) < 0) {
fprintf(stderr, "error\n");
exit(1);
}
if (pid == 0) {
execv("showpid", NULL);
exit(1);
} else {
if (flg == 0) {
flg = 1;
printf("I am a parent with pid = %d.My child is %d.\n",getpid(),pid);
}
waitpid(pid, &status, 0);
}
}
return 0;
}
0681デフォルトの名無しさん
2008/01/27(日) 21:57:02#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
printf("I am a child with pid = %d,My parent pid is %d.\n",getpid(),getppid());
exit(EXIT_SUCCESS);
}
0683デフォルトの名無しさん
2008/01/27(日) 22:08:13やるじゃん
0684637
2008/01/27(日) 22:08:40ありがとうございます!
あとはなんとかしてみようと思います。
0685デフォルトの名無しさん
2008/01/27(日) 22:16:07誰か助けてください
0686デフォルトの名無しさん
2008/01/27(日) 22:16:43>>677
0687デフォルトの名無しさん
2008/01/27(日) 22:50:20むつかしくてわかりません、もっと簡単なのお願いします
ポーカーとかでいいです
0688デフォルトの名無しさん
2008/01/27(日) 22:52:28頭は大丈夫か?
0689デフォルトの名無しさん
2008/01/27(日) 22:57:010690デフォルトの名無しさん
2008/01/27(日) 23:00:12まあ何も考えずに>>677の問題文にあるソースをコピってコンパイルして動かしてみろ
そして中身を理解しろ
ポーカーはそれからだ
0691デフォルトの名無しさん
2008/01/27(日) 23:05:290692デフォルトの名無しさん
2008/01/27(日) 23:06:59当方で確認した環境は Vine Linux 4.2 (kernel 2.6.16.36), 処理系は gcc 3.3.6 です。
showpid; http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5922.txt
tentimes: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5923.txt
関係ないが、
http://espio.air-nifty.com/espio/
によると、鳥インフルエンザがインドではやっているらしい。1400 人超えたとか超えないとか。
それにしても日本ではなぜ報道されないのか?
0693デフォルトの名無しさん
2008/01/27(日) 23:07:040694デフォルトの名無しさん
2008/01/27(日) 23:14:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5924.txt
0696デフォルトの名無しさん
2008/01/28(月) 00:00:31なし
【未解決問題】
>>614 1/28 8:00 残:課題2
>>581 1/28 9:00 残:課題2、3
>>677 1/28 午前まで
>>650 1/29
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
0697デフォルトの名無しさん
2008/01/28(月) 01:05:260698デフォルトの名無しさん
2008/01/28(月) 02:54:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5925.txt
0699デフォルトの名無しさん
2008/01/28(月) 03:04:20[2] 問題文(含コード&リンク):
/*ガウスの消去法プログラム*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#define A(x,y) a[(x)*(L+1)+y]
void output(double *a, int, int);
int gauss(double*a,double*x,int L,int n,double eps,int isw)
main(){
double amax,awap;
int i,j,k,l,m,ii,irow;
if(isw==1) output(a, L, n){
for(m=0;m<n-1;m++){
amax=fabs(A(m,m));
irow=m;
for(i=m+1;i<n;i++){
if(amax<fabs(A(i,m))){
amax=fabs(A(i,m));
irow=i;}
if(amax<=eps){
return(0);}
if(m!=irow){
for(l=m;l<n+1;l++){
続く
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cresent
[3.3] 言語: C++
[4] 期限: 1月28日11:00まで
0700デフォルトの名無しさん
2008/01/28(月) 03:18:16見難い。
出直して来い。
0701673
2008/01/28(月) 07:23:480702デフォルトの名無しさん
2008/01/28(月) 10:56:13[2] 問題文(含コード&リンク):
配列に整数を100個蓄える。
(1)蓄える整数は関数randによって与えられるものとし、
この配列をバブルソートによってソートした結果を出力するプログラムを作成せよ。
(2)また、上の問題を選択ソートを使用したプログラムに変更せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月29日
よろしくお願いします
0703デフォルトの名無しさん
2008/01/28(月) 11:26:39#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
#define SWAP(type, x, y) do{type tmp = x; x = y; y = tmp;}while(0)
// バブルソート
void bsort(int *a, int n){
int i, j;
for(i = 0; i < n - 1; i++)
for(j = i + 1; j < n; j++)
if(a[i] > a[j])
SWAP(int, a[i], a[j]);
}
// 選択ソート
void ssort(int *a, int n){
int i, j, min;
for(i = 0; i < n - 1; i++){
min = i;
for(j = i + 1; j < n; j++) if(a[min] > a[j]) min = j;
SWAP(int, a[i], a[min]);
}
}
int main(void){
int i, a[N];
srand((unsigned)time(NULL));
for(i = 0; i < N; i++) a[i] = rand()%100;
for(i = 0; i < N; i++) printf("%4d", a[i]);
printf("\n");
bsort(a, N); // ssort(a, N);
for(i = 0; i < N; i++) printf("%4d", a[i]);
}
0704デフォルトの名無しさん
2008/01/28(月) 11:42:15#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//バブルソート
int main(void){
int i,j,num[100],temp;
srand(time(NULL));
for(i=0;i<100;i++)num[i]=rand();
for(i=99;i>0;i--){
for(j=0;j<i;j++)
if(num[j]>num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;}}}
for(i=0;i<100;i++)printf("%d\n",num[i]);
return 0;
}
//選択ソート
int main(void){
int i,j,num[100],min,temp;
srand(time(NULL));
for(i=0;i<100;i++)num[i]=rand();
for(i=99;i>0;i--){
min=i;
for(j=0;j<i;j++)if(num[min]>num[j])min=j;
temp=num[min];
num[min]=num[i];
num[i]=temp;}
for(i=0;i<100;i++)printf("%d\n",num[i]);
return 0;
}
[2] 問題文(含コード&リンク):
構造体を用いて加減算を行う。
以下の空白(oooo)を埋めよ。
#include <stdio.h>
struct { /* 構造体の宣言 */
struct{
int a;
int b;
}keisan;
int main( void )
{
int wa, sa; /* 変数の宣言 */
scanf( "%d, %d", &keisan.a, &keisan.b ); /* 入力 */
wa= oooo ; /* 加算 */
sa= oooo ; /* 減算 */
printf( "和は%d 差は%d\n", wa, sa ); /* 出力 */
return 0;
[3] 環境
[3.1] OS: WindowsXP
[3.2] VC 5.5
[3.3] 言語: (C)
[4] 期限: 無期限
[5] その他の制限: 特になし
途中まで自分で埋めたのですが、oooo部分が違うと指摘されました。
よろしくお願いします。
0706デフォルトの名無しさん
2008/01/28(月) 13:20:35wa = keisan.a + keisan.b
sa = keisan.a - keisan.b
0707デフォルトの名無しさん
2008/01/28(月) 13:27:12scanfの中も違う
scanf( "%d %d", &keisan.a, &keisan.b); /* 入力 */
0708デフォルトの名無しさん
2008/01/28(月) 13:39:040709デフォルトの名無しさん
2008/01/28(月) 13:44:44ありがとうございます。問題部分はこれで解決しました。
甘えてもう1題
[2] 問題文(含コード&リンク):
2つの正の整数値a,bの最大公約数を出力するプログラムをユークリッドの互除法というアルゴリズムを用いて作成したい。
以下のプログラムの****部分に適切な処理をいれて,プログラムを完成させなさい。
#include <stdio.h>
int main( void )
{
int a, b; /* 変数の宣言 */
int m, n;
scanf( "%d,%d", &a, &b );/* 2つの正の整数値を入力する */
m= a ;
n= b ;
while(m **** n){ /* ユークリッドの互除法を適用 */
if( m > n )
m = ***** ;
else
n = **** ;
[3] 環境
[3.1] OS:WindowsXP
[3.2] VC 5.5
[3.3] 言語: C言語
[4] 期限:無期限
[5] その他の制限: 特になし
同じく後半部分が解りませんでした。
よろしくお願いします。
0711デフォルトの名無しさん
2008/01/28(月) 14:12:14while(m != n){
if(m > n)
m = m - n;
else
n = n - m;
}
0712デフォルトの名無しさん
2008/01/28(月) 14:13:21int main(void)
{
int a,b,m,n;
scanf("%d %d",&a,&b);
m=a;
n=b;
while(m*n)
{
if(m>n)
m%=n;
else
n%=m;
}
printf("%dと%dの最大公約数は%dです",a,b,m+n);
return 0;
}
0713デフォルトの名無しさん
2008/01/28(月) 14:17:370714デフォルトの名無しさん
2008/01/28(月) 15:16:020716デフォルトの名無しさん
2008/01/28(月) 15:30:22[2]問題文
キーボードから月(1~12)を入力して、その月の日数を表示するプログラムを
完成させなさい
[3]環境
[3.1] OS:WindowsXP
[3.2] VC 5.5
[3.3] 言語: C言語
[4]期限:1月29日
[5]その他の制限特になし
初心者ですがよろしくおねがいします
0717デフォルトの名無しさん
2008/01/28(月) 15:35:48#include <stdio.h>
int main(void)
{
int month, Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
scanf("%d", &month);
printf("%d", Days[month - 1]);
return 0;
}
0718デフォルトの名無しさん
2008/01/28(月) 17:27:31[2]問題文
sample.txt
0 1 2,
2 4 5,
3 4 2,
1 2 5,
2 2 2,
3 1 4,
1 1 2,
2 1 3,
3 5 4,
4 2 2,
上の外部テキストファイル(sample.txt)に書かれている座標データを読み込み、
1行ずつ順にx,y,zの配列に格納し、ちゃんと格納されたか出力してください。
[3]環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名:gcc
[3.3] 言語: C言語
[4]期限:1月28日 17:00
[5]その他の制限特になし
0719デフォルトの名無しさん
2008/01/28(月) 17:32:35期限を01月28日と書きましたが、宿題の期限が伸びたので
図々しい様ですが、改めてお願いさせて頂いても良いでしょうか?
内容は変わりありません。
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5920.txt
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:VC 6
[3.3] 言語:C
[4] 期限:2008年02月05日まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。
0721デフォルトの名無しさん
2008/01/28(月) 18:35:20問題文の意図が明瞭でない。それだと答えようがない
説明不足ですみませんでした。
問題文の元は、石取りゲームといって最初に全体の石の数・そこから一度に取れる数を設定しなければいけません、それが以下の部分です↓
printf("石を交互に取り、最後の1個を取った人が負けです\n");
while (1) {
nOrder = 1;
printf("石の数は(5以上100以下)==");
gets(answer);
nStone = atoi(answer);
if (nStone < 5 || nStone > 100) {
printf("石の数が不正です\n");
continue;
}
while (1) {
printf("一度に取れる石の数は(2以上)==");
gets(answer);
nGet = atoi(answer);
if (nGet >= nStone) {
printf("一度に取れる石の数が多すぎます\n");
continue;
}
if (nGet < 2) {
printf("一度に取れる石の数が少なすぎます\n");
continue;
}
break;
}
この部分で設定するのですが、最初の石の数・一度に取れる数を一度に設定できるようにしたいのです。例えば、
「一括設定を使いますか?→ y/n」→「難易度を選択して下さい→ 1:優しい 2:普通 3:難しい」
ここで1を入力すると、石の数と取れる数をファイルから読み込み、その設定でプレイする。といった感じです。
説明下手ですみません、追記させていただきました。
0723デフォルトの名無しさん
2008/01/28(月) 20:10:38#include<string.h>
int main(void){
FILE *fp;
char line[128], *p;
int nStone, nGet, level, cnt;
〜省略〜
for(cnt=1; fgets(line, 128, fp) != NULL && cnt <= 3; cnt++){
if(level != cnt) continue;
p=strchr(line, '\n');
if(p!=NULL) *p='\0';
sscanf(line, "%d %d", &nStone, &nGet);
break;
}
〜省略〜
0724デフォルトの名無しさん
2008/01/28(月) 21:08:06[2]問題文(含コード&リンク):
次の文字送受信プログラム(IPv4専用)を、IPv4/v6デュアルスタックのプログラムに改良せよ。
クライアント:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5929.zip
サーバー:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5930.zip
[3]環境
[3.1] OS:Windows XP/Vista
[3.2] コンパイラ名:Visual C++ 2005 SP1
[3.3] 言語:C++
[4]期限:1月31日 16:00
[5]その他の制限:特になし
丸投げですがよろしくお願いいたします。
0725デフォルトの名無しさん
2008/01/28(月) 21:15:270726デフォルトの名無しさん
2008/01/28(月) 22:22:04変更が必要な箇所を明記してくれてるけど、専門外でさっぱりわかんねw
0727デフォルトの名無しさん
2008/01/28(月) 22:32:12【質問テンプレ】
[1] 授業単元: 情報科学実習
[2] 問題文(含コード&リンク):()
問題>
次のような書式のファイルからデータを読み出して、標準体重の人の名前と
血液型一覧を別のファイルに出力せよ。ただし、classを用いること。また、
人のデータは必要によってメモリ割り当てすること
*標準体重・・・まず。指数k=平均体重/(平均身長-100)を出す。
各人の理想体重は(身長-100)×kであり、標準体重は、理想体重の97〜103%。
・データファイルの書式
一行目:人数
二行目以降:名前 血液型 身長 体重
・データファイルの例
2
Mizumoto O 172 67
Otake A 170 62
[3] 環境
[3.1] OS: I Mac
[3.2] コンパイラ名とバージョン: E macs
[3.3] 言語:C++
[4] 期限: 2008年2月6日まで
[5] その他の制限:繰り返し、条件式、配列、アドレス、ポインタ、スコープ、
クラスを習いました。
0728デフォルトの名無しさん
2008/01/28(月) 23:27:230729デフォルトの名無しさん
2008/01/29(火) 00:16:19>581 >718
【未解決問題】
>>650 1/29
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>724 1/31 16:00
>>720 2/5 詳細>>722
>>727 2/6
>79 無期限
>144 無期限 問題文>148
0730デフォルトの名無しさん
2008/01/29(火) 00:33:26この計算式通り計算すると理想体重が170付近になってしまいますが
理想体重でなくて理想身長の間違いではないでしょうか?
電卓で計算してみて下さい。
0731730
2008/01/29(火) 00:35:050732デフォルトの名無しさん
2008/01/29(火) 00:53:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5933.txt
data2.datというファイルに結果を出力しています。
0733デフォルトの名無しさん
2008/01/29(火) 01:33:25[2] 問題文(含コード&リンク)
入力された整数を配列に順次格納する(昇順になるように入力すること)。
0が入力された時に整数の入力を終了し、次に入力された数字を、二分探索によって
配列から探索し、その配列の添え字番号を出力するプログラムを作成せよ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 1月29日正午まで
お願いします
0735デフォルトの名無しさん
2008/01/29(火) 02:21:02#include <stdio.h>
#include <stdlib.h>
#define BUFFSIZE 32
#define ARRAYSIZE 256
int binary_search(int array[], int b, int e, int key)
{
int t = (e - b) / 2 + b;
if (array[t] == key) return t;
if (array[t] < key) return binary_search(array, t, e, key);
if (array[t] > key) return binary_search(array, b, t, key);
}
int main(void)
{
int array[ARRAYSIZE];
char buff[BUFFSIZE];
int i;
puts("Input Number(s).");
for (i = 0; i < ARRAYSIZE; ++i) { fgets(buff, BUFFSIZE, stdin); if (atoi(buff) == 0) break; array[i] = atoi(buff); }
printf("Input Number. :");
fgets(buff, BUFFSIZE, stdin);
printf("index: %d\n", binary_search(array, 0, i, atoi(buff)));
return 0;
}
0736デフォルトの名無しさん
2008/01/29(火) 02:59:26停止性がなくとも止まってくれるのは何故だろう?
printfとかを入れると止まらんけど。
0737デフォルトの名無しさん
2008/01/29(火) 06:45:43[2] 問題文(含コード&リンク)
名前と年齢を入力し、年齢をキーとして、ハッシュ(チェイン法)に登録する
'-'を入力すると登録を終了し、次に入力された年齢を、ハッシュ法で検索し
あればその名前を出力するプログラムを作成せよ。ハッシュ表の大きさは9とする
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2月1日まで
よろしくお願いします。
0738デフォルトの名無しさん
2008/01/29(火) 08:03:26ありがとうございます!!助かりました
0739733
2008/01/29(火) 08:55:01ありがとうございました!
0740デフォルトの名無しさん
2008/01/29(火) 10:54:03[2] 問題文(含コード&リンク)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5934.txt
[3] 環境
[3.1] OS: Windows Xp
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2003
[3.3] 言語: C
[4] 期限: 1/29まで
コンパイルするとエラーが出るのですが
どこが間違っているのかわからなくなってしまいました。
よろしくお願いします。
0741740
2008/01/29(火) 10:59:25問題つけるの忘れてました
申し訳ありません
これです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5935.txt
0742デフォルトの名無しさん
2008/01/29(火) 11:31:24コンパイルを通したいだけなら、問題文よりコンパイラのメッセージをコピペしてくれよ
0743デフォルトの名無しさん
2008/01/29(火) 11:59:24回答が出るよう作られた宿題回答で回帰逃避したい気持ちはよく分かるぞ。
0744デフォルトの名無しさん
2008/01/29(火) 12:36:050745デフォルトの名無しさん
2008/01/29(火) 12:37:29先生、回帰逃避がよく判らないです。
0746デフォルトの名無しさん
2008/01/29(火) 12:53:27ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5936.cpp
0747デフォルトの名無しさん
2008/01/29(火) 13:26:55期限が切れてしまいましたが、二月頭まで締切を伸ばしてもらったので、引き続き(2)と(3)の解答をお願いできませんか??
どうかよろしくお願いします…m(_ _)m
0748デフォルトの名無しさん
2008/01/29(火) 14:01:25音声データを縮める、音声データを反転させる、の定義をしてくれたまえ。
0749デフォルトの名無しさん
2008/01/29(火) 14:28:52これは間違いで1/30の17:00までなのでよろしくお願いしますm(__)m
0750デフォルトの名無しさん
2008/01/29(火) 16:22:53#include <stdio.h>
#define DATAFILE "sample.txt"
#define LINES 10
int main(void)
{
FILE *fp;
char line[10];
int i = 0, x[LINES], y[LINES], z[LINES];
if (fp = fopen(DATAFILE, "r")) {
while (fgets(line, sizeof(line), fp)) {
sscanf(line, "%d%d%d", &x[i], &y[i], &z[i]);
i++;
}
fclose(fp);
for (i = 0; i < LINES; i++)
printf("x[%d] = %d, y[%d] = %d, z[%d] = %d\n", i, x[i], i, y[i], i, z[i]);
}
return 0;
}
0751デフォルトの名無しさん
2008/01/29(火) 21:17:12[2] 問題文(含コード&リンク):(元データ:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5937.txt
入.力画.像ファイ.ル名、出.力画.像ファイル名、縦、横の
縮.小率を実行時に与えることが出来るようにすること
以下の場合、エラーメッセージを標準エラーに出力し
て、プログラムを終了させること
・正しくない縮.小率が入力された場合
・入力ファイル名に存在しないファイルが指定された場合
・すでに存在するファイル名が出.力画.像ファイル名に指定さ
れた場合
[3] 環境
[3.1] OS:Linux OpenSuse
[3.2] コンパイラ名とバージョン: すみません確認が分かりませんでした。cc でコンパイルしています。
[3.3] 言語: C
[4] 期限: [2008年01月31日17:00まで]
[5] その他の制限: 簡単な例について,プログラミングの基礎知識,変数と式,制御の流れ,関数,配列,文字列,ポインタ,構造体とユーザ定義型,ファイルです。
基本的に初心者からの講座ですので使えることは多くありません。元プログラムを見ていただければ程度が分かると思います。
問題文で不自然に'.'が入っているのは,万が一検索されたときの対策です。
気を悪く思ったかもしれません。すみません。
もしスレを監視していたら意味もないですが;
0752デフォルトの名無しさん
2008/01/29(火) 21:22:200753デフォルトの名無しさん
2008/01/29(火) 21:25:300754デフォルトの名無しさん
2008/01/29(火) 21:44:190755デフォルトの名無しさん
2008/01/29(火) 21:48:300756デフォルトの名無しさん
2008/01/29(火) 21:50:57[2] 問題文(含コード&リンク):除算計算のプロセス改良 詳細→(ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5938.zip)
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:visual C++
[3.3] 言語: C++
[4] 期限:2/4
[5] その他の制限: 演算子/使用不可。
ヒントが詳しくあり、その通りにするだけだと思うのですができず。
問題と試しに作ったのを同梱したので添削してもらえると助かります。
0757デフォルトの名無しさん
2008/01/29(火) 22:15:24fdivrsub()内の1行目、if()の条件式
(powb <= a << (powb+powb)) を if ( a < ( powb+powb )) にしたらいいんじゃない?
0758デフォルトの名無しさん
2008/01/29(火) 22:25:32[2] 問題文(含コード&リンク):
ある海賊団(総員10名)が100枚の金貨を手に入れた。
そこでみんなで分けようとしたが、この海賊団には以下の分配ルールがある。
一番年長の海賊(ボス)が誰に何枚割り振るかを決める。
ボスも含めたみんながその割り振りに賛成か反対か投票をする。
半数以上の賛成で可決される。ただし、賛成が半数未満ならボスは処刑され、
新たなボスがまた分配方法を決める。(10人は年が違うので新ボスを誰にするかでもめることはない)
と、決まるまでこれが繰り返される。
そしてこの海賊団員の特徴として、
みんな限りなく賢く、それぞれみんなが賢いことも知っている。
みんな自分の命は一番大事。次に大事なのは金貨。だが処刑は大好きで、
今のボスを処刑しても次のボスからもらえる金貨の枚数が同じだろうと思ったら、反対に票を投じる。
それぞれあまり仲はよくないので談合はしない。及び金貨の共有もしない。
さて、今のボスは自分がなるべくたくさん金貨がほしい場合、
何枚手に入れることができるだろうか?
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:無期限
[5] その他の制限: なし
0759758
2008/01/29(火) 22:36:550760デフォルトの名無しさん
2008/01/29(火) 22:59:20[2]問題文
座標(X_1
Y_1)にある自転車1が角度A_1(度)の方向にV_1(m/s)で進み、座標(X_2
Y_2)にある自転車2が角度A_2(度)の方向にV_2(m/s)で進んでいる。
二つの自転車が出会う点の座標(X_3
Y_3)と、経過時間Tを求めなさい。
X軸の正方向を0(度)とする。
座標1目盛り1(m)とする。
[3]環境
[3.1] OS:WindowsXP
[3.2] Visual studio 2003
[3.3] 言語: C++
[4]期限:1月30日
[5]その他の制限特になし
丸投げで本当に申し訳ありません!
何卒宜しくお願い致します!(>_<)
0761デフォルトの名無しさん
2008/01/29(火) 23:16:13ありがとうございました!!
ほんと助かりました。
0762デフォルトの名無しさん
2008/01/29(火) 23:46:06向かい合って一直線に進んでるならまだしも、
ちょうどぶち当たるなんてこと、限りなく無いに等しいがそれでもいいの?
0763デフォルトの名無しさん
2008/01/29(火) 23:48:00自転車の長さが100mくらいあるのかも知れないwww
0764デフォルトの名無しさん
2008/01/30(水) 00:05:32>650 >740
【未解決問題】
>>760 1/30
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>724 1/31 16:00
>>751 1/31 17:00
>>581 2月頭 残:課題2、3
>>720 2/5 詳細>>722
>79 無期限
>144 無期限 問題文>148
0765デフォルトの名無しさん
2008/01/30(水) 00:08:060766デフォルトの名無しさん
2008/01/30(水) 00:09:540767デフォルトの名無しさん
2008/01/30(水) 00:13:37点と点とが衝突するというのは、限りなく難しいと思う
自転車とやらの長さに依存する問題
長さが無限大の自転車だとほぼ確実に衝突するし、
長さが無限小の自転車だとほぼ確実に衝突しない
0768760
2008/01/30(水) 00:57:470769デフォルトの名無しさん
2008/01/30(水) 05:07:25眠くてかなりやっつけだが、一応書いた。
交わらない位置関係の判定がいまいちかも分からん。
#include <iostream>
#include <math.h>
#define PI 3.1415926535897932384626433832795
#define RATE 1000
using namespace std;
typedef struct DATA {
double x, y, a, v, l;
};
int main () {
DATA a, b;
cout << "X_1:"; cin >> a.x; cout << "Y_1:"; cin >> a.y;
cout << "A_1:"; cin >> a.a; cout << "V_1:"; cin >> a.v;
cout << "X_2:"; cin >> b.x; cout << "Y_2:"; cin >> b.y;
cout << "A_2:"; cin >> b.a; cout << "V_1:"; cin >> b.v;
a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180);
b.l = (a.y - b.y) / sin((b.a - a.a) * PI / 180);
if ((int)(a.a - b.a) % 180 == 0 ||
(int)(a.l*RATE) < 0 || (int)(b.l*RATE) < 0) {
cout << "まじわらない";
return -1;
}
cout << "T_1 = ";
if ((int)(a.l*RATE) == 0) cout << "0" << endl;
else cout << a.l / a.v << endl;
cout << "T_2 = ";
if ((int)(b.l*RATE) == 0) cout << "0" << endl;
else cout << b.l / b.v << endl;
return 0;
}
0770デフォルトの名無しさん
2008/01/30(水) 05:19:39× a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180);
○ a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180) + (b.x - a.x);
0771デフォルトの名無しさん
2008/01/30(水) 11:11:15お礼が遅れて申し訳ありません
ありがとうございました
0772デフォルトの名無しさん
2008/01/30(水) 12:28:43ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5940.cpp
0773デフォルトの名無しさん
2008/01/30(水) 14:45:26[2] 問題文(含コード&リンク):
ファイル中に自然数が10列記されている。
この数列中には0が1〜9個含まれている。
従って、0を区切りと考えれば。この数列中には数が最低1つは連続している(連続回数とよぶ)。
連続回数の最大を求め,その時の和を求めよ。
ただし、連続回数の最大が2つ以上ある時は和の大きい方を最大とする。
また、連続回数も和も同じであるときは考慮しなくてもよい。
例1)3,1,0,3,6,2,3,7,4,0であれば、最大連続数は6でその和は25である。
例2)3,1,0,2,2,0,03,0,0であれば、最大連続数は2でその和は4である。
[3] 環境
[3.1] OS:Vine Linux 4.2
[3.2] コンパイラ名とバージョン:gcc3.4
[3.3] 言語:C
[4] 期限:[無期限]
[5] その他の制限:なし
むりやりならばできましたが、スマートなやり方があれば教えていただきたいです。
0774デフォルトの名無しさん
2008/01/30(水) 16:29:150775デフォルトの名無しさん
2008/01/30(水) 16:41:46#include <stdio.h>
#define N 10
int continuous(int *a, int from, int n){
int to;
for(to = from; to < n && a[to] != 0; to++);
return to;
}
int culsum(int *a, int from, int to){
int i, sum = 0;
for(i = from; i < to; i++) sum += a[i];
return sum;
}
int main(void){
FILE *fp = fopen("data.txt", "r");
int i, next, cnt = 1, sum = 0, tmp, a[N];
if(!fp) return 1;
for(i = 0; i < N; i++) fscanf(fp, "%d,", &a[i]);
fclose(fp);
for(i = 0; i < N; i++){
next = continuous(a, i, N);
if(next - i >= cnt){
cnt = next - i;
tmp = culsum(a, i, next);
if(tmp > sum) sum = tmp;
}
i = next;
}
printf("cnt: %d\nsum: %d\n", cnt, sum);
return 0;
}
0776デフォルトの名無しさん
2008/01/30(水) 16:45:28a[10]に数値読み込んでこんな感じかな?
int i,j=0,max=0,temp=0,renzoku=0;
for(i=0;i<10;i++)
{
while(a[i]&&i<10)
{
temp+=a[i];
i++;
j++;
}
renzoku=(j>renzoku?j:renzoku);
if(renzoku==j)max=(temp>max?temp:max);
j=0;
}
0777デフォルトの名無しさん
2008/01/30(水) 16:47:380778デフォルトの名無しさん
2008/01/30(水) 16:49:180779デフォルトの名無しさん
2008/01/30(水) 17:00:22#include <stdio.h>
int main(void)
{
int a[10],i,j=0,max=0,temp=0,renzoku=0;
FILE *fp=fopen("data.txt","r");
if(!fp) return 1;
for(i=0;i<10;i++)fscanf(fp,"%d,",&a[i]);
fclose(fp);
for(i=0;i<10;i++)
{
while(a[i]&&i<10)
{
temp+=a[i];
i++;
j++;
}
renzoku=(j>renzoku?j:renzoku);
if(renzoku==j)max=(temp>max?temp:max);
j=temp=0;
}
printf("最大連続数:%d\n合計:%d",renzoku,max);
return 0;
}
0780デフォルトの名無しさん
2008/01/30(水) 17:21:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5942.c
0781デフォルトの名無しさん
2008/01/30(水) 17:33:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5943.txt
0782デフォルトの名無しさん
2008/01/30(水) 17:40:24格納せよ。
・次に異なる6個の数字を入力し、順番に配列MAN[6]に格納せよ。
・ソート方法Aを用いて配列COM、MANの要素をそれぞれ小さい順に並べよ。
・配列COMに含まれる配列MANの数字の個数countを求めよ。
・最後に、配列COM、MANの全要素、変数countを
result.outに書き込め。
・出力形式は自由とするが、main関数内は10行以内にすること。
[ソート方法A]
・作業用の配列として、要素が100個のint型の配列Workを用意する。
・配列Workの各要素は、0に初期化する。
・ソートしたい配列xの要素を順番に読んで、Work[その値]を+1する。
・作業3をすべてのxの要素について行った後、Workの要素を小さい方から順番に
よんで、Workの値が0でなければ、xに書き戻します。
この課題が全然できません。助けて下さい。
0783デフォルトの名無しさん
2008/01/30(水) 17:51:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5944.txt
0784デフォルトの名無しさん
2008/01/30(水) 17:53:32それ、【ヒント1】〜【ヒント3】も問題文にあるだろ?
0785デフォルトの名無しさん
2008/01/30(水) 18:22:57作ったけど,PC移行中でコンパイラ入れて無くて試せない^p^
0786デフォルトの名無しさん
2008/01/30(水) 20:10:32本当に有難う御座います!!
0787デフォルトの名無しさん
2008/01/30(水) 20:37:58[2] 問題文(含コード&リンク):シェルソートは単純挿入法を改良し、ソートの効率を上げたものである。
全ての要素を1度にソートするのではなく、
間隔dをあけて要素を比較して大まかなソートを繰り返したのち、
最後にd = 1でソートを実行する。
データ数をnとしたときの、効率の良い間隔d[i]の計算法として、
Knuthによる次の式が知られている。
t = log2n - 1 (整数に切り捨て)
d[t-1] = 1
d[i-1] = 2d[i] + 1
この式を使って、与えられた要素数nに対し
t、配列dの値を計算する関数を作成しなさい。
n = 100としたときの、tおよびdの要素の値を画面に出力しなさい。
logの計算を行うには、math.hをインクルードする
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C
[4] 期間:2/1まで
[5] その他の制限: なし
お願いします。
0788デフォルトの名無しさん
2008/01/30(水) 21:23:01http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5945.txt
0789788
2008/01/30(水) 21:25:57全部他の関数に移せってか。ちょっとまって。
0790デフォルトの名無しさん
2008/01/30(水) 21:26:06>>694
0791デフォルトの名無しさん
2008/01/30(水) 21:35:02[2] 問題文(含コード&リンク): 直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。
一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,その点が物体の内部に落ちるかどうかを判定する。
内部に落ちる確率が体積に比例することから体積が見積もれる。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2/1
[5] その他の制限:
0792788
2008/01/30(水) 21:38:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5947.txt
すまんかった。
0793デフォルトの名無しさん
2008/01/30(水) 21:43:34部分を、共通関数化すれば得点高いと思う。
それを構成できるかも問うてる様に見える。
具体的には、配列代入関数として、入れたかどうかと、
配列が溢れた事を戻り値で返す。
0794デフォルトの名無しさん
2008/01/30(水) 22:05:45>>673
0795デフォルトの名無しさん
2008/01/30(水) 23:52:16#include <stdlib.h>
#include <math.h>
int main(void)
{
double x, y, z;
int iter[] = {10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 0}, i, j, k = 0, count;
for (i = iter[k]; i; i = iter[++k]) {
count = 0;
for (j = 0; j < i; j++) {
x = (double)rand() / RAND_MAX - 0.5;
y = (double)rand() / RAND_MAX - 0.5;
z = (double)rand() / RAND_MAX;
if (sqrt(x * x + y * y) <= 0.5 && 0. <= z && z <= 1.)
count++;
}
printf("ITER = %d, V = %f\n", iter[k], (double)count / iter[k]);
}
printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5);
return 0;
}
0796デフォルトの名無しさん
2008/01/30(水) 23:52:430798デフォルトの名無しさん
2008/01/31(木) 14:03:52[2] �@./a.out arg1 arg2 ...の時、
argをアルファベット順にソーティングするquicksortのプログラムを作る。
�A問題�@をライブラリ関数qsort()を用いて作る。
qsort( void* base, int n_elem, int size, int (*compare)(void*, void*) )
base: 配列のアドレス
n_elem: 要素数
size: 一要素のサイズ
compare: 比較に使う関数。
�Bライブラリ関数と同じ動きをする関数
msort( ...qsortと同じ引数... )
を作る。(アルゴリズムはクイックソート)
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] C
[4] 2008年2/5(火)
[5] 制限は特にないです
よろしくお願いしますm(__)m
0799デフォルトの名無しさん
2008/01/31(木) 16:57:21とりあえず最後の問題だけやってみた。
これで満点とれなかったら教官の頭が悪い。
( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5950.c
0800ハム
2008/01/31(木) 18:54:12[1] 授業単元: プログラミング演習
[2] 問題文:(数独の問題作成の途中です。)
最初全てに0が入った2次元配列を、数字が全て埋まった状態にするプログラムを考えています。
どなたかお力をお貸し下さい。
[3] 環境 Visual Studio 2005
[3.1] OS: Windows/ XP
[3.2] コンパイラ名とバージョン: わかりません
[3.3] 言語: C言語
[4] 期限: ([2008年2月2日21:00まで]
[5] その他の制限:初心者なので、簡単なコードでお願いします。
0801デフォルトの名無しさん
2008/01/31(木) 18:55:16[2]リンクリストを用いたスタックプログラムの作成
typdef struct box{
int cont;
struct box next;}box1;
typedef box1 *stack;
スタックの仕様は↑とする。
ポップアップとプッシュダウンを行う関数
int pupup(stack S);
void pushdown(stack S; int x);
を作成せよ。
[3] 環境
[3.1] winXP
[3.2] bcc
[3.3] C
[4] 2008年2/5(火)
[5] 制限:問題文の仕様を使うこと。
アンダーフロー対策はしなくてよい
よろしくおねがいします。
0802デフォルトの名無しさん
2008/01/31(木) 18:56:05お前は日本語を書いている自信があるのか?
0803デフォルトの名無しさん
2008/01/31(木) 19:14:15数独は、プログラムで解くのは簡単だけど作るのは難しいと思われ。
途中まで作ったのならそれを提示したまえ。
# つーか、初心者向けの内容じゃねぇぞ。
0804デフォルトの名無しさん
2008/01/31(木) 20:18:36全然わからないので…
0805デフォルトの名無しさん
2008/01/31(木) 21:03:12やだ。
0807デフォルトの名無しさん
2008/01/31(木) 21:09:57やだってばー。
0809デフォルトの名無しさん
2008/01/31(木) 21:15:17馬鹿はスルーしろ
0810デフォルトの名無しさん
2008/01/31(木) 21:17:14いちいち反応するな馬鹿
0811デフォルトの名無しさん
2008/01/31(木) 21:36:03答えようかと思ったが、君のように裏表がある人間のために
エディタ起動するのマンドクセ('A`)
0813デフォルトの名無しさん
2008/01/31(木) 21:54:17単位やべーからお願い。
0814デフォルトの名無しさん
2008/01/31(木) 21:55:030816デフォルトの名無しさん
2008/01/31(木) 22:00:140817デフォルトの名無しさん
2008/01/31(木) 22:41:07問題がタコだな。
まず、その仕様じゃコンパイルすら通らない。
>pupup
popupの間違いでは。
>アンダーフロー対策はしなくてよい
オーバーフロー対策はどうなのよ。
0818デフォルトの名無しさん
2008/01/31(木) 22:43:330819デフォルトの名無しさん
2008/01/31(木) 22:45:05>数字が全て埋まった状態にするプログラム
ほらよ
memset(table, 1, sizeof(table));
0820デフォルトの名無しさん
2008/01/31(木) 22:57:33オーバーフロウもアンダーフロウも対策しなくて大丈夫です。
ペーパーで提出する課題なのでかなり適当みたいです。
popupは自分も気になりましたが問題がpupupなのでそのままにしましたw
0821デフォルトの名無しさん
2008/01/31(木) 23:02:20それだけじゃなくて、
typdef struct box{
int cont;
struct box next;}box1;
↑じゃコンパイル通らないよ。
typdef struct box{
int cont;
struct box *next;}box1;
↑こうしないと。
いいかげんそうな教官みたいだし、もう提出しなくてよいんじゃね?
0822デフォルトの名無しさん
2008/01/31(木) 23:06:480823デフォルトの名無しさん
2008/01/31(木) 23:12:43一方通行じゃん。pushしか出来ねーーー
0824デフォルトの名無しさん
2008/01/31(木) 23:14:410825デフォルトの名無しさん
2008/01/31(木) 23:29:21ありがとうございます!
0826デフォルトの名無しさん
2008/01/31(木) 23:34:58typedef struct box{
int cont;
struct box *next;}box1;
typedef box1 *stack;
int pupup(stack S)
{
box1 tmp = *S->next;
free(S->next);
S->next = tmp.next;
return tmp.cont;
}
void pushdown(stack S, int x)
{
box1 *new_box = (box1 *)malloc(sizeof(box1));
new_box->cont = x;
new_box->next = S->next;
S->next = new_box;
return;
}
0827デフォルトの名無しさん
2008/01/31(木) 23:48:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5953.txt
2と3。
0828デフォルトの名無しさん
2008/02/01(金) 00:37:31【時間切れ】 (1/31)
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>751 1/31 17:00
【未解決問題】
>>787 2/1
>>724 2/2 12:00
>>800 2/2 21:00
>>581 2月頭 残:課題2、3
>79 無期限
>144 無期限 問題文>148
0829デフォルトの名無しさん
2008/02/01(金) 00:39:090830デフォルトの名無しさん
2008/02/01(金) 00:42:04「数独(すうどく・SUDOKU)とは、3×3のブロックに区切られた9×9の正方形の枠内に1〜9までの数字を入れるペンシルパズルの一つである。」
123 456 789
456 789 123
789 123 456
234 567 891
567 891 234
891 234 567
345 678 912
678 912 345
912 345 678
でいいんじゃね?
0831デフォルトの名無しさん
2008/02/01(金) 00:43:22http://www.nicovideo.jp/watch/sm1308846
0832581
2008/02/01(金) 12:47:48(2)なのですが、音声データを半分に圧縮して再生できれば良いそうです。
実際の音声データとなる部分のbyte?を、一個飛ばしで読み込んでみて、と言われたのですが、さっぱりです…orz
(3)は、音声データを読み込んで、逆再生できればOKだそうです。
よろしくお願いしますm(_ _)m
0833デフォルトの名無しさん
2008/02/01(金) 13:26:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5956.txt
0834デフォルトの名無しさん
2008/02/01(金) 13:32:09半分削ったら復元無理じゃん
あとまずは>>658さんのテキストファイルをWavにするプログラム作れば
既にないぞうしてるかもしれないけど
0835デフォルトの名無しさん
2008/02/01(金) 13:38:120836デフォルトの名無しさん
2008/02/01(金) 13:56:050837デフォルトの名無しさん
2008/02/01(金) 14:19:020838デフォルトの名無しさん
2008/02/01(金) 14:22:37音だろうと映像だろうと数字の羅列に対応させるのは簡単だぞ。
0839デフォルトの名無しさん
2008/02/01(金) 14:25:390840デフォルトの名無しさん
2008/02/01(金) 14:26:400841デフォルトの名無しさん
2008/02/01(金) 14:29:07引き篭ってパソコン麦価かまってるとそんな当たり前のことも分からなくなるんだな。
0842デフォルトの名無しさん
2008/02/01(金) 14:30:590843デフォルトの名無しさん
2008/02/01(金) 14:37:430844デフォルトの名無しさん
2008/02/01(金) 14:39:05カラオケの採点だと正確にドを出すのを高得点としているが、
人間の耳に入った場合は必ずしも正確なドが心地よいとは限らない。
ちょっとはずしてる加減がかわいいとかあるだろ?
音だけじゃなくリズムとか強弱とかもな。
0845デフォルトの名無しさん
2008/02/01(金) 14:41:34でも人間の耳の分解能には限界があるだろ
1/3を0.0101010101010101で近似しても違いなんて分からない
0846デフォルトの名無しさん
2008/02/01(金) 14:50:16そっちの問題より量子化の時の誤差の方が大きいだろ。
0847デフォルトの名無しさん
2008/02/01(金) 15:02:09>>841が「離散量では原理的に複雑な音楽を忠実に表現できない」という主張をした(と俺は理解した)から、
目盛を十分細かく取れば良い、という説明をしただけで、実際に音声をデジタルで扱う場合にどこが困難かは別の話だろ
0848デフォルトの名無しさん
2008/02/01(金) 15:15:18よくわからんが、MIDIのことか? なつかしいな。
0849デフォルトの名無しさん
2008/02/01(金) 15:15:52[2]試験課題
優先順位付き四則演算
式を入れてください
(123.4*(5.1+0.2)+(6+0.3)/(3.0−1.0)/5=?
答えは?です。
[3.1]WindowsXP
[3.2]VS8.0
[3.3]C++
[4]2月5日
[5]構造体
調べてみましたがよくわかりませんでした。
よろしくお願いいたします。
0850デフォルトの名無しさん
2008/02/01(金) 15:18:41メンバ関数とか使っていい?
0851798
2008/02/01(金) 16:36:21>>827さん
お早い回答、見やすいプログラムありがとうございました^^
・・・もし来週も行き詰ったら・・・よろしくお願いしますm(__)m
0852デフォルトの名無しさん
2008/02/01(金) 16:41:11はい、習っているので大丈夫です。
0853デフォルトの名無しさん
2008/02/01(金) 17:37:34けっして俺がつくったソースコードではないけど
頭のいい人はすごいねって思う。
fparserでググれば出てくるかもしれんが
圧縮してあげとく。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5958.lzh
0854デフォルトの名無しさん
2008/02/01(金) 17:40:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5957.txt
とりあえず書いてみたが、あまり簡単でもスマートでもない。
出力だけはたぶん合ってそうだけども。
0855デフォルトの名無しさん
2008/02/01(金) 18:23:00ありがとうございます、動きました。
0856デフォルトの名無しさん
2008/02/01(金) 19:43:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5959.zip
VCないから、Cygwin/g++用に変更した。一応動いたのでうp
参考程度にどうぞ
(運がよければVCでもそのままコンパイルできる。一応気にしてソース修正したつもり)
IPv6環境ないからIPv6での動作確認はできなかった
0857 ◆sUfWYz9MSA
2008/02/01(金) 21:53:06[2] 問題文(含コード&リンク):
以下のようなcsvファイルをfopen()で読み込み,
フーリエ変換したものをグラフで表示する.
400,97.98
400.5,98.13
401,98.31
401.5,98.49
・・・
という","の左が700まである波形データです。
読み込んだデータを","区切りでプロンプトに書き出す
ことはできているのですが,フーリエ変換がどうしてもできませんorz
お手数ですが教えてもらえないでしょうか。
sample: http://yomiko-01.hp.infoseek.co.jp/cgi-bin/src/up0222.txt
csvでupできなかったので.txtになってますスイマセン・・・
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ名とバージョン:Visual C++ 6.0
[3.3] 言語: どちらでも可
[4] 期限: できるだけ早くお願いします。
[5] その他の制限:学校から家に帰るのでコメント返信遅くなります・・・
どうかよろしくお願いします。
0858デフォルトの名無しさん
2008/02/01(金) 22:24:48[2] 問題文(含コード&リンク):n,kを入力したとき、0〜n-1の整数からk個選ぶ選び方をすべて出力する
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C言語
[4] 期限: 2月4日中
[5] 再帰的アルゴリズムを使うと簡単と言われました。
どうかよろしくおねがいします。
0859デフォルトの名無しさん
2008/02/01(金) 22:34:050860デフォルトの名無しさん
2008/02/01(金) 22:37:070861デフォルトの名無しさん
2008/02/01(金) 22:42:47重複なしの組み合わせです。
n=5,k=3のときは
012 013 014 023 024 034 123 124 134 234
となるはずです。
0862デフォルトの名無しさん
2008/02/01(金) 22:46:58C言語によるアルゴリズム事典からそのままぱくったので
あってるかどうかわからへんで〜
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5960.txt
0863デフォルトの名無しさん
2008/02/01(金) 23:01:55unsigned long combination(int n, int k)
{
int i, j;
unsigned long a[17];
if (n - k < k) k = n - k;
if (k == 0) return 1;
if (k == 1) return n;
if (k > 17) return 0; /* error */
for (i = 1; i < k; i++) a[i] = i + 2;
for (i = 3; i <= n - k + 1; i++) {
a[0] = i;
for (j = 1; j < k; j++) a[j] += a[j - 1];
}
return a[k - 1];
}
0864デフォルトの名無しさん
2008/02/01(金) 23:07:33ワロタ
0865デフォルトの名無しさん
2008/02/01(金) 23:40:39#include<stdio.h>
#include<stdlib.h>
void get_combination(int num, int chosenCnt);
int *numary;
int n, c;
int main(int argc, char *argv[]){
if(argc != 3) return 1;
n = atoi(argv[1])-1;
c = atoi(argv[2]);
if((numary = (int*)calloc(sizeof(int), c)) == NULL) return 1;
get_combination(0, 1);
free(numary);
return 0;
}
void get_combination(int num, int chosenCnt){
int i;
if(chosenCnt > c){
for(i=0; i < c; i++) printf(" %d", numary[i]);
putchar('\n');
return;
}
for(i=num; i <= n; i++){
numary[chosenCnt-1] = i;
get_combination(i+1, chosenCnt+1);
}
}
0866858
2008/02/01(金) 23:54:04返答ありがとうございます。
コンパイル通るのですが、どうやったら表示できるかが分からず、
いろいろ試してみましたが出来ませんでした。orz...
>>865
返答ありがとうございます。
ばっちり動きました。ありがとうございます。
助かりました。
後でプログラムをじっくり解読してみます。
本当にありがとうございました。
0867デフォルトの名無しさん
2008/02/01(金) 23:54:10IPv4でもIPv6でも動きました!
本当にありがとうございました!
0868デフォルトの名無しさん
2008/02/01(金) 23:55:44本気で何も分かってないな。まあ丸投げスレだからいいんだけど
0869デフォルトの名無しさん
2008/02/02(土) 00:01:53>>857です。返事ありがとうございます!
今帰ってきたので、後で参考にさせてもらいます(o´・ω・)´-ω-)ペコリ
0870デフォルトの名無しさん
2008/02/02(土) 00:14:39当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
>> 853 さんにならって、私がこの方面にのめりこむきっかけとなったソースを、そのままあげておきます。
なお、宿題の題意にあうように手直しはしていますが、小数点の処理は手抜きです。オリジナルを損ねたくなかったわけで、すみません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5961.txt
>>853
まったく頭のいい人はすごいですね。
0871デフォルトの名無しさん
2008/02/02(土) 00:27:55>787
【未解決問題】
>>581 2月頭 残:課題2、3
>>798 2/5 残:課題1
>79 無期限
>144 無期限 問題文>148
0872ハム
2008/02/02(土) 00:52:07ありがとうございます!
熟読して、勉強させていただきます!
本当にありがとうございます!!
0873デフォルトの名無しさん
2008/02/02(土) 02:04:47小数に対応できるようにfactor()の中身を>>870が書き換えたんだよね?
'('が来た後の exp0() を int で受けてるままだから
このままだと丸まっちゃうよ
0874870
2008/02/02(土) 02:23:48感謝です。訂正したものをあげておきます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5963.txt
0875853
2008/02/02(土) 02:50:50こーいうページもあるけどね
これをdoubleでやりとりするように変えた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5964.txt
をあげとこう
0876デフォルトの名無しさん
2008/02/02(土) 02:54:00早いねw
もっというと現状のソースはちょっと精神分裂気味に見えるから
double number(void) 作って↓みたいにしたほうが元のBNF通りかねえ?
他人の宿題だからどうでもいいかもだけど。
double factor(void){
if(isdigit(nextc){ /* F -> Num */
return number();
} else if(match('(')) { /* F -> (E) */
double v = exp0();
if(match(')')) return v;
else error();
} else {
error();
}
}
0877デフォルトの名無しさん
2008/02/02(土) 10:06:19そうすると、1桁しかあつかえないのでは?
いや、現状が精神分裂気味なのはまったく同意です。オリジナルの美しい構造を残したいものです。
0878デフォルトの名無しさん
2008/02/02(土) 10:31:53なるほど,ブランク読み飛ばし、単項のマイナスにも対応してますね。
ただし、このBNF はLL(1)文法であり、たかだか**1文字**先読みすればdeterministicにtop-downに解析できるわけで、その精神をソースにもりこみたいな、という意志がありまして...。
0879デフォルトの名無しさん
2008/02/02(土) 11:22:330880デフォルトの名無しさん
2008/02/02(土) 17:33:370881デフォルトの名無しさん
2008/02/02(土) 17:41:130882デフォルトの名無しさん
2008/02/02(土) 19:12:13[2] 問題文(含コード&リンク):
1〜24まで穴埋め問題です
http://ip.tosp.co.jp/i.asp?I=cgenger
[3] 環境
[3.1] OS : windows
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: C言語
[4] 期限:2月4日
0883デフォルトの名無しさん
2008/02/02(土) 20:18:58とりあえず22まで。間違ってても謝罪や賠償はしない。
1. int *
2. char *
3. char *
4. int **
5. char **
6. char **
7. &cnt
8. &ch
9. &ch
10. pc
11. *pc
12. &ch
13. pch
14. *pch
15. argv[1]
16. pa
17. *(argv[2])
18. *pa
19. &pc
20. &pch
21. **ppc
22. **pch
0884デフォルトの名無しさん
2008/02/02(土) 20:36:22最近C言語でプログラム書いていないんで、argvの仕様を調べなおしてた。
あと、実行時の引数の順序がわからんから、適当に書き換えてくれ。
23. *(pp+3)
24. **(pp+4)
0885デフォルトの名無しさん
2008/02/02(土) 21:22:32ありがとう御座います
0886デフォルトの名無しさん
2008/02/02(土) 21:28:440887デフォルトの名無しさん
2008/02/02(土) 21:48:01再掲載お願いできますでしょうか?
0888デフォルトの名無しさん
2008/02/03(日) 00:06:550889デフォルトの名無しさん
2008/02/03(日) 00:38:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5968.c
0890デフォルトの名無しさん
2008/02/03(日) 01:29:14なし
【未解決問題】
>>798 2/5 残:課題1
>>79 無期限
>>144 無期限 問題文>>148
0891デフォルトの名無しさん
2008/02/03(日) 02:44:30[2] 問題文(含コード&リンク):
input8500.txtには4桁の整数が8500個書かれている。
これら8500個の整数のうち、相異なる整数は何種類あるか求めなさい。
input8500.txt: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5969.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年2月4日12:00まで
[5] その他の制限: 制限は特にありません。宜しくお願いいたします。
0892デフォルトの名無しさん
2008/02/03(日) 03:30:01#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void){
int *table=(int*)calloc(sizeof(int), 10000, 0), i, x;
FILE *in=fopen("input8500.txt","r");
for(i=0; i<8500; i++){
fscanf(in, "%d", &x);
table[x]++;
}
for(i=x=0; i<10000; x+=table[i]?1:0, i++);
printf("%d種類\n", x);
}
コンパイラ無いので,試してないけど動くんじゃね?
0893デフォルトの名無しさん
2008/02/03(日) 08:25:55575 デフォルトの名無しさん sage 2007/02/22(木) 19:31:21
>>574
ほい。
#include<stdio.h>
#include<stdlib.h>
char buf[100],*src=buf;
double atm(void);
double mul(double r){return*src=='*'?++src,mul(r*atm()):*src=='/'?++src,mul(r/atm()):r;}
double add(double r){return*src=='+'?++src,add(r+mul(atm())):*src=='-'?++src,add(r-mul(atm())):r;}
double atm(void){
double r;
while(isspace(*src))++src;
if(*src == '(')++src,r = add(mul(atm())),++src;
else r = strtod(src,&src);
while(isspace(*src))++src;
return r;
}
int main(){gets(src);printf("%f\n",add(mul(atm())));}
0894デフォルトの名無しさん
2008/02/03(日) 17:42:29[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5973.txt
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:2月12日(火)16時20分まで
[5] その他の制限:特になし。
よろしくお願いします。
0895891
2008/02/03(日) 18:08:31ありがとうございます。コンパイルしてみたところ
5行目に、too many arguments to function `calloc'
とエラーが出ました。calloc関数は使用したことがないため、
どこを直せばいいのか分かりません。
教えていただけないでしょうか。
0896デフォルトの名無しさん
2008/02/03(日) 18:11:240897デフォルトの名無しさん
2008/02/03(日) 18:12:20calloc(10000, sizeof(int))
0898デフォルトの名無しさん
2008/02/03(日) 18:45:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5974.c
0899デフォルトの名無しさん
2008/02/03(日) 20:53:57[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5975.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語: C
[4] 期限:2月5日
[5] その他の制限:特になし
お願いします。
0900デフォルトの名無しさん
2008/02/03(日) 21:35:45[2] 問題文(含コード&リンク):月日を入力するとその日の星座を表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: ?
[3.3] 言語: C
[4] 期限: 2008/2/6
[5] その他の制限: 特にありまさん
0902デフォルトの名無しさん
2008/02/03(日) 22:09:06[2] 問題文(含コード&リンク): 直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。
一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,その点が物体の内部
に落ちるかどうかを判定する。内部に落ちる確率が体積に比例することから体積が見積もれる。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2/4
[5] その他の制限:
以前このスレで質問した問題なんですがコンパイルできなかったのでもう一度
おしえてもらえないでしょうか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5976.txt
printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5); のM_PIでエラーがでて
しまいます。
0903デフォルトの名無しさん
2008/02/03(日) 22:22:43#include <stdio.h>
#include <stdlib.h>
int main() {
static const struct {int n; const char *s;} c[] = {
{120, "みずがめ"}, {219, "うお"}, {321, "おひつじ"}, {420, "おうし"},
{521, "ふたご"}, {622, "かに"}, {723, "しし"}, {823, "おとめ"},
{923, "てんびん"}, {1024, "さそり"}, {1122, "いて"}, {1222, "やぎ"},
};
int i, m, d;
char buf[256];
do {
printf("月/日: ");
if (fgets(buf, sizeof buf, stdin) == 0)
return EXIT_FAILURE;
} while (sscanf(buf, "%d / %d", &m, &d) != 2);
for (i = 0; i < 12 && m * 100 + d >= c[i].n; i++)
;
if (--i < 0)
i = 11;
printf("%s座\n", c[i].s);
return EXIT_SUCCESS;
}
0904デフォルトの名無しさん
2008/02/03(日) 22:27:41上の方に
#define M_PI 3.141592653589793238
とか書いときゃいいんじゃね?
0905デフォルトの名無しさん
2008/02/03(日) 22:30:10printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5);のまえにでも
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
とでもしとけ
てか、CygwinでもMinGWでもコンパイルは通るんだが
0906デフォルトの名無しさん
2008/02/03(日) 22:35:19私の方でもコンパイル・実行しましたが、問題はありませんでした。
環境は WindowsXP/cygwin(gcc 3.4.4) です。
#include <math.h>
の記述がありますから、M_PI には円周率が定義されているはずなのですが...。
gcc のインストールはどうやってしましたか?
0908デフォルトの名無しさん
2008/02/03(日) 22:41:48バージョンによってはgccでも載ってなかったりするのか?
0909デフォルトの名無しさん
2008/02/03(日) 22:54:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5977.c
0910デフォルトの名無しさん
2008/02/03(日) 22:58:44M_PI は、手元の gcc 2.6.3 for GO32/PC9801 の math.h には定義されていましたね。
bcc 5.5 でも OK, VC 6.0 の math.h にはありませんでした。
0911デフォルトの名無しさん
2008/02/03(日) 23:09:50#define _USE_MATH_DEFINES
で使えたはずだが
0912デフォルトの名無しさん
2008/02/03(日) 23:10:52#include<stdio.h>
int main(void){
char *a[]={"いて","やぎ","みずがめ","うお","おひつじ","おうし","ふたご","かに","しし","おとめ","てんびん","さそり"};
unsigned int m,d;
printf("月,日=");
scanf("%d,%d",&m,&d);
printf("%s座\n",a[(m+d*2/",*&*(,*0...,"[m%12])%12]);
return 0;
}
0913デフォルトの名無しさん
2008/02/04(月) 00:16:060914デフォルトの名無しさん
2008/02/04(月) 02:21:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5978.txt
0915581
2008/02/04(月) 03:47:38ありがとうございますm(_ _)m
さっきgccでコンパイル通そうとおもったら通らなかったのですが、どうすれば良いでしょうか??orz
0916デフォルトの名無しさん
2008/02/04(月) 08:45:59[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5980.txt
[3] 環境
[3.1] OS:UNIX
[3.2] gcc 3.4
[3.3] 言語: C
[4] 期限:2月6日
[5] その他の制限:
よろしくお願いします。
0917デフォルトの名無しさん
2008/02/04(月) 09:10:09どんなエラーメッセージが出ていますか。
0918デフォルトの名無しさん
2008/02/04(月) 09:34:59[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5982.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: どちらでも可
[4] 期限: 2008年02月04日12:00まで
[5] その他の制限:
0919デフォルトの名無しさん
2008/02/04(月) 10:44:49( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5983.c
0920デフォルトの名無しさん
2008/02/04(月) 10:47:51( ´∀`) yamaguchi.txt が落とせないんです。
0921デフォルトの名無しさん
2008/02/04(月) 10:54:17ごめん。行頭に空白があったり、空行があったらバグっちゃう。
パッチ書きました。
( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5984.txt
0922デフォルトの名無しさん
2008/02/04(月) 11:03:33ごめん。add_word() の処理が冗長だった。
もう一回パッチあててくり。
( ´∀`)つ ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5985.txt
0924デフォルトの名無しさん
2008/02/04(月) 11:07:56yamaguchi.txtです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5986.txt
0925915
2008/02/04(月) 11:26:36コンパイル失敗時に出てきたエラーメッセージを直接コピペします。長いかも・・・。
2ch.c:6: parse error before `&'
2ch.c:17: parse error before `}'
2ch.c: In function `read_wave_file':
2ch.c:47: storage size of `chunk' isn't known
2ch.c:54: stray '\' in program
2ch.c:54: parse error before `)'
2ch.c:56: stray '\' in program
2ch.c:56: parse error before `)'
2ch.c:62: stray '\' in program
2ch.c:62: parse error before `!'
2ch.c:68: parse error before `else'
2ch.c:68: stray '\' in program
2ch.c: At top level:
2ch.c:76: parse error before `if'
2ch.c:78: parse error before `+'
2ch.c:78: warning: data definition has no type or storage class
2ch.c:81: warning: parameter names (without types) in function declaration
2ch.c:81: warning: data definition has no type or storage class
2ch.c:83: parse error before `if'
2ch.c: In function `write_wave_file':
2ch.c:92: storage size of `chunk' isn't known
2ch.c:98: stray '\' in program
2ch.c:98: parse error before `;'
2ch.c:102: stray '\' in program
2ch.c:102: parse error before `;'
2ch.c:105: stray '\' in program
2ch.c:105: parse error before `;'
2ch.c:110: stray '\' in program
2ch.c:110: parse error before `;'
0926デフォルトの名無しさん
2008/02/04(月) 11:39:005行目の最後(改行の直前)の'\'が消えてないか?
0927デフォルトの名無しさん
2008/02/04(月) 12:35:58ありがとうございました。
0928デフォルトの名無しさん
2008/02/04(月) 13:55:09まさかとは思うが、改行コードが\r\nのままLinuxでコンパイルしていないか?
5行目末のバックスラッシュが\rをエスケープしてしまい、その後の\nをエスケープできなくなるぞ。
0929デフォルトの名無しさん
2008/02/04(月) 14:43:27[2] 問題文(含コード&リンク):�@0〜99の数字から異なる30個を選び、配列COM1[30]に格納せよ
(時間で初期化,乱数を使用)
�A次に6個の異なる数を入力し配列COM2[6]に格納せよ
�B次にCOM1、COM2の数を小さい順に並び変えよ
�C次にCOM1とCOM2の両方に含まれる数の個数を求めよ
�D最後にCOM1とCOM2の全数字と�Cの個数を出力させよ
[3] 環境
[3.1] OS:UNIX
[3.2] gcc 3.4
[3.3] 言語: C
[4] 期限:2月7日
[5] その他の制限:
宜しくお願いします。
0930デフォルトの名無しさん
2008/02/04(月) 14:59:57>>788
0931デフォルトの名無しさん
2008/02/04(月) 15:24:53( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5990.c
0932デフォルトの名無しさん
2008/02/04(月) 15:33:49make_com1()は>>929の�@の『0〜99の数字から異なる30個を選び』を
満たしてないような・・・(重複するんじゃないの?)
通りがかりで失礼
0933デフォルトの名無しさん
2008/02/04(月) 16:57:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5992.txt
初心者だけどやってみた、一応ちゃんと動いた。
変数の名前とかだいぶ適当だけど勘弁。
0934デフォルトの名無しさん
2008/02/04(月) 17:17:44[2] 問題文:キーボードから学籍番号を入力すると、
その学生の eメールアドレスを出力するプログラムを作成しなさい。
ただし、学籍番号は7桁の自然数とし、これ以外の文字列が打ち込まれた時には
「学籍番号は7桁の数字で入力して下さい」と出力して、終了するプログラムとすること。
例
学籍番号を入力して下さい:0032113
0032113@yahoo....など。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual studio
[3.3] 言語: C++
[4] 期限: 2月4日
[5] その他の制限:
期限ギリギリで申し訳ないですが、お願いします。
0935デフォルトの名無しさん
2008/02/04(月) 19:00:43俺も作ってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5993.txt
0936デフォルトの名無しさん
2008/02/04(月) 20:45:000937935
2008/02/04(月) 20:46:340938デフォルトの名無しさん
2008/02/04(月) 20:49:52後学の為にダメな理由を詳しく教えてくれると嬉しい。
0939デフォルトの名無しさん
2008/02/04(月) 20:57:16{ // i番目の要素と乱数(0~99)番目の要素を交換
int rnd = rand() % 100 ;
int tmp = 0 ;
tmp = hoge[i] ;
hoge[i] = hoge[rnd] ;
hoge[rnd] = tmp ;
}
これだと数値が偏るから
0940デフォルトの名無しさん
2008/02/04(月) 20:58:56[2] 問題文
input.txtの各行には100点満点の数学の試験の点数が書かれている。
これを0点台,10点台…,90点台,100点の11の階級に分け、どの階級に何人
が属するかを人数分の"*"で表すプログラムを書きなさい。出力の細かな形式は問わない。
input.txt: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5988.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C
[3.3] 言語:C
[4] 期限:2月6日
[5] その他の制限:
よろしくお願いします。
0941デフォルトの名無しさん
2008/02/04(月) 20:59:28学籍番号とメールアドレスの関連はどうなってるんだ?
それだけじゃ、苗字を入力して、下の名前を出力するプログラムって言うぐらい、意味不明だぞ。
どうやって作ったらいいのかサッパリ分からん。
学籍番号@yahoo.co.jpでいいのか?
0942デフォルトの名無しさん
2008/02/04(月) 21:03:06どう偏るの?
0943934
2008/02/04(月) 21:06:39入力された学籍番号@yahoo.co.jp
と、出力されるプログラムです。
ただし、学籍番号は7桁の自然数とし、これ以外の文字列が打ち込まれた時には
「学籍番号は7桁の数字で入力して下さい」と出力して、終了するプログラムとすること。
↑ここがどのようにプログラムしたらいいのか分からないのです。
0944デフォルトの名無しさん
2008/02/04(月) 21:10:33#include <stdio.h>
int main(void)
{
FILE *fp;
int i, j, a[11] = {0}, n;
if((fp=fopen("input.txt", "r"))==NULL) return 1;
while(fscanf(fp, "%d", &n)!=EOF) a[n/10]++;
for(i=0; i<11; i++) {
printf("%3d点台:", i*10);
for(j=0; j<a[i]; j++) putchar('*');
putchar('\n');
}
fclose(fp);
return 0;
}
0945デフォルトの名無しさん
2008/02/04(月) 21:11:47ttp://pc11.2ch.net/test/read.cgi/tech/1187944110/513
ttp://pc11.2ch.net/test/read.cgi/tech/1187944110/532
ttp://pc11.2ch.net/test/read.cgi/tech/1187944110/534
0946デフォルトの名無しさん
2008/02/04(月) 21:18:28( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5994.c
0947デフォルトの名無しさん
2008/02/04(月) 21:26:44単純化してhogeが3要素の場合を考えてみろ
この場合、rand()%3が三回計算されるから、これが完全な乱数だと近似すれば、27通りが均等な確率で出る
一方、3要素を並べ換える方法の数は3!=6通りで、27は6の倍数じゃないから、6通りが公平に出ることはありえない
0949デフォルトの名無しさん
2008/02/04(月) 22:26:19>>946
こんなに早くありがとうございました。
0950デフォルトの名無しさん
2008/02/04(月) 22:34:51#include<iostream>
using namespace std;
int main(void){
string s;
cout << "学生番号 : ";
cin >> s;
if(s.length() != 7){
cout << "7文字いれろぼけ" << endl;
return 1;
}
for(string::iterator si = s.begin(); si != s.end(); si++){
if(!isdigit(*si)){
cout << "数字以外いれんなぼけ" << endl;
return 1;
}
}
cout << s.c_str() << "@yahoo.co.jp" << endl;
return 0;
}
0951934
2008/02/04(月) 22:56:17ありがとうございます!
0952デフォルトの名無しさん
2008/02/04(月) 23:32:47C/C++の宿題を片付けます 104代目
http://pc11.2ch.net/test/read.cgi/tech/1202135539/
0954デフォルトの名無しさん
2008/02/05(火) 12:22:57moji[0〜i]で何種類の文字列があるか数える方法教えてください
例えばi=5だとして
moji[0]="abc"
moji[1]="bbb"
moji[2]="abcdbbb"
moji[3]="bbb"
moji[4]="abc"
なら答えは3種類です
0955デフォルトの名無しさん
2008/02/05(火) 12:39:17ここは宿題スレ。よって、スレ違い。
0956売国まるはん
2008/02/05(火) 13:11:47ネット工作会社がスレ荒らしをしてスレが機能停止します。
↓↓工作員の荒らしのやり方↓↓
2008/01/10(木)ID:iA54nBU50
■■■■マルハン総合スレッド 9■■■■http://money6.2ch.net/test/read.cgi/pachij/1187021165/783-784
【宮崎県都城市】パチ事情その�Ahttp://money6.2ch.net/test/read.cgi/pachij/1187189246/658-659
【山と川】宮崎県児湯付近PART1【自然イパーイ】http://money6.2ch.net/test/read.cgi/pachij/1188235164/471-472
【基地外が大暴れ4】エスパス日拓総合スレ【18発目】http://money6.2ch.net/test/read.cgi/pachij/1188885488/401-410
2008/01/13(日)ID:1HLcWzUK0
【基地外が大暴れ4】エスパス日拓総合スレ【18発目】http://money6.2ch.net/test/read.cgi/pachij/1188885488/461-462
■■■■マルハン総合スレッド 9■■■■http://money6.2ch.net/test/read.cgi/pachij/1187021165/809-810
【香川】パーラーグランドのスレ2【徳島】http://money6.2ch.net/test/read.cgi/pachij/1188315438/324
【延岡】宮崎県北情報PART3【日向】http://money6.2ch.net/test/read.cgi/pachij/1196865970/186
工作員に荒らされ機能停止したスレ
■■■■マルハン総合スレッド 9■■■■http://money6.2ch.net/test/read.cgi/pachij/1187021165/
【山崎】MPT渋谷パート9【シャネル】http://money6.2ch.net/test/read.cgi/pachij/1197771701
【基地外が大暴れ4】エスパス日拓総合スレ【18発目】http://money6.2ch.net/test/read.cgi/pachij/1188885488
MPT渋谷はマルハン・パチンコ・タワー渋谷の略です。
パチンコ産業は荒らすことでレスとレスの間を空けて読む気をなくさせたり
マネーロンダリング、さくら、ホルコン、遠隔、などの風評被害を最小限に抑えようとしてる。
新スレ→○○○マルハンパチンコタワー渋谷パート10○○○
★★★★★このスレの解説★★★★★を読んでみるとよく判る。
http://money6.2ch.net/test/read.cgi/pachij/1201304777/52-54
0957デフォルトの名無しさん
2008/02/05(火) 15:11:26[2] 問題文(含コード&リンク):与えられたデータに対して季節調整を行うプログラムを作成しなさい。
<調整法>
i年目、j月のデータを aij とする。
月平均 Mj
月平均の平均 M
調整のための指数 Sj = Mj / M
調整結果 aij / Sj
<input.text>
40.0 37.7 51.8 45.9 45.2 45.4 62.0 40.8 42.1 49.1 51.5 93.4
42.6 39.5 53.4 47.6 47.0 47.5 63.5 42.2 42.9 51.1 51.8 94.7
43.3 39.8 53.6 48.5 48.3 47.5 65.9 42.8 43.7 53.2 52.9 97.0
44.9 42.3 55.0 50.7 48.6 48.9 68.8 43.3 46.2 54.2 54.6 100.5
47.5 42.8 57.7 52.6 51.0 50.9 71.4 45.0 47.3 56.8 56.7 102.7
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語:C++
[4] 期限:2月7日
[5] その他の制限: 結果は、画面に表示してください。
よろしくお願いします!
0958デフォルトの名無しさん
2008/02/05(火) 15:17:10http://pc11.2ch.net/test/read.cgi/tech/1180856695/796-
0959デフォルトの名無しさん
2008/02/05(火) 15:22:47[2]問題文 整数yを入力すると、y×yの正方形を描くプログラム
ex)y=4のとき
・・・・
・ ・
・ ・
・・・・
y=1のときは
・
y=2のときは
・・
・・
でOK
[3]環境 Windows、C
[4]期限 2/6 9:30まで。なるべく早めにお願いします。
0960デフォルトの名無しさん
2008/02/05(火) 15:32:04#include <stdio.h>
int main()
{
int y;
scanf("%d", & y);
if (y >= 1) {
for (int xc = 0; xc < y; ++xc) {
printf(".");
}
printf("\n");
}
for (int yc = 0; yc < y - 2; ++yc) {
printf(".");
for (int xc = 0; xc < y - 2; ++xc) {
printf(" ");
}
printf(".\n");
}
if (y >= 2) {
for (int xc = 0; xc < y; ++xc) {
printf(".");
}
printf("\n");
}
return 0;
}
0961デフォルトの名無しさん
2008/02/05(火) 15:42:01#include <stdio.h>
int main()
{
int y, xc, yc;
scanf("%d", & y);
for (yc = 0; yc < y; ++yc) {
for (xc = 0; xc < y; ++xc) {
printf("%s", yc == 0 || yc == y - 1 || xc == 0 || xc == y - 1 ? "・" : " ");
}
putchar('\n');
}
return 0;
}
0962デフォルトの名無しさん
2008/02/05(火) 17:56:42ありがとうございました。
0963デフォルトの名無しさん
2008/02/05(火) 18:21:06[2] 問題文(含コード&リンク):
・時計の長針と短針がなす角を求めるプログラム
時刻 h時 m分 (24時間制、mは整数)において、時計の長針と短針がなす角θ(0°≦θ≦180°)
を計算するプログラムを書きなさい。
ただし、h、mを入力する部分、及びなす角θを計算する部分をそれぞれ関数化しなさい。
結果の出力はh、m、θが表示されていれば細かい様式は問わない。
ヒント:時計の長針は1時間で一周するということは、1分間あたり何度動くか。
同様に、時計の短針は12時間で一周するということは1時間当たり何度動くか。
また1分間あたり何度動くか。時計の長針は短針に比べて1分間にどれだけ多く動くか。
実行例
>clock.exe
input h:22
input m:0
22:00 (60.0°)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年2月6日12:00まで
[5] その他の制限: 制限は特にありません。よろしくお願い致します
0964デフォルトの名無しさん
2008/02/05(火) 19:04:08[2] 問題文(含コード&リンク):http://ip.tosp.co.jp/i.asp?I=cgenger
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語:C++
[4] 期限:2月9日
[5] その他の制限: 宜しくお願いします
0965デフォルトの名無しさん
2008/02/05(火) 20:04:22#include<stdio.h>
#include<math.h>
double calc_theta(int hour, int minute){
double degree_hour, degree_minute, theta;
degree_hour=(hour+minute/60.0)*30.0;
degree_minute=minute*6.0;
theta=fmod(degree_hour-degree_minute, 360.0);
if(theta<0.0) theta+=360.0;
if(theta>180.0) theta=360.0-theta;
return theta;
}
void get_value(int *pvalue, const char *message){
printf("%s", message);
scanf("%d", pvalue);
}
void get_hour(int *phour){
get_value(phour, "input h:");
}
void get_minute(int *pminute){
get_value(pminute, "input m:");
}
int main(void){
int hour, minute;
get_hour(&hour);
get_minute(&minute);
printf("\n%02d:%02d (%.1f°)\n", hour, minute, calc_theta(hour, minute));
return 0;
}
0966963
2008/02/05(火) 20:50:26宿題でこれだけがどうしても分からなかったので、
本当に助かりました。
コードを見て理解することができました。
ありがとうございました!
0967デフォルトの名無しさん
2008/02/05(火) 21:51:10[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6002.txt
このプログラムにより1つのxに対して100個の誤差を含んだyが求められるので
それぞれのxについて分散S=(1/100)*((yの平均値)-(yの値))を求めて
fprintf(fp2,"%lf\t%lf\n",x,S);を使ってtxtファイルに書き出す
[3] 環境
[3.1] Windows
[3.2] Visual Studio 2005
[3.3] 言語:C
[4] 期限:2月6日正午
問題文のプログラムに付け加える形でやってもらえるとありがたいです
時間短いですがどうかよろしくお願いします
0968デフォルトの名無しさん
2008/02/05(火) 22:54:270969967
2008/02/05(火) 23:10:36S=(1/100)*((yの平均値)-(yの値))^2 ですね
0970デフォルトの名無しさん
2008/02/05(火) 23:31:18void main()
{
double X[2];
int flag=0;
srand( (unsigned)time( NULL ) );
int i;
long double x,y, sum_y, sum_y2, s;
x=0;
FILE *fp1, *fp2;
fp1=fopen("file1.txt","w");
fp2 = fopen("file2.txt", "w");
for(x=0;x<=10;x++)
{
i=0;
sum_y = sum_y2 = 0;
while(i<100){
i=i+1;
y=x*x+AddError(&flag,X)*0.05;
sum_y+=y;
sum_y2 += pow(y, (long double)2.0);
fprintf(fp1,"%lf\t%lf\n",x,y);
}
s = -pow(sum_y, (long double)2.0)/10000 + sum_y2/100;
fprintf(fp2, "%lf\t%lf\n", x, s);
}
fclose(fp1);
fclose(fp2);
}
0971デフォルトの名無しさん
2008/02/05(火) 23:37:07std::set<std::string>(moji,moji+sizeof(moji)/sizeof(*moji)).size()
0972デフォルトの名無しさん
2008/02/06(水) 00:14:18[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6003.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio
[3.3] 言語: C
[4] 期限: 2月7日
[5] その他の制限: おねがいします。
0973デフォルトの名無しさん
2008/02/06(水) 06:51:28またその問題かいな。
0974デフォルトの名無しさん
2008/02/06(水) 07:31:03!!
もう誰かが質問してたってことですか! ぐへえ
0975デフォルトの名無しさん
2008/02/06(水) 09:25:24[1] 授業単元:C++
[2] 問題文
テトラナッチ数列の問題で。
初項と第2項は0、第3項は1の値となるが第n項(n>3)び値Tnは以下の式で
あらわせられる。
Tn=Tn-1+Tn-2+Tn-3
再起を利用した関数int tetra(int n)を作成しn=1から n=30までに各値を表示
させたい。以下の質問に答えよ
�@関数tetraを以下に記述せよ
�Amain関数を以下に記述せよ
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (borand5.5)
[3.3] 言語: (/C++/)
[4] 期限: 今日中
0976975
2008/02/06(水) 09:29:17上記プログラムを何回実行したかを確認したいときどこをどのように変更したらよいか答えなさい。
0977デフォルトの名無しさん
2008/02/06(水) 09:53:54#include <stdio.h>
int tetra(int n) {
if (n < 2)
return 0;
else if (n == 3)
return 1;
else
return tetra(n - 4) + tetra(n - 3) + tetra(n - 2) + tetra(n - 1);
}
int main() {
for (int i = 0; i <= 30; i++)
printf("T%d : %d\n", i, tetra(i));
return 0;
}
0978デフォルトの名無しさん
2008/02/06(水) 12:08:07一個増えてるwww
0979967
2008/02/06(水) 13:14:45こうじゃなくて、
ひとつのxについて
100個でてくるyの平均を出す
↓
100個のyについてそれぞれ平均との差を出して二乗をとる
↓
それを100個分足してΣが出るので、それを100で割って分散を求める
っていうのをそれぞれ1〜10について求めたいんですけれど・・・
0980デフォルトの名無しさん
2008/02/06(水) 13:49:321/100*Σ((E[y]^2-2E[y]y+y^2)=E[y]^2-2E[y](1/100)Σy+(1/100)Σ(y^2)
E[y]=(1/100)Σyだから
((1/100)Σy)^2-2((1/100)Σy)^2+(1/100)Σ(y^2)
=-((1/100)Σy)^2+(1/100)Σ(y^2)
だと思ったんだが,違ったのか
0981デフォルトの名無しさん
2008/02/06(水) 16:54:14N回分お得。
0982デフォルトの名無しさん
2008/02/06(水) 17:46:13[2] 問題文(含コード&リンク):課題作成 簡単なすごろく 20でゴール
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] Visual studio 2005 8
[3.3] 言語: (C++)
[4] 期限: 2月12日
最終課題ですごろくを作れと言われたのですが、基礎の基礎しか習ってないのでよくわかりません。
過去ログにあったプログラム例も試してみたのですが無理でした。
どなたかお願いします。
0983デフォルトの名無しさん
2008/02/06(水) 17:49:22GUI付き?
0984982
2008/02/06(水) 21:02:410985デフォルトの名無しさん
2008/02/06(水) 22:15:05「第6回 万年カレンダー(2)
キーボードから年と月を入力し、その月のカレンダーを表示する。 」
#include <stdio.h>
int is_bissextile(int year)
{
/*
閏年かどうか判定する関数
閏年なら1,そうでなければ0を返す
*/
int bis;
if((year % 400) == 0 || ((year % 4) == 0 && (year % 100) != 0)){
bis = 1;
}
else {
bis = 0;
}
/* 下のような書き方も可能
bis = ( year % 400 == 0 || (year % 4 == 0 && year % 100 != 0));
*/
1日の曜日を計算する)
0986デフォルトの名無しさん
2008/02/06(水) 22:16:352月1日が金曜日であることがわかっているものとする
(課題では,前回のプログラムを使って1日の曜日を計算する)
*/
int year = 2008;
int month = 2;
int first_dow = 5; /* 1日は金曜日 */
int i;
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(is_bissextile(year)) { /* 閏年なら,2月を29日までにする */
days[1] = 29;
}
printf(" %d年%2d月\n", year, month);
printf("日 月 火 水 木 金 土\n");
0987デフォルトの名無しさん
2008/02/06(水) 22:26:58printf(" "); /* 最初の曜日の,1日の前の空白 */
}
for(i=1; i<days[month-1]+1; i++){
printf("%2d ", i); /* 数字二桁と,二つの空白 */
if((first_dow + i) % 7 == 0){
printf("\n"); /* 土曜日になったら,改行 */
}
}
/*
最終日が土曜日以外だったら,最後に改行を入れる
土曜日の場合は,既に入っているので入れない
*/
if((first_dow + i)%7!=1) printf("\n");
}
0988デフォルトの名無しさん
2008/02/06(水) 22:52:24わかりづれーなww
>>985と>>986の間に
return bis;
}
int main(void){
を追加すればいいだけじゃないのか?
0989デフォルトの名無しさん
2008/02/07(木) 10:56:35[2] 問題文(含コード&リンク):課題1:キーボードから文字列を入力し、その内容をファイルに保存するプログラムを作成しなさい。
なお、文字列の最大長は256バイトとし、プログラムの終了条件は、文字データの入力がないときとする。
課題2:課題1で作成されたファイルを読み込み、画面に表示するプログラムを作成しなさい。
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] Visual studio 2005
[3.3] 言語:C
[4] 期限: 2月14日
課題が2つもありますがどうかよろしくお願いします
0990デフォルトの名無しさん
2008/02/07(木) 10:59:200991デフォルトの名無しさん
2008/02/07(木) 11:41:11ごめんなさいちょっとミスしましたw
えっと、この日本語を全てプログラムにしないとダメなのですが、分からないんです
http://jbbs.livedoor.jp/bbs/read.cgi/game/33978/1163833286/313n-
問題こちらです、よろしくお願いします。
0992デフォルトの名無しさん
2008/02/07(木) 11:42:11特定したwwwwww
0993デフォルトの名無しさん
2008/02/07(木) 11:43:370994デフォルトの名無しさん
2008/02/07(木) 12:00:44初心者ですが作ってみました。
//課題1
#include <stdio.h>
#include <string.h>
#define CHARMAX 256
int main(void)
{
int i=0;
char str[CHARMAX];
FILE *fp=fopen("data.txt","w");
if(!fp) return 1;
do{
fgets(str, CHARMAX, stdin);
i += int(strlen(str));
if(i > CHARMAX){
printf("入力文字数オーバー");
break;
}
fputs(str, fp);
}while(str[0]!='\n');
return 0;
}
0995デフォルトの名無しさん
2008/02/07(木) 12:01:04#include <stdio.h>
#define CHARMAX 256
int main(void)
{
char str[256];
FILE *fp=fopen("data.txt", "r");
if(!fp) return 1;
while(!feof(fp)){
fgets(str, CHARMAX, fp);
printf("%s", str);
}
return 0;
}
0996デフォルトの名無しさん
2008/02/07(木) 13:14:20こんなんでいいんでしょうか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6014.txt
0997デフォルトの名無しさん
2008/02/07(木) 13:34:05問題の解釈違いかも知れんが、入力制限はトータルではなくて毎回個別でいいんじゃないか?
それなら、fgets()任せで済むことだし。
0998デフォルトの名無しさん
2008/02/07(木) 13:39:15ああ、確かに文字列一個当たりの最大値っぽいですね。
指摘ありがとうございます。
//課題1
#include <stdio.h>
#define CHARMAX 256
int main(void)
{
char str[CHARMAX];
FILE *fp=fopen("data.txt","w");
if(!fp) return 1;
do{
fgets(str, CHARMAX, stdin);
fputs(str, fp);
}while(str[0]!='\n');
return 0;
}
課題2は同じで大丈夫ぽいかな。
0999デフォルトの名無しさん
2008/02/07(木) 13:47:221000デフォルトの名無しさん
2008/02/07(木) 13:48:0210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。