C/C++の宿題を片付けます 77代目
■ このスレッドは過去ログ倉庫に格納されています
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 76代目
http://pc8.2ch.net/test/read.cgi/tech/1162771475/
【過去スレ一覧】
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
0652151
2006/11/29(水) 21:30:590653デフォルトの名無しさん
2006/11/29(水) 21:39:44N0:192.168.0.0/24
N0:192.168.1.0/24
N0:192.168.3.0/24
があり、二つのルータR1、R2で接続されている。
R1はN0,N3に接続しており、それぞれネットワークインターフェースne0に
IPアドレス192.168.0.130、同gifに同192.168.3.1が与えられている。
この時、R2の経路表は例えば以下のように表示できる。
ただし、メトリック(Metric)が1である経路には、
データリンク層を用いて通信可能であることを示すものとする。
Network Destination Netmask Gateway Interface Metric
192.168.0.0 255.255.255.0 192.168.3.1 gif2 2
192.168.1.0 255.255.255.0 192.168.1.66 ep0 1
192.168.3.0 255.255.255.0 192.168.3.2 gif2 1
問1
R1とR2に距離ベクトル型経路制御を導入して動作させることを考える。
R1の経路表を示せ。
0654デフォルトの名無しさん
2006/11/29(水) 21:43:02>N0:192.168.0.0/24
>N0:192.168.1.0/24
>N0:192.168.3.0/24
三つともN0なんですか?
>R1はN0,N3に接続しており
N3が未定義です。
あとスレ違いです。
0655デフォルトの名無しさん
2006/11/29(水) 21:49:26コンパイルしてみれば分かると思うが、>>640はそのままで正しいC++プログラムだ。
俺の趣味でC++風に書き直すとこんな感じ。
#include <algorithm>
#include <iostream>
const int N = 30;
void ssorti(int *buf, int n)
{
for(int i = 0; i < n - 1; i++)
{
int k = i;
for(int j = i + 1; j < n; j++)
if(buf[k] > buf[j])
k = j;
std::swap(buf[i], buf[k]);
}
}
int main()
{
int array[N] = { 636, 80, 246, 766, 881, 383, 244, 671, 503, 331,
444, 723, 916, 287, 492, 719, 476, 187, 704, 115,
774, 334, 618, 625, 582, 938, 427, 831, 899, 909
};
ssorti(array, N);
for(int i = 0; i < N; i++)
std::cout << array[i] << " ";
std::cout << "\n";
}
0656620
2006/11/29(水) 21:52:31実際は
for (i = 1; i < d; ++i) {
s += f(a + i * h);
}
s *= 2;
s += f(a) + f(b);
s *= h / 2;
ですよね?
でも、自分は
for (i = 1; i < d; ++i) {
s += f(a + i * h);
s *= 2;
s += f(a) + f(b);
s *= h / 2;
}
としてました。
これが原因だったようです。
自分のミスなのに、おかしい等と文句言って申し訳ありませんでした。
0657655
2006/11/29(水) 21:58:00まあ、ループもたまには良いでしょう。
0658デフォルトの名無しさん
2006/11/29(水) 22:01:11自分も似たような宿題があるのでやってみましたがうまく動きません。一応プログラム貼りつけとくので
もし634さんがプログラムが完成してたら、どこが間違ってるか教えて下さい。
他の方でも分かる方がいらっしゃったらご指導お願いします。
#include <stdio.h>
#include <stdlib.h>
void main(void){
FILE *fp;
int c=0;
int d=0;
int freg[20];
(fp = fopen("infile.txt", "r")) == NULL;
while ((c = getc(fp)) != EOF) {
switch (c) {
case ' ': freg[d]++; d=0;
break;
case '\n':
break;
case '\t': freg[d]++; d=0;
break;
case ',' : freg[d]++; freg[0]++; d=0;
break;
case '.' : freg[d]++; freg[0]++; d=0;
break;
default: d++; }}
printf("ファイル名: infile.txt\n");
printf("%d ",freg[20]);
fclose(fp);
}
0659デフォルトの名無しさん
2006/11/29(水) 22:04:180660デフォルトの名無しさん
2006/11/29(水) 22:14:13>>650
有難うございました!
0661658
2006/11/29(水) 22:26:42早速fregは21にして、dが20以上の時はfreg[20]が+1なるように改良してみたんですが
やはり実行すると1245112という意味不明な数字がでるだけです…
もっと根本的なところ間違ってませんかね?
0662デフォルトの名無しさん
2006/11/29(水) 22:30:58数を数えたいなら0で初期化するべし。
0665658
2006/11/29(水) 23:45:30アドバイスありがとうございます。おかげで無事できました。
何か初歩的なこと忘れまくりでしたねort
でも659さんや662さんのおかげで凄く勉強になったと思います。
ほんとにありがとうございました。
0666616
2006/11/29(水) 23:46:08ちゃんと動いたかな?
解説しろって言われてもなぁ...当たり前のコードだからなぁ...
お前さんが疑問と思う点を書いてくれれば説明してやれるかも知れん。
0667デフォルトの名無しさん
2006/11/30(木) 00:11:53回答してる側にとっては当たり前すぎてどうわからんのかわからん場合はよくある。
質問してる側もどこが分からんのか分からんくらいに全体的にわからんのかもしれんが、
今後の役に立てようという気概があるくらいならもうちょっとつっこんだ質問をしてくれないと困ると思う。
0669デフォルトの名無しさん
2006/11/30(木) 00:42:46[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3055.txt
[3] 環境
[3.2] Visual Stdio 2003
[3.3] C++
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3056.txt
提出期限過ぎてて現在執行猶予期間。やばいって!ほんとやばいって!!
0670デフォルトの名無しさん
2006/11/30(木) 00:44:220671デフォルトの名無しさん
2006/11/30(木) 00:56:260672デフォルトの名無しさん
2006/11/30(木) 00:56:280673デフォルトの名無しさん
2006/11/30(木) 01:02:50ここまで来ると釣りにしか思えないな。
0674デフォルトの名無しさん
2006/11/30(木) 01:03:25俺の記憶が正しければ君でその問題を丸投げするのは
4人目なんだ
3人目なんかちゃんともう解答済みだと教えてやったのに
「教えてくれるのか教えてくれないのかハッキリしてください」
と逆切れしていたぞ
ひでえ学校だなwww
0675デフォルトの名無しさん
2006/11/30(木) 01:05:46俺のところはクローンがあったら
点数をクローンの数で割るとか言ってたけど
偶然同じになったらどうするのかね
ここで見たことある問題あったし
0676デフォルトの名無しさん
2006/11/30(木) 01:08:46>636のコードで This is a pen. を入力した時の実行結果
0 文字:1 回
1 文字:1 回
2 文字:1 回
3 文字:0 回
4 文字:1 回
pen(3文字)がカウントされていない。
if(c=='.'||c==','){の後にif(j)res[j<21?j:20]++;が必要。
0677デフォルトの名無しさん
2006/11/30(木) 01:09:23void initialize(int account[]) {
int i;
for (i = 0; i < 5; i++) {
account[i] = 0;
}
}
void daily_input(int account[]) {
char* hinmoku[] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
int i;
for(i = 0; i < 5; i++) {
printf("%s :", hinmoku[i]);
scanf("%d", account + i);
}
}
void daily_output(int account[]) {
char* hinmoku[]={"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
int i;
for(i = 0; i < 5; i++) {
printf("%s :%d\n", hinmoku[i], account[i]);
}
}
0678デフォルトの名無しさん
2006/11/30(木) 01:26:13それだとinputがおかしくね?
という訳で前書いたのを手を入れてコピペ
rand()使ってるから適当に初期化してね
void initialize(int account[]){
for(int i=0;i<=4;i++) account[i]=0;
}
void daily_input(int account[]){
char* hinmoku[]={"りんご","みかん","イチゴ","ナシ","イチジク"};
int tmp;
for(int i=0;i<=4;i++){
printf("%s :",hinmoku[i]);
scanf("%d",&tmp);
account[i]+=tmp;
if(rand()%100==1) account[i]+=700
}
}
void daily_output(int account[]){
char* hinmoku[]={"りんご","みかん","イチゴ","ナシ","イチジク"};
for(int i=0;i<=4;i++){
printf("%s :%d\n",hinmoku[i],account[i]);
}
}
0679676
2006/11/30(木) 01:42:3930分待ってみたけど反応が無いな。もう寝ちゃったかな。
他にも指摘すると、if(j==0){の分岐(不要)とか、そもそもリダイレクトの指定じゃ無いだろ、とか。
まだ回答するには早いんじゃないかな。挑戦も大事だけどじっくり基礎を固めて力をつけてからでも遅くないと思うよ。
0680デフォルトの名無しさん
2006/11/30(木) 01:46:010681デフォルトの名無しさん
2006/11/30(木) 02:01:070682デフォルトの名無しさん
2006/11/30(木) 04:18:42県名と数字はひとつの空白スペースで区切られています。
お願いします。
0683デフォルトの名無しさん
2006/11/30(木) 04:21:28jinkou.txtも作ってくれって事?
君は用意しないの?
0684638
2006/11/30(木) 04:42:29.r-‐i'''''''''''i''''‐-、
o| o! .o i o !o
.|\__|`‐´`‐/|__/|
|_, ─''''''''''''─ ,、 / _
/ \
/ ノ( \ ____ / i
| ⌒ ● {+++} ● | キングブチキレス
!  ̄ ノ
丶_ ノ
0685デフォルトの名無しさん
2006/11/30(木) 04:50:41ケンカ売ってるとしか思えない
0686629
2006/11/30(木) 07:45:48[2]n×nの正方形状に並んだ点からなる地図があり、各店は陸か水(海、湖、川)
のどちらかを表してるとします。地図の周囲を海とみなし、海から縦方向または
横方向に水を現す点を結合してる点を海に表す点に置き換えるプログラムを作成しなさい。
例えば、陸をa、水をb、海をcで表すと左の地図は右の地図に書き換えられます。
bbaaabaaab ccaaacaaac
aaaaabaaba aaaaacaaba
aaaaaaabaa aaaaaaabaa
aaabbbbaaa aaabbbbaaa
aaababaaaa aaababaaaa
aaabbbaaaa aaabbbaaaa
aaaaaabbaa aaaaaaccaa
abbbbaabba accccaacca
abaabaaabb acaacaaacc
aaaabaaaaa aaaacaaaaa
[3]C言語(emacs)
[4]今日中
[5]for,while,if文 ポインター 文字列 1,2次配列
0687デフォルトの名無しさん
2006/11/30(木) 08:23:41[2] 双方向リストを昇順で出力するため、
Sort関数の???の部分を埋めてプログラムを完成させなさい。
なお、関数以外の部分は変えない事。関数内では新たに変数をいくつ追加しても
構わない。
プログラム↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3057.txt
[3.1] SunOS(Solaris10)
[3.2] GCC 3.4
[3.3] C言語
[4] 期限: 2006年12月1日AM8:30
[5] Break,Continue,Goto命令の禁止
2重ポインタの仕組みが全く分からず苦労しています。どうか宜しくお願いします。
0688デフォルトの名無しさん
2006/11/30(木) 08:26:08for(i=0;i<N;i++) {
if(map[0][i] == 'b')
map[0][i] = 'c';
if(map[N-1][i] == 'b')
map[N-1][i] = 'c';
if(map[i][0] == 'b')
map[i][0] = 'c';
if(map[i][N-1] == 'b')
map[i][N-1] = 'c';
}
while(1) {
int f = 1;
for(i=1;i<N-1;i++) {
for(j=1;j<N-1;j++) {
if(map[i][j] == 'b') {
int k;
int di[4] = {-1, 0, 0, 1};
int dj[4] = {0, -1, 1, 0};
for(k=0;k<4;k++) {
if(map[i+di[k]][j+dj[k]] == 'c') {
map[i][j] = 'c';
f = 0;
}
}
}
}
}
if(f)
break;
}
0689デフォルトの名無しさん
2006/11/30(木) 08:33:33二重ポインタさえわかればできるの?
二重ポインタ講座でも始めるか
0690デフォルトの名無しさん
2006/11/30(木) 08:56:01本当にありがとうございます
0691デフォルトの名無しさん
2006/11/30(木) 08:57:34つ 長いぜ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3058.txt
0692デフォルトの名無しさん
2006/11/30(木) 10:37:11ひでえな。循環リストじゃないしダミーリストもないので面倒なんだよなー
0693デフォルトの名無しさん
2006/11/30(木) 10:39:08配列とかはvectorがやっぱり楽だなぁ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3059.txt
0694デフォルトの名無しさん
2006/11/30(木) 12:05:16[2] 問題文(含コード&リンク):整数値を要素にもつ k行m列行列A とm行n列行列B を定義し,それらの要素をキーボー
ドから入力させ,C = A×Bを計算して画面表示するプログラムを作成しなさい.ただし,k,m,
n については,k≠m,m≠n,k≠n,k≧2,m≧2,n≧2を満たす任意の値を設定してよい.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12月1日まで
[5] その他の制限: なし
授業で触れなかったのでわからなくて・・・よろしくお願いします。
0696デフォルトの名無しさん
2006/11/30(木) 12:40:14授業で何を触れなかったの?
どこまで習ってるの?
0697デフォルトの名無しさん
2006/11/30(木) 12:46:070698デフォルトの名無しさん
2006/11/30(木) 13:17:37一次元配列はわかってるんだな
それなら簡単だ
k行m列の配列は
int a[k][m];
と宣言して、i行j列へ5を代入したければ
a[i][j] = 5;
一次元配列と扱い方に大きな違いはない
k, m, nは
#define k 2
などと書いておくといい
0699デフォルトの名無しさん
2006/11/30(木) 14:34:32#define k 2 と書いておくとどんなメリットがあるんですか?
0700デフォルトの名無しさん
2006/11/30(木) 14:47:47あのカタワレは何処行ったのかね?
0701デフォルトの名無しさん
2006/11/30(木) 14:48:08[2] 問題文:多項式f(x)=Cn×�Iのn乗+Cn-1×�Iの(n-1)乗+...+C1×�I
+C0×�Iの0乗 の次数nと多項式の係数Cn,Cn-1,..,C1,C0を順に読み込み、
変数�I=0.0、0.1、0.2,・・、0.9、1.0に対する多項式f(x)の値を計算して見やすい形に
出力するCプログラム
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:Cです
[4] 期限:12月3日まで
[5] その他の制限:配列の問題です。 for構文を必ず使い、
f(x)=((...((Cn�I+Cn-1)�I+Cn-2)...)�I+C1)�I+C0
と単純な効率の良いプログラム計算するようなもの。つまり
fx←Cn
fx←fx*�I+Cn-1 というような代入を参考にして考えてみる。
0702701
2006/11/30(木) 14:49:230703デフォルトの名無しさん
2006/11/30(木) 14:56:50#define k 2
とすると、コンパイル前に自動的にkを2に置き換えてくれる。
int k = 2;
int m = 3;
int a[k][m];
上のように配列の要素数に変数の値を使用すると、コンパイルが通らない可能性があるから、
#defineを使う。
0704デフォルトの名無しさん
2006/11/30(木) 14:58:330705デフォルトの名無しさん
2006/11/30(木) 14:59:410706デフォルトの名無しさん
2006/11/30(木) 15:01:500707デフォルトの名無しさん
2006/11/30(木) 16:08:53#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double func( int iN, double* pCn, double dX )
{
double dRet = 0.0;
int i;
for( i = iN; i >= 0; i-- ) {
if( i )
dRet += ( (*pCn) * pow( dX, (double)i ) );
else
dRet += *pCn;
pCn++;
}
return dRet;
}
// Tobe continue
0708デフォルトの名無しさん
2006/11/30(木) 16:10:17{
int iN, i;
double *pCn;
double *pTmp;
double dX;
printf( "N: " );
scanf( "%d", &iN );
if( iN < 1 ) return 0;
pCn = (double*)malloc( sizeof( double) * iN );
if( ! pCn ) return 1;
pTmp = pCn;
for( i = iN; i >= 0; i-- ) {
printf( "C%d: ", i ); scanf( "%lf", pTmp ); pTmp++;
}
printf( "x: f(x)\n" );
for( i = 0; i <= 10; i++ ) {
dX = (double)i * 0.1;
printf( "%lf: %lf\n", dX, func( iN, pCn, dX ) );
}
free( (void*)pCn );
return 0;
}
0709sage
2006/11/30(木) 16:21:27[2] 問題文(含コード&リンク):自身の氏名の漢字の内部コードを16進数、及び2進数で出力せよ
[3] 環境
[3.1] OS:WINDOWS
[3.2] コンパイラ名とバージョン:Vsual C++ 2005
[3.3] 言語:C++
[4] 期限:2006/12/1(明日),A.M.8:00頃←細かくてすみません
[5] その他の制限:整数を2進数に出力すること、文字コードを16進数に出力することはできます。
「氏名の漢字」は漢字であれば何でも構いません。
制限でも触れたように整数を2進数に出力すること、文字コードを16進数に出力することは出来るのですが、同時に行うことが出来ません。
明日のお昼に提出の課題で、家にはギリギリ8時ごろまでいられます。
よろしくお願いいたします。
0710デフォルトの名無しさん
2006/11/30(木) 16:27:15続けて処理すれば、「同時」にしなくてもいいんジャマイカ?
0711デフォルトの名無しさん
2006/11/30(木) 16:27:31分けてやればいいだろ
常識的に考えて・・・
0712デフォルトの名無しさん
2006/11/30(木) 16:39:34出力結果に
「○」の16進表現は〜、2進表現は〜。
「×」の16進表現は〜、2進表現は〜。
という風に表示出来たらなって思ってたのですが、諦めて16進と2進、それぞれ別々に表示したほうが作るのも簡単ですよね。
本当に初心者でごめんなさい><
0713デフォルトの名無しさん
2006/11/30(木) 16:40:21もういいや
0714デフォルトの名無しさん
2006/11/30(木) 17:15:40[2] 問題文:使用される文字列が英大文字26文字のみの場合の文字列探索法(BM法)
のプログラム。ただし、英大文字以外の文字がテキストまたはパターンに入力された
ときは、再入力を求めること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
よろしくおねがいします。
0715デフォルトの名無しさん
2006/11/30(木) 17:42:22[2] 問題文:キーボードから読み込んだ整数n以下の素数をすべて求め、1行に12個数値を表示せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2006年12月3日まで
[5] その他の制限: 制限は特に無いです。
すみません、よろしくお願いします。
0716デフォルトの名無しさん
2006/11/30(木) 17:43:29>1行に12個数値を表示せよ。
1行に12個ずつ って意味だよな?
0717デフォルトの名無しさん
2006/11/30(木) 17:45:19はい、そういうことです。よろしくお願いします。
0718デフォルトの名無しさん
2006/11/30(木) 18:12:03#include <stdio.h>
int isprime(int value){
int i;
if(value%2==0) return (value==2);
for(i=3;value/i>=i;i+=2)
if(value%i==0)
return 0;
return 1;
}
int main(void){
int i, n;
int prime_count=0;
printf("Input positive number :");
scanf("%d", &n);
for(i=2;i<n;i++){
if(isprime(i)){
printf(" %d", i);
prime_count++;
if(prime_count%12==0)
printf("\n");
}
}
return 0;
}
0719デフォルトの名無しさん
2006/11/30(木) 19:33:42[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3051.txt
この整数値の昇順リストを作成するプログラムを、指定データ(下記deletedata)と同じデータを持つセルをすべて
消去し、消去するデータがあったときはdata foundと1回表示し、ないときにはno such data
と1回表示するvoid DeleteAlist(struct LIST **ptr, int deletedata)を再帰を用いることによって作成せよ。
指定データを持つセルの先頭のものを消去する関数を参考にせよ。
void Deletelist(struct LIST **ptr, int deletedata){
if((*ptr)==NULL){
printf("no such data \n");
}else if((*ptr)->data == deletedata){
struct LIST *tmp;
printf("data found\n");
tmp=(*ptr)->nextptr;
free(*ptr);
*ptr=tmp;
}else DeleteList(&((*ptr)->nextptr),deletedata);
}
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:
昨日も聞いたんですが、
条件が追加され、出題されました。お願いします。。
0720デフォルトの名無しさん
2006/11/30(木) 20:16:25以下と差し替えて DeleteAlist() の戻り値が0なら no such data, 1以上なら data found と表示すればよろし
int DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST* pTmp;
int iDelNum = 0;
while( *ppList ) {
if( (*ppList)->data == iDelKey ) {
pTmp = (*ppList)->nextptr;
free( (void*)*ppList );
*ppList = pTmp;
iDelNum++;
}
else {
ppList = &((*ppList)->nextptr);
}
}
return iDelNum;
}
0721デフォルトの名無しさん
2006/11/30(木) 21:28:03再帰で書くことはできないんですか?
0722デフォルトの名無しさん
2006/11/30(木) 21:35:55[2] 問題文(含コード&リンク):
整数 ID の二分木を表示する関数(簡単なものがスライドにあるのでそのまま打ち込んでも良いが、もっと見やすく拡張したほうが良い)と
二分探査木を作る関数(スライドにもあるが改変しても良い)を作り、二分探査木に以下のようなデータを入力した結果を表示せよ。
データは並んでいる順に入力すること。
(ア)1,2,3,4,5,6,7
(イ)1,7,2,6,3,5,4
(ウ)4,2,1,6,3,5,7
ソース ttp://www.geocities.jp/c_prog2011/tree_1.txt
[3] 環境
[3.1] OS: Windows XP Home Edition SP2
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2005 Academic Edition
[3.3] 言語: C
[4] 期限: 2006年12月6日23:59まで
[5] その他の制限: 線形リストの基本は学んだが二分木は初めてです。
よろしくお願いします。
0723デフォルトの名無しさん
2006/11/30(木) 21:36:25int DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST* pTmp;
int iDelNum = 0;
if( ppList == NULL )
return 0;
while( *ppList ) {
if( (*ppList)->data == iDelKey ) {
pTmp = (*ppList)->nextptr;
free( (void*)*ppList );
*ppList = pTmp;
iDelNum++;
}
else {
ppList = &((*ppList)->nextptr);
}
}
DeleteAlist(NULL, int iDelKey);
return iDelNum;
}
0724デフォルトの名無しさん
2006/11/30(木) 21:44:53どうもありがとうございました!
0725デフォルトの名無しさん
2006/11/30(木) 21:57:36コンパイル通らなかったです・・・・
0726デフォルトの名無しさん
2006/11/30(木) 22:02:45あ、ごめん
下から三行目のintいらない
コンパイルできないならエラーメッセージくらい書いた方がいいよ
0727デフォルトの名無しさん
2006/11/30(木) 22:13:18int 消しました。まだエラーでます
エラー E2451 F:\borland\bcc55\list\list.c 11: 未定義のシンボル LIST(関数 DeleteAlist )
エラー E2451 F:\borland\bcc55\list\list.c 11: 未定義のシンボル pTmp(関数 DeleteAlist )
エラー E2140 F:\borland\bcc55\list\list.c 12: ここでは宣言はできない(関数 DeleteAlist )
だそうです
11行目と12行目はこうなってます
LIST* pTmp;
int iDelNum = 0;
0728デフォルトの名無しさん
2006/11/30(木) 22:18:350729デフォルトの名無しさん
2006/11/30(木) 22:19:46struct LIST* pTmp;
自分でコンパイルしてないから何とも言えんけど
0730デフォルトの名無しさん
2006/11/30(木) 22:23:00>>729
通りました〜どうも
0731720
2006/11/30(木) 22:40:45まぁ、回答してくれた人がいるみたいなので良かったな。
だけど、これを再帰で書いた奴が居たら書き直させるわ。
再帰にして解り易くなる訳でもねぇしデメリットしかねぇじゃん。
ちゅことで俺なら、『こんなん再帰で書かせるなボケ』と講師に言うかな。
0732デフォルトの名無しさん
2006/11/30(木) 22:44:59結局は慣れの問題じゃないだろうか。
0733デフォルトの名無しさん
2006/11/30(木) 23:01:11[2] 問題文(含コード&リンク): ビットベクトルによる集合表現を用いて、2つ
の集合に対する要素の追加・削除・和集合、積集合、差集合を求めるプログラム
を作れ。
[3] 環境
[3.1] OS: Windows Xp
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: なし
よろしくお願いします。
0734701
2006/11/30(木) 23:46:07すいません
func、#include <stdlib.h>、pow
は習っていないので、これを使わないC言語
をお願いします。
0735デフォルトの名無しさん
2006/11/30(木) 23:48:37習ってないなら調べれば。
0736デフォルトの名無しさん
2006/11/30(木) 23:57:48空気嫁
習ってないのを使ったら怪しまれるじゃねーか
と>>701の心境をエスパー
0737デフォルトの名無しさん
2006/12/01(金) 00:02:08なんら問題ないじゃないか
0738デフォルトの名無しさん
2006/12/01(金) 00:10:260739デフォルトの名無しさん
2006/12/01(金) 00:23:54「てめぇーなにおれのおしえてねーもんつかってんだよぉぅああん?」
と>>701の心境をエスパー
0740デフォルトの名無しさん
2006/12/01(金) 00:42:34と見たがどうか?
0741デフォルトの名無しさん
2006/12/01(金) 00:55:54阪大の授業より抜粋
コンピュータ基礎&基礎演習
ttp://www3.sys.es.osaka-u.ac.jp/iwai/cs/
/* 和集合 */
int Union(int A, int B) {
return A | B;
}
/* 積集合 */
int Intersection(int A, int B) {
return A & B;
}
/* 差集合 */
int Difference(int A, int B) {
return A & ~B;
}
/* 追加 */
int insert(int set, int atom) {
set |= (1L << (atom - 1));
return set;
}
/* 削除 */
int erase(int set, int atom) {
set &= ~(1L << (atom - 1));
return set;
}
0742707
2006/12/01(金) 01:11:52func は単なる関数の名前だ。この先も習う事は無いだろう。
ちゅかお前は文法も習ってないのかと小一時間....
pow が使えないなら
double poorPow( double x, int y )
{
double dRet = 1.0;
int i;
for( i = 0; i < y; i++ )
dRet *= x;
return dRet;
}
を func() の前に入れて
pow( dX, (double)i ) を poorPow( dX, i ) に直せ。
#include <math.h> は不要になる。
続く
0743707
2006/12/01(金) 01:15:42<stdlib.h> を使いたくないなら >>708 を以下の様に修正。
double *pCn; を
double aCn[256];
double *pCn = aCn;
に直す。
pCn = (double*)malloc(... と次の行を削除。
free(... の行を削除。
これで #include <stdlib.h> も不要となる。
0744デフォルトの名無しさん
2006/12/01(金) 01:18:28>>701
#include <stdio.h>
int main(void)
{
int i,j,n;
double x,fx;
double c[11];
printf("次数 : "); scanf("%d",&n);
if(n<0 || n>10){
printf("入力できる次数は0から10まで\n");
return 0;
}
for(i=n; i>=0; i--){
printf("C%d : ",i); scanf("%lf",&c[i]);
}
for(j=1; j<=10; j++){
x = j/10.0;
fx = c[n];
for(i=n-1; i>=0; i--){
fx = fx*x+c[i];
}
printf("f(%.1f) = %f\n",x,fx);
}
return 0;
}
0745デフォルトの名無しさん
2006/12/01(金) 01:25:40そのスライドは?
0746デフォルトの名無しさん
2006/12/01(金) 01:43:03それだけじゃダメだろ。
0747デフォルトの名無しさん
2006/12/01(金) 02:22:41再帰恐怖症
0749デフォルトの名無しさん
2006/12/01(金) 03:24:46幼稚ですね
0750デフォルトの名無しさん
2006/12/01(金) 03:40:47フッ
懸命になってようやく解いた解答を一言の元に否定されて
傷ついてやがんの
0751デフォルトの名無しさん
2006/12/01(金) 03:47:39同じ答えが出ればいいだろと言って技術を向上させる意思が皆無なのは救いようがないな
■ このスレッドは過去ログ倉庫に格納されています