C/C++の宿題を片付けます 113代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/07/14(月) 06:56:18【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 112代目
http://pc11.2ch.net/test/read.cgi/tech/1215439445/
0153115
2008/07/15(火) 14:42:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7381.txt
0154デフォルトの名無しさん
2008/07/15(火) 14:45:19やさしいね
0155デフォルトの名無しさん
2008/07/15(火) 14:46:32こういう題材じゃなければぶっちしてるw
0156デフォルトの名無しさん
2008/07/15(火) 15:13:59ありがとうございます!できました。
最後に今までのをユーザー関数群でまとめたいのですが、
どうすれば良いでしょう?
0157115
2008/07/15(火) 15:18:03クラスになってるからユーザー関数にするような箇所がないかも?
大半の機能はelライブラリでやってるし・・・
C++得意な方よろしこorz
0158デフォルトの名無しさん
2008/07/15(火) 15:23:14一度自分で完成させたソースを上げて、見てもらったほうがいいよ。
0159デフォルトの名無しさん
2008/07/15(火) 15:33:00C
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7377.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7378.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7379.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Microsoft Visual Studio 2008
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
基本ソートのcity.txtは問題文の一番下です。
お願いします。
0160デフォルトの名無しさん
2008/07/15(火) 15:35:53分かりました。
その前に自機と敵を下のに変えるには、
どこをどのように変更すれば良いのですか?
自機
http://www.dotup.org/uploda/www.dotup.org5804.bmp.html
敵
http://www.dotup.org/uploda/www.dotup.org5806.bmp.html
今までのソース
http://www.dotup.org/uploda/www.dotup.org5816.cpp.html
0161デフォルトの名無しさん
2008/07/15(火) 15:36:46#include <stdio.h>
int main(void) {
int m1=0, m2=0, n;
while( scanf("%d",&n) ) {
if(n == 0) break;
if(n%2 == 1) continue;
/*
* if(n==m1) continue;
* if(n >m2) m2=n;
* if(m1<m2) swap(&m1, &m2); */
if(n>m2) {
if(n>m1) { m2=m1; m1=n;}
else if(n==m1) ;
else m2=n;
}
}
printf("%d \n",m2);
return 0;
}
0162デフォルトの名無しさん
2008/07/15(火) 15:39:39#include <iostream>
int main(void){
double k;
int g;
std::cout << "気温を入力:";
std::cin >> k;
g = k / 2.5;
g += g % 2;
g = g / 2 * 5;
std::cout << "気温は約" << g << "℃です。" << std::endl;
return 0;
}
0163115
2008/07/15(火) 15:42:52その敵のほうのさ、白いのっていまどきマスクパターンっていわないよねw
あくまで敵が何か発動中はその白塗りになると思っていいよね?
0164デフォルトの名無しさん
2008/07/15(火) 15:47:31はい。そうです。
0165デフォルトの名無しさん
2008/07/15(火) 15:48:50跳ね返りの時、白く点滅できれば…。
0166デフォルトの名無しさん
2008/07/15(火) 15:52:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7382.txt
指摘のあった、一番大きい値が2回入力された場合に対処してみた。
0167デフォルトの名無しさん
2008/07/15(火) 15:58:04適当に
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7383.cpp
0168161
2008/07/15(火) 16:01:520170デフォルトの名無しさん
2008/07/15(火) 16:07:23#include <iostream>
int main(void){
int count[11];
int n;
for(int i = 0;i < 11;i++) count[i] = 0;
while(1){
std::cout << "点数入力:";
std::cin >> n;
if(n == -1) break;
if(0 <= n && n <= 100) count[n/10]++;
}
for(int i = 0;i < 10;i++){
std::cout << std::endl << i * 10 << "〜" << i * 10 + 9 << "(" << count[i] << "名)\t|";
while(count[i]-- > 0) std::cout << "*";
}
std::cout << std::endl << "100(" << count[10] << "名)\t|";
while(count[10]-- > 0) std::cout << "*";
return 0;
}
0171デフォルトの名無しさん
2008/07/15(火) 16:09:06#include <iostream>
int main(void){
int a[5],*p1,*p2;
std::cout << "a=" << a << std::endl;
for(int i = 0;i < 5;i++){
std::cout << "a[" << i << "]のアドレス:" << &a[i] << std::endl;
}
p1 = &a[0];
p2 = &a[4];
std::cout << "p1 - p2 (&a[0] - &a[4]) = " << p1 - p2 << std::endl;
return 0;
}
0172115
2008/07/15(火) 17:04:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7384.txt
0174デフォルトの名無しさん
2008/07/15(火) 17:10:56[2] 問題文(含コード&リンク):
構造体bintree_nodeを次のように定義する。
typedef struct bintree_node{
int value;
struct bintree_node *lt,*rt;
} *bintree;
このとき、次の条件を満たす関数void delgraph(bintree t)を作成せよ。
・tからたどることのできる節点をすべてfreeによって消去する
・tに合流点・ループがあっても必ず停止し、かつどの節点にもfreeが2回以上適用されないようにする
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
7/16 12:00
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
以前、似たような問題をこちらで聞いた時のプログラム(木構造に合流点やループがないかどうか調べる)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7386.c
に付け足していただけるとうれしいです。
0175デフォルトの名無しさん
2008/07/15(火) 17:11:05この数字がおかしいな
0176デフォルトの名無しさん
2008/07/15(火) 17:42:27m(dz^2/dt^2)-an/h(dz/dt)-kz=0
0177デフォルトの名無しさん
2008/07/15(火) 17:48:23回答はご用意頂けたでしょうか?
0178デフォルトの名無しさん
2008/07/15(火) 18:00:38その元のコードだとbintreeはmallocを使わず実装してるので
この課題には流用しずらい。
それに付け足すまでもなく自明に実装できる。
void delgraph(bintree tree){
static bintree_node dummy;
if(!tree || tree->lt == &dummy)return;
bintree lt = tree->lt,rt=tree->rt;
tree->lt = &dummy;
delgraph(lt);
delgraph(rt);
free(tree);
}
ようするに一度巡回したノードにはltにdummy突っ込んでおくだけ。
削除するんだから値を勝手に書き換えても問題ないだろう。
0179デフォルトの名無しさん
2008/07/15(火) 18:17:512分探索木に格納されている整数データを配列Aへ小さい順に整列して出力する関数bst_sorted_output(Node *node, int A, int *pos)をC言語を用いてコーティングせよ。
ただし、変数*pos(実体はpos_area)は配列Aにおける次の格納位置を示すのに使うものとする。
0180デフォルトの名無しさん
2008/07/15(火) 18:20:21#include<stdio.h>
#include<stdlib.h>
int fib(int i){
static int count;
int answer;
if(i==0){ int ret=count;count=0;return ret; }
if(i <=2){ return 1;}
answer = fib(i-1) + fib(i-2); // 3回加算
count+=4; // 1回加算 計4回
return answer;
}
int fib2(int i){
static int count;
int n, fib_n_0=1, fib_n_1=1, fib_n_2=1;
if(i==0){ int ret=count;count=0;return ret; }
for(n=3;n<=i;n++){ // 1回加算
fib_n_2=fib_n_1+fib_n_0; // 1回加算
fib_n_0=fib_n_1;
fib_n_1=fib_n_2;
count+=3; // 1回加算 計3回
}
return fib_n_2;
}
int main(int argc, char *argv[]){
int fib_n=20;
printf("%d ", fib(fib_n));
printf(" %d\n", fib(0));
printf("%d ", fib2(fib_n));
printf(" %d\n", fib2(0));
return 0;
}
0181174
2008/07/15(火) 18:52:33回答ありがとうございます。
いただいたのをもとにプログラムを書いてみたんですが、うまく削除できてないみたいなんです・・・
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7387.c
これを実行すると@を5回表示するんですが、bintree 〜 is deleted.のほうは表示されなくて。
申し訳ありませんがもう1度見ていただけますか。
0182デフォルトの名無しさん
2008/07/15(火) 18:56:27削除は出来ている。
ただ、ローカル変数のta0とかの値は削除したからって自動でNULLにならない。
単にbintree 〜 is deleted.の部分のif文がおかしいだけ。
0183174
2008/07/15(火) 19:10:38調べてみたら、確かにfreeした後の領域はNULLではなくて、
何があるかわからないということが書いてありました。
そうすると、削除したかどうかってどうやって調べればいいんでしょう・・・。
0184デフォルトの名無しさん
2008/07/15(火) 19:13:47#include <stdio.h>
void swap(int *a, int *b) {
int c;
c=*a; *a=*b; *b=c;
}
int main() {
int max1 = 0, max2 = 0, num;
while(scanf("%d", &num) == 1){
if(num == 0) break;
if(num < 0 || num % 2 == 1) continue;
if(num > max2) max2 = num;
if(max1 < max2) swap(&max1, &max2);
}
printf("%d\n", max2);
return 0;
}
*aやcontinue、&max1を使わずに出来ないでしょうか?
何度も申し訳ありません。
0185デフォルトの名無しさん
2008/07/15(火) 19:18:37このスレ内に汝の欲するものは既にある
0186デフォルトの名無しさん
2008/07/15(火) 19:19:55どのように記述するのが良いのでしょうか
例えば次の文字列があり、単語の先頭にあるaだけ大文字にしたいです
_aba__dea__aga__ (_は空白)
_Aba__dea__Aga__ (こうなってほしい)
stringstreamでパースして、後で結合する方法を思いつきましたが、この方法だと空白は消えてしまいました。
地道に1文字ずつみて、str[i]==0 || (str[i-1]==' ' && str[i]!=' ')
こういった判定をする以外に良い方法ってありますか?
0187デフォルトの名無しさん
2008/07/15(火) 19:24:39TCP:相手先がオンラインであること、着信確認を取った上で送ること
という理解でいいでしょうか?
0188デフォルトの名無しさん
2008/07/15(火) 19:31:55こういうことをしたいのかな?
それともaだけを大文字にするのかな?
#include<iostream>
#include<string>
#include<cctype>
int main(void){
std::string foo=" aba dea aga ";
std::cout << foo << std::endl;
for(int i=0,next_toupper_flag=1;i<foo.size();i++){
if(next_toupper_flag) foo[i]=toupper(foo[i]); // 書き換えてるけどこれっておk?
if(isspace(foo[i])) next_toupper_flag=1;
else next_toupper_flag=0;
}
std::cout << foo << std::endl;
}
0189デフォルトの名無しさん
2008/07/15(火) 19:37:21while (*str)
{
while (*str == ' ') str++;
if (*str == 0) break;
else if (*str == 'a') *str = 'A';
while (*str && *str != ' ') str++;
}
0190デフォルトの名無しさん
2008/07/15(火) 19:37:290191デフォルトの名無しさん
2008/07/15(火) 19:49:53質問者側としては検索で出てくるのはまずいかもしれないが…
変数名変えれば多分大丈夫さw
0192デフォルトの名無しさん
2008/07/15(火) 19:51:40[2] 問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7388.txt
[3] 環境
[3.1] OS: Windowsxp
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限:7月18日
お願いします
0193デフォルトの名無しさん
2008/07/15(火) 20:05:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7389.txt
0194デフォルトの名無しさん
2008/07/15(火) 20:06:24[1] 授業単元: Cプログラミング演習
[2] 問題文(含コード&リンク)
以下のようなdouble型配列がある。配列の全要素の合計と平均を求める
プログラムをポインタを使用して作成しなさい。
[配列の定義]
double date[5]={10.8,20.3,30.6,40.4,50.5}
[実行結果]
配列の内容
date[]=10.800000,20.300000,30.600000,40.400000,50.500000
合計=152.600000
平均=30.520000
[3] 環境
[3.1] OS: (Windows vista)
[3.2] コンパイラ名とバージョン: (visual studio 2005 )
[3.3] 言語: (C言語)
[4] 期限:今週いっぱいまで
[5] その他の制限: (シンプルにおねがいします)
0195デフォルトの名無しさん
2008/07/15(火) 20:07:510196デフォルトの名無しさん
2008/07/15(火) 20:35:23#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[]){
double date[5]={10.8,20.3,30.6,40.4,50.5}, *p=date, sum, ave;
int i;
printf("date[]=%.6f", sum=*p++);
for(i=1;i<5;i++,p++){
printf(",%.6f", *p);
sum+=*p;
}
ave=sum/5;
printf("\n合計=%.6f\n", sum);
printf("平均=%.6f\n", ave);
return 0;
}
0197デフォルトの名無しさん
2008/07/15(火) 20:36:13やっぱりわからないです…
0198デフォルトの名無しさん
2008/07/15(火) 20:47:23[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7390.txt
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語:C
[4] 期限:7月17日
お願いします。
0200デフォルトの名無しさん
2008/07/15(火) 20:50:550201デフォルトの名無しさん
2008/07/15(火) 21:06:53#include <stdio.h>
#define COUNT 5
double date[5]={10.8,20.3,30.6,40.4,50.5};
void main(void)
{
int i;
double *p=date, sum=0.0, ave;
printf(" 配列の内容\n date[]=");
for(i=0; i<COUNT; i++, p++) {
sum += *p;
printf("%f", *p);
if(i < COUNT-1) printf(",");
}
ave = sum / COUNT;
printf("\n 合計=%f\n 平均=%f\n", sum, ave);
}
0202デフォルトの名無しさん
2008/07/15(火) 21:09:30[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7391.txt
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語: C++
[4] 期限: 至急
[5] その他の制限:問題文をソースの上に載せています。よろしくおねがいします
0203デフォルトの名無しさん
2008/07/15(火) 21:09:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7392.txt
0204デフォルトの名無しさん
2008/07/15(火) 21:11:270205デフォルトの名無しさん
2008/07/15(火) 21:12:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7393.txt
0206デフォルトの名無しさん
2008/07/15(火) 21:20:390207デフォルトの名無しさん
2008/07/15(火) 21:21:22[2] 問題文(含コード&リンク):
y' = x +y
y(0) = 0
の厳密解を求めるプログラムを作って☆
[3] 環境
[3.1] OS:mac os x leopard
[3.2] コンパイラ名とバージョン:gcc.4.0.1
[3.3] 言語: C
[4] 期限: 至急
[5] その他の制限:printfもfprintfもしなくて結構です。ええ、そうです。私ができないのは積分なのです…orz
すいませんすいませんすいませんすいませんすいません…。公式分かってるけど、計算ミスが多すぎて何が何だかなのです><
0208186
2008/07/15(火) 21:26:37ありがとうございます。
next_toupper_flagで単語の先頭(書き換えるべき箇所)を保持してるわけですね
書き換えもOKだったので助かりました。
>>189
ポインタ苦手なんですが、何とか理解できました。
最初、全てのaを置換しているのかと思いましたが
最後のwhileで先頭以外を読み飛ばしてるんですね
0209デフォルトの名無しさん
2008/07/15(火) 21:41:29関数使わずにか* & continueを使わない方法ないですか?
図々しいとは思いますが、今日中なので頼みます
0210デフォルトの名無しさん
2008/07/15(火) 21:46:25>>166 でダメなら諦めるしかない
0211デフォルトの名無しさん
2008/07/15(火) 21:55:52>>110
Zako[0] = new Chara(200, 80,"bmp/teki.bmp", 1,NULL,3, 0, 0,5, 2,40,40);
にすればいいだけなのに(´;ω;`)
>>126
引数4は
0-背景
1- パターン1 → パターン2 → …… → パターンN → パターン1→ ……
2- パターン1 → パターン2 → …… → パターンN → パターンN-1 → パターンN-2 → …… → パターン1 → ……
0212デフォルトの名無しさん
2008/07/15(火) 21:58:06アドバイスありがとうございます。
0214デフォルトの名無しさん
2008/07/15(火) 22:12:06[2] 問題文
20次元の2つのベクトル余弦cos(θ)を求めよ。
ベクトルの要素はそれぞれ、ユーザーが入力すること。ベクトル要素は
double型とすること。
[3] 環境
[3.1] OS: (Windows vista)
[3.2] コンパイラ名とバージョン: Linux
[3.3] 言語: (C言語)
[4] 期限:7/16
[5] その他の制限: 特になし
0215デフォルトの名無しさん
2008/07/15(火) 22:42:36>>17 07/15 14:00 分数の四則演算を計算するプログラム
>>35 07/15 17:00 キーボード入力と表示 : >>72, >>141, >>161, >>166
>>37 07/15 17:00 数字の読み方 : >>39, >>40, >>42?
>>44 07/17 --:-- 4択3種
>>45 07/15 07:00 ゲーム? : >>108->110 その他アドバイスは多数
>>46 07/18 --:-- メディアン : >>47, >>49
>>50 07/17 00:00 減衰振動
>>51 07/15 12:00 ソーティング:基本交換法と挿入法 : >>91
>>55 07/15 14:00 文字列中の特定文字を削除 : >>125, >>131
>>58 07/15 18:00 木構造を用いた数式の処理
>>84 07/16 12:30 自由落下・BMI : >>86
0216デフォルトの名無しさん
2008/07/15(火) 22:44:03>>145 --/-- --:-- 5ごとに丸め >>162
>>146 --/-- --:-- 数字入力と度数分布表示 : >>170
>>148 --/-- --:-- ポインタ演算 : >>171
>>152 07/21 14:00 = >>17 : >>167
>>159 07/16 --:-- 複素数演算・ソーティング
>>174 07/16 12:00 領域開放 : >>178?
>>179 --/-- --:-- 2文木->配列
>>186? : >>188, >>189
0217デフォルトの名無しさん
2008/07/15(火) 22:44:33>>194 07/18 --:-- 配列の全要素の合計と平均 : >>196, >>201
>>198 07/17 --:-- 大文字小文字3題 : >>203, >>206
>>202 --/-- --:-- (ごめんなさい、よくわからないです。)
>>207 --/-- --:-- 微分方程式の解析解
>>214 07/16 --:-- 20次元の2つのベクトル余弦
021884
2008/07/15(火) 22:45:01ありがとうございます!
まさかこんなに早く答えていただけるとは・・・助かりました。
見たことある単語がいくつもあったので自分にも理解できそうです。
0219デフォルトの名無しさん
2008/07/15(火) 22:49:39#include<stdio.h>
#include<math.h>
#define EPS (1.0e-20)
typedef struct tag_vector20d_t{
double num[20];
}vector20d_t;
double vector20d_size(const vector20d_t *vector20d){
int i; double x2=0.0;
for(i=0;i<20;i++) x2+=vector20d->num[i]*vector20d->num[i];
return sqrt(x2);
}
double vector20d_inner_product(const vector20d_t *a, const vector20d_t *b){
int i; double ret=0.0;
for(i=0;i<20;i++) ret+=a->num[i]*b->num[i];
return ret;
}
double vector20d_cos(const vector20d_t *a, const vector20d_t *b){
double size_a, size_b;
size_a=vector20d_size(a);
size_b=vector20d_size(b);
if(size_a<EPS || size_b<EPS) return -10.0;
return vector20d_inner_product(a, b)/(size_a*size_b);
}
int main(void){
int i; vector20d_t a, b;
for(i=0;i<20;i++) scanf("%lf", &(a.num[i]));
for(i=0;i<20;i++) scanf("%lf", &(b.num[i]));
printf(" %f\n", vector20d_cos(&a, &b));
return 0;
}
0220デフォルトの名無しさん
2008/07/15(火) 23:09:22ありがとは?
>>596
過去ログ嫁
0221デフォルトの名無しさん
2008/07/15(火) 23:13:59ループの中に無駄な分岐を入れるのはバカ
0222デフォルトの名無しさん
2008/07/15(火) 23:16:34どのくらい早くなりますか?
0223174
2008/07/15(火) 23:27:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7387.c
でta1のltをta4にしたとき(合流点があるとき)、@を1つ出力したあとAbortedと出て強制終了してしまいます。
(↑ta4をfreeしたあとta3でta4にアクセスしようとするから?)
他にも、ta3のrtをta2にするとSegmentation Errorとなってしまいます。
ループのときは正しく動いているようなので、上の2つのようなときに正しく動けばいいんですが・・・
よろしくお願いします。(引き続き>>183も答えていただけると幸いです)
0224デフォルトの名無しさん
2008/07/15(火) 23:27:27このばあいほとんど分岐が起こらないから、きにする必要なし。
0225デフォルトの名無しさん
2008/07/15(火) 23:39:35今回の場合は大差ないし、そういうのは必要に応じてやればいいと思うけど。
0226デフォルトの名無しさん
2008/07/15(火) 23:45:300227デフォルトの名無しさん
2008/07/16(水) 00:14:21あーそれは俺のバグだなぁ。
たしかにfreeを実行するタイミングが早すぎた。
修正してみた。あんまり自明なアルゴリズムじゃなくなってしょんぼり。
void delgraph2(bintree tree,bintree*rest){
static bintree_node dummy;
if(tree && tree->lt != &dummy)
{
bintree lt = tree->lt , rt = tree->rt;
tree->lt = &dummy;
tree->rt = *rest;
*rest = tree;
delgraph2(lt,rest);
delgraph2(rt,rest);
}
}
void delgraph(bintree tree){
bintree rest = NULL;
delgraph2(tree,&rest);
while(rest){
bintree self=rest;
rest = rest->rt;
free(self);
}
}
0228デフォルトの名無しさん
2008/07/16(水) 00:18:00[1] 授業単元: Cプログラミング演習
[2] 問題文
#include<stdio.h>
#include<string.h>
main()
{char string[]= "I write the book about internet search engine.";
printf("%s",string);
}
string内の配列内の文字列の順番を逆にせよ。ただし出力だけが逆文字
に表示されては駄目である。配列の中身自体を変えなければいけない
[3] 環境
[3.1] OS: (Windows vista)
[3.2] コンパイラ名とバージョン: Linux
[3.3] 言語: (C言語)
[4] 期限:7/16
[5] その他の制限: 特になし
0229デフォルトの名無しさん
2008/07/16(水) 00:23:19int main(void)
{
char string[] = "I write the book about internet search engine.", *p, *q, temp;
printf("%s\n", string);
for(p=string; *p; p++);
q = string;
while(p-- > q) {
temp = *p;
*p = *q;
*q++ = temp;
}
printf("%s\n", string);
return 0;
}
0230デフォルトの名無しさん
2008/07/16(水) 00:25:13http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7350.txt
0231デフォルトの名無しさん
2008/07/16(水) 00:27:38[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7395.txt
[3] 環境
[3.1] OS: windows xp
[3.2] コンパイラ名とバージョン:vc6.0
[3.3] 言語: C++
[4] 期限: 早急に…
[5] その他の制限:
配列の問題です よろしくおねがいします
0232デフォルトの名無しさん
2008/07/16(水) 00:33:58すまないが、配列の配列は動的に確保できないんじゃよ。We apologize for your inconvenience...
0233デフォルトの名無しさん
2008/07/16(水) 00:40:22>>28 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7369.txt
0234デフォルトの名無しさん
2008/07/16(水) 01:24:02[2] 問題文(含コード&リンク):減衰振動の運動方程式
m(d^2x/dt^2)=−kx−α(dx/dt) をルンゲクッタ法で解くやり方を教えてください
m k αはキーボードからの入力値です 初期条件はx(0)=0 , x'(0)=0です
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: >>50でしましたが、とりあえずこれだけわかればなんとかできそうなんで・・・
0235デフォルトの名無しさん
2008/07/16(水) 01:56:00ルンゲクッタ法とか法がつくものは、やり方のことだよ。
明日朝以降にもう一度お願いすれば、もしかしたら
誰かが解いてくれてるかも
0236デフォルトの名無しさん
2008/07/16(水) 02:02:46解くまでもなく
0しか答えがないので釣りとみなされました。
0237デフォルトの名無しさん
2008/07/16(水) 02:16:12[2] 問題文(含コード&リンク):ランダムに現れる#、$、%、&を同じ記号で3つ揃えるスロットゲームの作成
条件:スロットをするかどうかをy、nで判定
スロットを行う
実行結果通りの結果を出力させる
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 至急
[5] その他の制限:実行結果の例
スロットをを回しますか?(y/n)>>>y
幸運をお祈りします
###
大当たり
スロットを回しますか?(y/n)>>>n
ありがとうございました
どうかよろしくお願いします
0239デフォルトの名無しさん
2008/07/16(水) 03:35:381.1 [A] struct xyz [B] struct xyz [C] {0,0,0} [D] t
1.2 [A] struct xyz * [B] (*x).x [C] (*x).y[D] (*x).z
2.1 typedef struct tDate{ int y,m,d }Date;
2.2 void printDate(Date d) { fprintf( stdout, "%4d/%2d/%2d", d.y,d.m,d.d ); }
2.3
void printDateGen(Date d)
{
#define DD(Y,M,D) ((Y)*10000+(M)*100+(D))
char *Era[] = {"","明治","大正","昭和","平成"};
int y, e, dd = DD(d.y,d.m,d.d);
e = ( dd >= DD(1989,1,8) ) ? 4 : ( dd >= DD(1926,12,25) ) ? 3 : ( dd >= DD(1912,7,30) ) ? 2 : ( dd >= DD(1868,9,8) ) ? 1 : 0;
y = d.y - ( ( e == 1 ) ? 1867 : ( e == 2 ) ? 1911 : ( e == 3 ) ? 1925 : ( e == 4 ) ? 1988 : 0 );
if ( y == 1 ) { fprintf( stdout, "%s 元年 %2d月 %2d日", Era[e], d.m, d.d ); }
else { fprintf( stdout, "%s %2d年 %2d月 %2d日", Era[e], y, d.m, d.d ); }
}
0240237
2008/07/16(水) 03:44:28誰かお願いします 切羽詰ってます
0241デフォルトの名無しさん
2008/07/16(水) 04:17:34「至急」なんて書かれても、「その内やる」としか思わないんじゃね?
0242237
2008/07/16(水) 04:24:04午前7時まで
0243デフォルトの名無しさん
2008/07/16(水) 04:41:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7400.c
スペースキーを押すと、左から順に止めることが出来る仕様
0244デフォルトの名無しさん
2008/07/16(水) 04:42:300245237
2008/07/16(水) 04:59:02ありがとうございます!
繰り返すのはfor文ですよね?
0246デフォルトの名無しさん
2008/07/16(水) 05:11:440247デフォルトの名無しさん
2008/07/16(水) 05:20:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7401.txt
これでどうかな?
0248デフォルトの名無しさん
2008/07/16(水) 08:01:50とりあえず解いてみてください
ちなみにこれであってる?
一般解の形は x(t)=a*e^(-b*t*i)+c 但し e をネイピア数、i を虚数単位とする
0249デフォルトの名無しさん
2008/07/16(水) 08:15:52コンパイルエラーを取る問題。無理なのでネタと判断した。
0250デフォルトの名無しさん
2008/07/16(水) 08:16:29[2] 問題文
構造体配列struct tfield name[10];がありメンバにchar str1;があるとします
文字列を適当にabscedと標準入力したとして
その文字列を1文字ずつ構造体配列name[i].str1にいれるように.
最終的にそのname[i].str1を表示するブログラムを
[3] 環境
[3.1] OS: LINUX
[3.3] 言語: (C言語)
[4] 期限:7/16
[5] その他の制限: 特になし
0252デフォルトの名無しさん
2008/07/16(水) 08:32:55文字列の終端はどうするの?
#include<stdio.h>
struct tfield{
char str1;
};
int main(void){
struct tfield name[10];
char buf[10+1]="";
int i;
fgets(buf, sizeof(buf), stdin);
for(i=0;buf[i];i++) name[i].str1=buf[i];
// for(i=0;name[i].str1=buf[i];i++);
for(i=0;i<10;i++) printf("%c\n", name[i].str1);
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています