C/C++の宿題を片付けます 76代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/06(月) 09:04:35【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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
【前スレ】
C/C++の宿題を片付けます 75代目
http://pc8.2ch.net/test/read.cgi/tech/1161257941/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0412デフォルトの名無しさん
2006/11/12(日) 19:20:57ごめんなさい。私には理解できませんでした。。。先生いわく、すべてのhtml
を変換するのは大変なので、今回は使われているのだけを変換できれば
いいそうです。
0413デフォルトの名無しさん
2006/11/12(日) 19:52:47>408 を改造してみる。
#include<stdio.h>
int main(){
int i;
for(i=0;i<12;i++){
printf("%3d ",i/4+(i%4)*3+1);
if(i%4==3){ printf("\n"); }
}
return(0);
}
0414デフォルトの名無しさん
2006/11/12(日) 19:53:54ありがとうございます!なんとかなりそうです!
0415デフォルトの名無しさん
2006/11/12(日) 20:14:000416デフォルトの名無しさん
2006/11/12(日) 20:35:56[2] 問題文(含コード&リンク):
キーボードから重複を許して与えられるN個のint型の値の中で、2番目に大きな値を印字するプログラムを作成せよ。そのような値がない場合は「なし」と印字。データの個数N(≧1)はマクロNで与えられるものとする。値は一度に1つずつ入力されるものとする。
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: c
[4] 期限: 2006年11月14日まで
[5] 四則演算、繰り返し、配列ぐらいしかやっていません。
配列の分野の問題です。
0417デフォルトの名無しさん
2006/11/12(日) 21:16:280418デフォルトの名無しさん
2006/11/12(日) 21:57:35struct data
{
char d1[128];
char d2[64];
char d3[32];
char d4[64];
}
この内容をcvsファイルとして出力したのちに、ファイルから読み込みたいのですが…。
一文字ずつfgetsしてカンマを判定して処理するしかないですか?
0419デフォルトの名無しさん
2006/11/12(日) 22:11:50「"」で囲われた「,」は区切りではない等といったメタな処理が無ければ、
fgets() で一行読み込んで sscanf() で解析するのが定石。
0420デフォルトの名無しさん
2006/11/12(日) 22:28:032番目に大きい値がないとはどういう状態だ?
0421416 ◆nZ5tHzSn6E
2006/11/12(日) 22:33:32>>420
例えば
5 5 5 5
(全て同じ値)
とか
4
(値が1つしかない)
といった感じです。
0422デフォルトの名無しさん
2006/11/12(日) 22:53:08エラー処理とかやってないけど、これでどうですか?
data d = {"test","test2","test3","test4"};
fstream f("test.txt", ios::out);
f << d.d1 << ',' << d.d2 << ',' << d.d3 << ',' << d.d4;
f.close();
string s = "";
char buf[128];
f.open("test.txt", ios::in);
while(f.getline(buf, sizeof(buf), ',')){ s += buf; }
f.close();
cout << s << endl;
0423デフォルトの名無しさん
2006/11/12(日) 23:16:41#include <stdio.h>
#include <limits.h>
#define N 10
main(){
int atai[N];
int tmpmax=INT_MIN,tmpnibanme=INT_MIN;
printf("今から%d個の数値を入力してもらいます\n%dを入力したらころします",N,INT_MIN);
for(i=0;i<N;i++){
printf("%d番目の値を入力してください",i+1);
scanf("%d",&atai[i]);
}
for(i=0;i<N;i++){
if(atai[i]>tmpmax){
tmpnibanme=tmpmax;
tmpmax=atai[i];
}
else if(atai[i]>tmpnibanme) tmpnibanme=atai[i];
}
if tmpnibanme>INT_MIN printf("多分%d",tmpnibanme);
else
printf("なし");
}
0424デフォルトの名無しさん
2006/11/12(日) 23:33:28x=-2*log(1-get_uniform_rand());
0425406
2006/11/12(日) 23:33:37かんがえますから
どなたか、配列の中からある文字列に合致するのを選んで処理する方法だけでも
教えていただけないでしょうか?
例えば次のように
it is my pen という文字列が入った配列strからitをthisにmyをyourに変えて
strに入れなおす。みたいな感じで
0426デフォルトの名無しさん
2006/11/12(日) 23:40:58yacc とか bison について調べてみては?
0427416 ◆nZ5tHzSn6E
2006/11/12(日) 23:49:56ありがとうございます。
#include <limits.h>は習ってませんが、参考にさせていただきます。
0428デフォルトの名無しさん
2006/11/12(日) 23:56:02<limits.h>はただのマクロなんで深く考えずに使っていいと思う
後int tmpmax=INT_MIN,tmpnibanme=INT_MIN; を
long型にしてLONG_MINにすれば実行した人をころさずにすむ
0429406
2006/11/13(月) 00:05:44を習っていて少し行き詰っています。なにか良い参考書はありませんでしょうか?
0430デフォルトの名無しさん
2006/11/13(月) 00:06:23[2] 問題文(含コード&リンク):1から100までの素数の和を求めるプログラムを書け。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:lcc-win32
[3.3] 言語:C
検索してみましたが、答えが見つからないのでねがいします。
0431デフォルトの名無しさん
2006/11/13(月) 00:09:50このスレを素数で検索
0432デフォルトの名無しさん
2006/11/13(月) 00:31:14問題が少し違うので、どこをどう変えれば1から100までの素数の和になるか教えていただきたいです。お願いします。
0433デフォルトの名無しさん
2006/11/13(月) 00:39:12[2]
src[] 内の文字が大文字の場合は小文字にして (それ以外の文字はそのまま) dst[] にコピーする関数 str_lcopy(char dst[], char src[]) を作成せよ.
下のような main でこの関数の動作をテストせよ. str_lcopy が src の値を書き換えてならないことに注意. "This is the 21st Century!" を入力して,
src: This is the 21st Century!
dst: this is the 21st century!
力される (dst は正しく変換されるが, src が書き変わっていない) ことを確認せよ.
int main ( void )
{
char src[128], dst[128];
printf("文字列を入力して下さい >> ");
gets(src);
str_lcopy(dst, src);
printf("src: %s\n", src);
printf("dst: %s\n", dst);
return 0;
}
[3]
[3.1] winXP sp2
[3.2] cygwin
[3.3] C
[4] 2006年11月14日火曜
[5] 自力で3時間考えても手に負えませんでした。お願いします。
0434デフォルトの名無しさん
2006/11/13(月) 00:47:34#include <stdio.h>
int main(void) {
int i, j, s = 0;
for (i = 2; i <= 100; i++) {
for (j = 2; j <= i; j++) if (i % j == 0) break;
if (i == j) s += i;
}
printf("%d\n", s);
return 0;
}
0435デフォルトの名無しさん
2006/11/13(月) 00:51:40ありがとうございます。すごく助かりました。
0436デフォルトの名無しさん
2006/11/13(月) 00:56:11まあコピペしか能が無いんだから仕方ないか
0437434
2006/11/13(月) 00:57:32一応そこまで配慮したつもり。
>>433
#include <stdio.h>
#include <ctype.h>
void str_lcopy(char dst[], char src[]) {
char *d = dst, *s = src;
while ((*d++ = tolower(*s++)) != '\0') {}
}
int main (void) {
char src[128], dst[128];
printf("文字列を入力して下さい >> ");
gets(src);
str_lcopy(dst, src);
printf("src: %s\n", src);
printf("dst: %s\n", dst);
return 0;
}
0438デフォルトの名無しさん
2006/11/13(月) 01:11:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2929.txt
多分これでいいと思うけど適当に直して下さい。
ビンの個数を変えるには、#define NBIN の所の数字を変えればいいです。
0439デフォルトの名無しさん
2006/11/13(月) 01:14:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2930.txt
すまん一ヶ所間違っていたので直した。結果は同じなんだけどね。
間違ってる答えは紛らわしいので削除しといた。
0440デフォルトの名無しさん
2006/11/13(月) 01:19:04[2] 問題文:2進数で入力されたものを10進数で表示
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:火曜日の朝6時
0441デフォルトの名無しさん
2006/11/13(月) 01:28:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2931.txt
何度もスマネ
xが範囲外の時もsumとsum2に足していたので、hist[]がや平均や分散が
おかしくなっていたので再度修正。
悪いね
0442デフォルトの名無しさん
2006/11/13(月) 01:33:29すいません、正常に動作したのですが
意味が理解できませんでした。
関数の内容をcharとか使う下に書いたみたいな感じのでお願いできないでしょうか?
if(src >= 'A' && src <= 'Z')
{
diff = 'A'-'a';
s = src - diff;
printf("%c",s);
}
ちなみにこういう感じのを定義もつけて放り込んだらまともに動作しませんでした。
0443デフォルトの名無しさん
2006/11/13(月) 02:19:00[2] 問題文(含コード&リンク):小さいほうから100番目までの素数の和をもとめよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
このスレはすべてみて、似た問題の答えからこの問題の答えを出そうとしましたが、できなかったのでお願いします。
0444デフォルトの名無しさん
2006/11/13(月) 02:25:59# include <stdio.h>
int isprime(int n)
{
int i;
for(i = 2; i < n; i++)
if(n % i == 0)
return 0;
return 1;
}
int main(void)
{
int sum = 0;
int n = 2;
int count = 0;
while(count < 100)
{
if(isprime(n))
{
sum += n;
count++;
}
n++;
}
printf("%d\n", sum);
return 0;
}
0445デフォルトの名無しさん
2006/11/13(月) 02:26:26>>443
#include <stdio.h>
int main(void) {
int i, j, k = 0, s = 0;
for (i = 2; k <= 100; i++) {
for (j = 2; j <= i; j++) if (i % j == 0) break;
if (i == j) {s += i;k++}
}
printf("%d\n", s);
return 0;
}
0446デフォルトの名無しさん
2006/11/13(月) 02:27:190447387
2006/11/13(月) 02:33:10プログラムで探索をする方向で考えます。
0448デフォルトの名無しさん
2006/11/13(月) 03:02:39#include<stdio.h>
#include<stdlib.h>
int main(){
char *s;
int count,i,n;
while(get(s)!EOF) count ++;
n=count-1;
for (i=0;i<n-1;i++){
sum=2^i*(*s);
s++;
};
printf("answer=%d",sum);
return 0;
}
0449デフォルトの名無しさん
2006/11/13(月) 04:34:46[3.1] Windows
[3.2] Borland C++ 5.5.1 for Win32
[3.3] C
[4] 明後日
char Q(char "
void f(doubl *, 〜〜);
と定義された関数に
double a[4][5];
を
f(a, 〜);
と渡したが「問題のあるポインタの変換」と出るので
f(*a, 〜);
と渡したところ正常に動作。
配列の場合"a"はa[0][0]のアドレスを渡せるのでは…?
*aではa[0][0]の中身を渡してしまいそうなのに何故正常に動くのでしょうか…。
")
0450デフォルトの名無しさん
2006/11/13(月) 04:54:19double (*a)[5] としないとだめだろう?
0451デフォルトの名無しさん
2006/11/13(月) 05:03:48ポインタの深さが違うからエラーがでたんだよー。
0452デフォルトの名無しさん
2006/11/13(月) 05:09:58それに変えてみたらWinXPがエラー吐いて止まった件
0453デフォルトの名無しさん
2006/11/13(月) 05:20:00お前もう一回よく調べてみ。いい加減な事を書くなカス。
0454デフォルトの名無しさん
2006/11/13(月) 05:34:00そういわれても…。
double a[4][5];
を
double (*a)[5];
としたけれどaにscanfから数値を入れると強制終了する…。
0455デフォルトの名無しさん
2006/11/13(月) 05:50:06だからscanf()周りを調べろって。自分の思い込みだけで書くな。
0456デフォルトの名無しさん
2006/11/13(月) 05:53:080457デフォルトの名無しさん
2006/11/13(月) 05:55:27こう書いてあるけど…。
他に何かミスってる可能性ある…?
0458デフォルトの名無しさん
2006/11/13(月) 07:06:110459デフォルトの名無しさん
2006/11/13(月) 08:32:17おいおい、そんな驚き方したら(w
自 分 が エ ス パ ー じ ゃ な い っ て バ レ て し ま う だ ろ ?
0460デフォルトの名無しさん
2006/11/13(月) 09:43:19呼び出された関数側では二次元配列の大きさを知ることはできない。
明示的に示すには、関数の最初を変更しないといけない。
void f(double *, 〜〜);
↓
void f(double [][5], 〜〜);
0461デフォルトの名無しさん
2006/11/13(月) 11:17:14[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):x と y の数値の対を読み込むことを繰り返し、
それぞれの和を出力するプログラムを作れ。ただし,和の計算部分には、
2数の和を計算する関数を作って、それを呼び出すこと。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2006年11月14日
0462デフォルトの名無しさん
2006/11/13(月) 11:37:28#include <stdio.h>
double mysum(double x, double y){
return x+y;
}
main(){
double x, y;
while(1){
scanf("%lf",&x);
scanf("%lf",&y);
printf("%f",sum(x,y));
}
}
0463デフォルトの名無しさん
2006/11/13(月) 11:39:21printf("%f",mysum(x,y));
0464デフォルトの名無しさん
2006/11/13(月) 12:09:09それを使うことが前提なら次は最初から書いてね。ちなみにtolower()は、小文字にできるものは
その小文字を、その他の文字はそのままを返す関数(マクロの可能性もある)で、ctype.hに宣言
されている。
#include <stdio.h>
#include <ctype.h>
void str_lcopy(char dst[], char src[]) {
char *d = dst, *s = src;
while (*s != '\0') {
if (*s >= 'A' && *s <= 'Z') {
*d++ = *s++ - ('A'-'a');
} else {
*d++ = *s++;
}
}
*d = '\0';
}
int main (void) {
char src[128], dst[128];
printf("文字列を入力して下さい >> ");
gets(src);
str_lcopy(dst, src);
printf("src: %s\n", src);
printf("dst: %s\n", dst);
return 0;
}
0465デフォルトの名無しさん
2006/11/13(月) 13:35:23yasashii na...
0466デフォルトの名無しさん
2006/11/13(月) 14:05:08[2] 問題文:
配列に格納されたデータをソートするプログラムを作成するにあたり、
以下の機能を持つ関数を作成しなさい。
・乱数を生成し配列要素に格納する
init_array(int *pa, int n)
・配列要素を1行で画面に出力する
output_array(int *pa, int n)
・指定された2つアドレスのデータを交換する
swap(int *x, int *y)
[3.1] OS: windws xp [3.2] visual studio 2003 [3.3] 言語: C
[4] 期限: 11月16日
[5] その他の制限: 反復構造、ソート、探索、ポインタ、ファイル、構造体
よろしくお願いします。
0467デフォルトの名無しさん
2006/11/13(月) 14:05:18#include <math.h>
main(){
double x,y;
scanf("%d",&x);
y=log(x)/log(2);
printf("%f",y);
}
というプログラムにすると
/tmp/ccIE035m.o(.text+0x2e): In function `main':
: undefined reference to `log'
/tmp/ccIE035m.o(.text+0x48): In function `main':
: undefined reference to `log'
collect2: ld はステータス 1 で終了しました
というエラーがでます。何が間違っているんでしょうか?
0468デフォルトの名無しさん
2006/11/13(月) 14:19:07数学関数ライブラリがリンクされていない。
たぶんgccに-lmを渡せば良い。
0469デフォルトの名無しさん
2006/11/13(月) 14:20:35後scanfを
scanf("%lf",&x);
にしておいて
0470デフォルトの名無しさん
2006/11/13(月) 14:28:21[1] 授業単元:情報処理�U
[2] 問題文(含コード&リンク):2を底とするlogを計算するプログラムを作成しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年11月10日まで
[5] その他の制限:なし
お願いします。
なんで今ごろバグ取りしてるんだぜ?
0471デフォルトの名無しさん
2006/11/13(月) 16:20:13#include <stdio.h>
#include <stdlib.h>
void init_array(int* pa, int n){
for(; n!=0; n--)
pa[n-1] = rand();
}
void output_array(int* pa, int n){
for(; n!=0; n--)
printf("%d ", *pa++);
}
void swap(int* x, int* y){
_asm{
mov ecx, x
mov edx, y
xchg eax, [ecx]
xchg eax, [edx]
xchg eax, [ecx]
}
}
0472デフォルトの名無しさん
2006/11/13(月) 18:30:52ヒント: maxmin
0473デフォルトの名無しさん
2006/11/13(月) 18:38:480474デフォルトの名無しさん
2006/11/13(月) 18:57:28…
0475デフォルトの名無しさん
2006/11/13(月) 19:02:17Minimaxでは?
0476デフォルトの名無しさん
2006/11/13(月) 19:05:01#include<stdio.h>
#include<stdlib.h>
int main(void){
char buf[256];
long number=0L;
int i;
scanf("%s", buf);
for(i=0;buf[i]!='\0';i++){
if(buf[i]!='0' && buf[i]!='1'){
fprintf(stderr, "%s not binary.\n", buf);
exit(1);
}
number=(number<<1)|(buf[i]=='1');
}
printf("%ld\n", number);
return 0;
}
0477デフォルトの名無しさん
2006/11/13(月) 19:08:040478392
2006/11/13(月) 19:22:590479デフォルトの名無しさん
2006/11/13(月) 19:32:35if(turn == CIRCLE && human == CIRCLE || turn == CROSS && human == CROSS)
0480デフォルトの名無しさん
2006/11/13(月) 19:45:470481デフォルトの名無しさん
2006/11/13(月) 20:09:07ありがとうございます、whileは思いつきませんでした。
0482デフォルトの名無しさん
2006/11/13(月) 20:21:14[2] 問題文(含コード&リンク):
C言語のプログラムにより、端末の画面をうまく利用した
ゲーム等を2週間の間にグループ(3人または2人)で考案すること。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: cc
[3.3] 言語: C
[4] 期限:11月15まで
[5] その他の制限: VT100制御コードというのを使って画面消去やカーソル移動をさせないといけないらしいです。
3年間プログラミングを習いましたが、基礎的なことしか分かりませんorz
それなのにいきなりの大きな課題・・まったく手がつかず放置状態です
作りたいゲームがいろんなチームとかぶっているので、私のチームは一人神経衰弱を作ることになったんですが、
私がまかせられっきりで班員が手伝おうとしてくれません(というか、唯一普通にプログラミングができるのが私だけみたいです。汗)
乱数を発生させて(?)毎回遊べるようにしたいのですが。。
どうか一番簡単なプログラムでいいので考えてもらえると助かります(TT)色々な課題と重なっていてかなりせっぱつまってます・・
0483デフォルトの名無しさん
2006/11/13(月) 20:26:30エスケープシーケンスのことでいいのかな?
void clear_screen(void){
printf("\x1b[2J"); // 画面を消去する
}
void locate(int x, int y){
printf("\x1b[%d;%dH", y+1, x+1); // 現在のカーソル位置を変更する
}
0484デフォルトの名無しさん
2006/11/13(月) 20:29:05一人で延々とめくるのか?それともコンピュータと対戦?
0485デフォルトの名無しさん
2006/11/13(月) 20:30:12乱数を使う方法かぁ・・・srand()とtime()あたり。
班員が動いてくれないのをどーにかする方法は、あんたが動かなければいい。
0486482
2006/11/13(月) 20:33:45ごめんなさい、1週間前から色々なプログラム見たり、前を振り返ったり先輩に聞いたりしたのですが
どうしても1から作ることができなくてorz
0487482
2006/11/13(月) 20:36:27【参考資料】
●VT100制御コード カーソル移動 画面消去
** vt100.c **
#include <stdio.h>
main()
{
int x,y;
char moji[10];
x=1; y=3;
printf("\033[2J");
printf("\033[9;30HK");
printf("\033[9;31Ha");
printf("\033[9;32Hz");
printf("\033[9;33Hu");
printf("\033[11;30H%1d",x+3);
printf("\033[11;31H%1d",y+5);
printf("\033[13;30H?? ");
printf("%c\n",getchar());
}
0488デフォルトの名無しさん
2006/11/13(月) 20:40:11long number=OL;
number=(number<<1)|buf[i]=='1');
の意味が分かりません。
0489デフォルトの名無しさん
2006/11/13(月) 20:43:18ジャンケンでいいじゃん
0490デフォルトの名無しさん
2006/11/13(月) 20:47:083年間プログラミングを習って、普通にプログラミングができるなら余裕だろ。
int cards[4][13]; // トランプなら1〜13?
int state[4][13]; // 表か裏か
for(i=0;i<4;i+=2) {
for(j=0;j<13;j++) {
cards[i][j] = cards[i+1][j] = rand()%13;
state[i][j] = state[i+1][j] = 0; // 裏
}
}
// カードをシャッフル
int cnt = 0;
while(1) {
int f = 1;
// 表示
while(f) {
// cnt++;
// 入力(1枚目)
// 表にする
// 表示
// 入力(2枚目)
// 表にする
if(同じカードじゃなかったら) {
2枚のカードを裏返す
f = 0;
}
}
if(カードが全部表になったら) break;
}
途中で力尽きた
0491デフォルトの名無しさん
2006/11/13(月) 20:51:28まー・・・マイコンBASICマガジンのバックナンバーでも読んで、移植に励んでくれ。
80年代のなら、短いのもあるだろう。
0492デフォルトの名無しさん
2006/11/13(月) 20:58:21とりあえず「文字を正確に読む」という能力を身に付ければいいんじゃないかな
0493デフォルトの名無しさん
2006/11/13(月) 21:00:51>>482
一応やってみるが、途中で投げ出すかも知れんので保険を用意しておいてくれ。
0494482
2006/11/13(月) 21:04:11すっごい助かります><
まだ、期限延ばしてもらえるかもしれないので大丈夫です!
0495デフォルトの名無しさん
2006/11/13(月) 21:10:09>long number=OL;
よく読め
>number=(number<<1)|buf[i]=='1');
number=(number<<1)|(buf[i]=='1');
だよく読め
分からないならnumber=number*2+(buf[i]=='1');
0496デフォルトの名無しさん
2006/11/13(月) 21:30:38出来そうなのは解いてみる。
0497デフォルトの名無しさん
2006/11/13(月) 21:45:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2932.c
1.カードの初期化
2.カードの表示
まで
0498デフォルトの名無しさん
2006/11/13(月) 23:58:02[2] 問題文(含コード&リンク):
トランプを切る方法の一つとして、トランプを2つに分けて両手でばらばらと切る方法がある。
今、トランプは、ジョーカを除いた52枚とする。もし、切り方のうまい人がいて、
トランプを正しく半分(26枚)にして、かつ交互に1枚ずつ切れるとする。
この方法では、何回か行うと元に戻ることが知られている。さて、何回で元に戻るであろうか。
これを計算するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: visual stdio 2005
[3.3] 言語:C++
[4] 期限:2006年11月20日まで
[5] その他の制限:プログラムの説明もお願いします。
長くてごめんなさい
0499デフォルトの名無しさん
2006/11/14(火) 00:02:01次のプログラムを参考にせよ。
#include<stdio.h>
#define N 52 /* トランプの枚数 */
#define M (N/2) /* その半分の数 */
int main( void )
{
int k;
int cards[ N ]; /* トランプ */
int temp[ N ]; /* 一時的にトランプの札を移動 */
int count = 0; /* 切った回数 */
/* トランプをセット */
for( k=0; k<N; k++ )
cards[ k ] = k+1;
while( 1 ) /* 無限ループ */
{
count++; /* 回数を一回増分 */
temp ← cardsを2つに分けてぱらぱらと切ったものをひとつにしたもの
temp が元に戻っていたら終了(breakする)
cards ← temp
}
printf( "%d 回目で元に戻る", count );
return 0;
}
0500デフォルトの名無しさん
2006/11/14(火) 00:03:12↓↓tempが元に戻っていることの判定法↓↓
https://weblec.kanagawa-u.ac.jp/weblec6/Web/HTML/Th_49/Resume/File_215.ppt
↓↓cardsを2つに分けてぱらぱらと切ったものをひとつにしたもの↓↓
j = 0;
for( i=0; i<M; i++ )
{
temp[ j ] = cards[ i ];
temp[ j ] = cards[ M + i ];
j += 2;
}
0501デフォルトの名無しさん
2006/11/14(火) 03:02:05[2] 問題文(含コード&リンク):
10等分法のアルゴリズムを作成し、x^3-10=0の解を求めるプログラムを作成せよ
なお、許容誤差を10^-7 とし、区間幅が10^-7 を下回ったところで計算を打ち切ること
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: C
[4] 期限: 2006年11月15日午前中まで
[5] その他の制限: while文を使っての作成お願いします
0502482
2006/11/14(火) 05:24:27あぁ、ありがとうございます!
よければ続きもお願いします・・;;
0503デフォルトの名無しさん
2006/11/14(火) 06:52:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2933.c
あまりに操作しにくいので、# define USE_TERMIOSのコメントアウトを外すと、
非標準のライブラリを使っていちいちエンターキーで確定せずに使えるようにした。
0504デフォルトの名無しさん
2006/11/14(火) 13:48:11[2] 問題文(含コード&リンク): キーボードから1以上の整数n を入力し、(i=1からn番目までのi^2を求めるΣ) を計算して結果を画面表示するプログラムを
作成しなさい.ただし,1 未満の整数が入力された場合には再入力ができるように,1 以上の整
数が入力されるまで「scanf()」を繰り返すこととし,計算部分は再帰的プログラムとして作成す
ること.また,この関数のプロトタイプは「int square_sum(int)」とする.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:11月15日まで
[5] その他の制限: なし
お願いします。
0505デフォルトの名無しさん
2006/11/14(火) 14:01:29やる気ない奴らは何もしなかっただけだが、ここに丸投げするのは不正だもんな。
まあ、分からなかった部分の参考にするのはアリだろうけど。
0506デフォルトの名無しさん
2006/11/14(火) 14:48:36そんなことをこのスレで言われても。
問題がとければそれで良し、後は依頼者が何をしようが関知しない、というのでは駄目なのか?
0507デフォルトの名無しさん
2006/11/14(火) 15:56:09n×nのサイズで螺旋状に0から(n二乗ー1)までの数が並ぶ行列を作成し、
画面に表示させるプログラムって配列を使って組むにはどうすればいいでしょうか?
ヒントだけでもいいので教えてください。お願いします。
0508デフォルトの名無しさん
2006/11/14(火) 16:11:04int square_sum(int n)
{
return n * (2 * n + 1)*(n + 1)/6;
}
int main()
{
int n = 0, sum;
while(n < 1){
puts("第何項まで?(1以上) =");
scanf("%d", &n);
}
printf("数列iの2乗の%d番目を含む総和は%d \n", n, square_sum(n));
return 0;
}
0509デフォルトの名無しさん
2006/11/14(火) 16:18:17#include<stdio.h>
int main(void){
int a, b;
int c[100][100]
printf("please input! n = ");
scanf("%d\n",a);
0510デフォルトの名無しさん
2006/11/14(火) 16:27:39int square_sum(int n)
{
if (n < 1) return 0;
return (n + 1) * n / 2 + square_sum(0);
}
0511デフォルトの名無しさん
2006/11/14(火) 16:35:05外側から埋めてけば?
■ このスレッドは過去ログ倉庫に格納されています