トップページ⇒tech
1001コメント425KB

C/C++の宿題を片付けます 96代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG?2BP(12)
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[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++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/
0322デフォルトの名無しさん2007/09/26(水) 16:20:58
>>320
>>321
ありがとうございました
0323デフォルトの名無しさん2007/09/26(水) 19:41:12
 1 授業問題 
 2 ポインタ 
 
 int data[10] ={10,20,30,40,50,60,70,80,-999} このようなint配列があります         配列の内容を実行結果のように表示するプログラムを作りなさい         -999になれば処理を終了します 
 ポインタを固定して表示させる処理とポインタを変化させて表示させる処理の2つ作成しなさい 
 この内容がわからないので教えて下さいお願い致します
0324デフォルトの名無しさん2007/09/26(水) 19:43:02
ちなみに999}の最後に:がつきます  宜しくお願い致します
0325デフォルトの名無しさん2007/09/26(水) 19:43:38
>>323
テンプレ読んでからやりなおせ。アホ。
0326デフォルトの名無しさん2007/09/26(水) 19:46:31
>>325
お前、来なくて良いよ。アホとか書くな、アホっ
0327デフォルトの名無しさん2007/09/26(水) 19:47:52
>>323
>>1を読め。
0328デフォルトの名無しさん2007/09/26(水) 19:49:22
>>327 お前が >>323 を読まなきゃ良いだろ
0329デフォルトの名無しさん2007/09/26(水) 19:50:04
>>328
読まなくていいものを書き込むな。
0330デフォルトの名無しさん2007/09/26(水) 19:50:24
>>329 オマエモナー
0331デフォルトの名無しさん2007/09/26(水) 19:50:42
>>330
>>1を読め。
0332デフォルトの名無しさん2007/09/26(水) 19:50:53
まあ携帯だろうからそこは大目に見ようも
日本語はもうちょっと上手く使わないとね…
0333デフォルトの名無しさん2007/09/26(水) 19:50:55
テンプレ利用しろよ。
0334デフォルトの名無しさん2007/09/26(水) 19:51:41
>>323のようなやつはマナーを知らんな。
0335デフォルトの名無しさん2007/09/26(水) 19:51:43
>>331 >>330 を読むな
0336デフォルトの名無しさん2007/09/26(水) 19:52:07
お前ら、テンプレ読まない奴はスルーしろ。
0337デフォルトの名無しさん2007/09/26(水) 19:52:26
>>334のような奴はスルーを知らんなw
0338デフォルトの名無しさん2007/09/26(水) 19:52:57
>>323
駄目な奴は何をやっても駄目
0339デフォルトの名無しさん2007/09/26(水) 19:57:24
>>331 >>329 >>327 <お前らが >>1 を読め。
> 気に入らない質問やその他や発言はスルーの方向で。
0340デフォルトの名無しさん2007/09/26(水) 20:15:19
323 ですが すいませんバージョンとかわかりません でも 一応大丈夫なんじゃないんですか?教えて貰えたら光栄ですバカでもアホでもわからないので教えてもらえれば光栄なのでお願い致しますあとWindoを使ってることはわかります宜しくお願い致します
0341デフォルトの名無しさん2007/09/26(水) 20:19:30
323ですが、僕はアホです。っていうか涙目みたいな・・・っていうか俺ってマジやばいから。
俺怒らすと怖いですよ(ぉ っていうか、俺の友達なら知ってることだけどな。
お前ら知らんだろ。
0342デフォルトの名無しさん2007/09/26(水) 20:23:19
ちなみに私は341ではないですなんせ・・・この点々は使ったことないです誰か教えてくださいお願いします
0343デフォルトの名無しさん2007/09/26(水) 20:30:30
>>341
あのなぁ、お前みたいな茶化したりする騙りなんてバレバレなんだよ。
なんでそう質問者をバカにするだけで質問に答える能力が無いくせに
このスレで、でけぇ面してんだ?鬱陶しいんだよ、他の回答者からしてみてもお前は
0344デフォルトの名無しさん2007/09/26(水) 20:30:46
>>323
#include<stdio.h>
int main(void){
int data[10]={10,20,30,40,50,60,70,80,-999};
int *ptr, i;
for(i=0,ptr=data;*(ptr+i)!=-999;i++) printf("%d\n", *(ptr+i));
for(ptr=data;*ptr!=-999;ptr++) printf("%d\n", *ptr);
return 0;
}
0345デフォルトの名無しさん2007/09/26(水) 20:31:32
>>344
もっと分かりやすく書けや。気に入らん奴は回答せんでええって。
俺、怒らすと怖いよ。
0346デフォルトの名無しさん2007/09/26(水) 20:32:55
>>323 マルチポストかよ!試験は実力で受けろカス!
ttp://pc11.2ch.net/test/read.cgi/tech/1188748806/970
0347デフォルトの名無しさん2007/09/26(水) 20:33:07
オレはツレから「キレたら怖い奴」って良く言われる それは自覚してるけど狼の血は止められない
0348デフォルトの名無しさん2007/09/26(水) 20:41:59
>>347
オオカミ少年乙
0349デフォルトの名無しさん2007/09/26(水) 20:49:42
344さんありがとうございました 恩にきります また宜しくお願いいたします
0350デフォルトの名無しさん2007/09/26(水) 20:52:43
切られたなり!
0351デフォルトの名無しさん2007/09/26(水) 21:18:41
[1] 授業: 教科書
[2] OS Windows VC60
[3]問題
int data[10] ={5,8,10,2,1,14,35,6,12}:
配列中の最大値と最小値を表示するプログラムをポインタを使用して作成するプログラムが解らないので教えて貰えませんか?

期限9月27木曜です
0352デフォルトの名無しさん2007/09/26(水) 21:21:31
>>351
10分くらいするとマルチポストし始めるのでしょうか?
0353デフォルトの名無しさん2007/09/26(水) 21:40:43
>>351
#include<stdio.h>
int cmp_big(int a, int b){
return a>b;
}
int cmp_small(int a, int b){
return a<b;
}
int *search(int arr[], int arr_size, int (*cmp)(int,int)){
int i, index=0;
for(i=1;i<arr_size;i++)
if(cmp(arr[i], arr[index])>0) index=i;
return &arr[index];
}
int main(void){
int data[10]={5,8,10,2,1,14,35,6,12};
printf("maximum : %d\n", *search(data, sizeof(data)/sizeof(data[0]), cmp_big));
printf("minimum : %d\n", *search(data, sizeof(data)/sizeof(data[0]), cmp_small));
return 0;
}
0354デフォルトの名無しさん2007/09/26(水) 21:53:00
352さんありがとうございました
0355デフォルトの名無しさん2007/09/26(水) 21:54:15
976 名前:デフォルトの名無しさん[] 投稿日:2007/09/26(水) 21:21:46
[1] 授業単元: 教科書
[2] OS Windows
[3]問題
int data[10] ={5,8,10,2,1,14,35,6,12}:
配列中の最大値と最小値を表示するプログラムをポインタを使用して作成するプログラムが解らないので教えて貰えませんか?
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1188748806/
0356デフォルトの名無しさん2007/09/26(水) 21:54:31
>>353
こういうプログラムはいいな。
このまま提出したら質問主が疑われそうなもの。
0357デフォルトの名無しさん2007/09/26(水) 21:59:29
疑われるって?
0358デフォルトの名無しさん2007/09/26(水) 22:00:59
>>305
>>308

感謝っす!
0359デフォルトの名無しさん2007/09/26(水) 22:02:21
maximum → 最大値
minimum → 最小値
でいいんじゃね
0360デフォルトの名無しさん2007/09/26(水) 22:05:48
[1] 授業: 教科書
[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 
誰か宜しくお願いします
ちなみに初心者です
0361デフォルトの名無しさん2007/09/26(水) 22:06:54
いまさらだけど、[1] 授業: 教科書。ワロタwww
0362デフォルトの名無しさん2007/09/26(水) 22:18:34
>>360
#include<stdio.h>
double get_average(double arr[], int arr_size){
double *ptr, average=893;
int i;
ptr=arr;
for(ptr=arr,i=0;i<arr_size;i++,ptr++)
average=(average*i+*ptr)/(i+1);
return average;
}
double get_sum(double arr[], int arr_size){
double *ptr;
ptr=arr;
return *ptr+((arr_size>0)?get_sum(ptr+1, arr_size-1):0);
}
int main(void)
{
double data[]={10.8,20.3,30,6.40,10.4,2.12};
printf("sum : %f\n", get_sum(data, sizeof(data)/sizeof(data[0])));
printf("average : %f\n", get_average(data, sizeof(data)/sizeof(data[0])));
return 0;
}
0363デフォルトの名無しさん2007/09/26(水) 22:20:45
親切なな人だね。
さすがにこれ以上は勘弁って感じだよ。
0364デフォルトの名無しさん2007/09/26(水) 22:21:08
もぅすこし初心者的なのはありませんか?ワガママですみませんが宜しくお願いします
0365デフォルトの名無しさん2007/09/26(水) 22:23:34
スレタイと直接関係ないんですけど
FOX-toolkitの話ってどこに行けば聞けますか?
0366デフォルトの名無しさん2007/09/26(水) 22:24:00
>>364
マルチしてんじゃねえよ
0367>>281 1/42007/09/26(水) 22:27:07
struct machine {
 struct product *p;
 int value;
};
struct product {
 struct machine *ms[4];
 struct product *original;
};
struct machine *createm() {
 return (struct machine *)calloc(1, sizeof(struct machine));
}
struct product *createp(struct machine *first, struct machine *second, struct machine *last) {
 struct product *p = (struct product *)calloc(1, sizeof(struct product));
 p->ms[0] = first;p->ms[1] = second;p->ms[2] = last;p->original = p;
 return p;
}
struct product *clonep(struct product *original) {
 if (!original) return 0;
 struct product *p = (struct product *)calloc(1, sizeof(struct product));
 *p = *original;
 return p;
}
struct product *clonep_at_random(struct product **ps, int size) {
 return clonep(ps[rand() % size]);
}
int n_completed(struct product *original, struct product **ps, int size) {
 int i, n = 0;
 for (i = 0; i < size; i++) {
  if (ps[i]->original == original && !ps[i]->ms[0]) n++;
 }
 return n;
}
0368>>281 2/42007/09/26(水) 22:27:50
int n_existed(struct product *original, struct product **ps, int size) {
 int i, n = 0;
 for (i = 0; i < size; i++) {
  if (ps[i]->original == original) n++;
 }
 return n;
}
struct product *waitingproduct(struct machine *m, struct product **ps, int size) {
 int i;
 for (i = 0; i < size; i++) {
  if (ps[i]->ms[0] == m) {
   return ps[i];
  }
 }
 return 0;
}
void shift(struct machine **ms) {
 ms[0] = ms[1];ms[1] = ms[2];ms[2] = ms[3];
}
int main() {
 struct machine *ms[4];
 ms[0] = createm();ms[1] = createm();ms[2] = createm();ms[3] = 0;
 struct product *p, *ps[4];
 ps[0] = createp(ms[0], ms[1], ms[2]);
 ps[1] = createp(ms[1], ms[2], ms[0]);
 ps[2] = createp(ms[2], ms[0], ms[1]);
 ps[3] = 0;
 int values[][3] = {{5, 10, 15}, {10, 15, 5}, {15, 5, 10}};
 
 int i, n, maxsize = 64, size = 0;
 struct product *products[maxsize];
 for (n = 0; ; n++) {
0369>>281 3/42007/09/26(水) 22:28:31
  // 289:各製品5回、発注が来たら終了でお願いします。
  // = 各五個完成したら終了?
  if (
   5 <= n_completed(ps[0], products, size)
   && 5 <= n_completed(ps[1], products, size)
   && 5 <= n_completed(ps[2], products, size)
  ) break;
  // 289:各製品5回、発注が来たら終了でお願いします。
  // = 終了の条件とは別に、発注の回数も各五回?
  // 287:他の製品の発注が来ることはありますが、同じ製品の追加はないです。
  // = 作業中でない製品タイプの発注のみが来る?
  p = clonep_at_random(ps, 4);
  if (p && (
   (p->original == ps[0] && 5 <= n_existed(ps[0], products, size))
   || (p->original == ps[1] && 5 <= n_existed(ps[1], products, size))
   || (p->original == ps[2] && 5 <= n_existed(ps[2], products, size))
   || (ms[0]->p && ms[0]->p->original == p->original)
   || (ms[1]->p && ms[1]->p->original == p->original)
   || (ms[2]->p && ms[2]->p->original == p->original)
  )) {
   free(p);p = 0;
  }
  // 受注
  if (p && size < maxsize) products[size++] = p;
  // 各機械が処理する製品を決定
  for (i = 0; i < 3; i++) {
   if (!ms[i]->p && (ms[i]->p = waitingproduct(ms[i], products, size))) {
    ms[i]->value = values[(&ms[i] - &ms[0])][((void *)ms[i]->p->original - (void *)ps[0]) / sizeof(struct product)];
   }
  }
  // 処理直前の状態。
  char cs[] = {'A', 'B', 'C', 'Q'};
0370デフォルトの名無しさん2007/09/26(水) 22:30:14
その長さなら>>1のうpロダを使って欲しい
0371>>281 4/42007/09/26(水) 22:30:56
  printf("%3d",n);
  for (i = 0; i < 3; i++) {
   if (ms[i]->p) {
    printf(" [%c:%d]", cs[((void *)ms[i]->p->original - (void *)ps[0]) / sizeof(struct product)], ms[i]->value);
   } else {
    printf(" []");
   }
  }
  printf("\n");
  // 処理と処理済処理
  for (i = 0; i < 3; i++) {
   if (ms[i]->p) {
    ms[i]->value--; // 加工
    if (ms[i]->value <= 0) {
     shift(ms[i]->p->ms);
     ms[i]->p = 0;
    }
   }
  }
 }
 printf("%dh", n);
}

// 根本的に何か勘違いしているような気もする。
0372デフォルトの名無しさん2007/09/26(水) 22:33:06
>>370 すんまそん。
0373デフォルトの名無しさん2007/09/26(水) 22:33:25
>>364 簡単にしてみた
#include<stdio.h>
double get_average(double arr[], int arr_size){
double average=0;
int i;
for(i=0;i<arr_size;i++,arr++)
average=(average*i+*arr)/(i+1);
return average;
}
double get_sum(double arr[], int arr_size){
return *arr+((arr_size>0)?get_sum(arr+1, arr_size-1):0);
}
int main(void){
double data[]={10.8,20.3,30,6.40,10.4,2.12};
printf("sum : %f\n", get_sum(data, 6));
printf("average : %f\n", get_average(data, 6));
return 0;
}
0374デフォルトの名無しさん2007/09/26(水) 22:45:06
>>355>>360
添え字演算子はポインタ演算のシンタックスシュガーにすぎないんだから、
結局[]だってポインタ使ってるじゃないですか!
って反抗するのもよいって本で言ってた。
0375デフォルトの名無しさん2007/09/26(水) 22:46:04
>>374
「言ってた」って子供の絵本か!
0376デフォルトの名無しさん2007/09/26(水) 22:50:12
>>313
Short Coding というのがあるよ。
有名な例だと、

main(n){gets(&n);putchar(n%85+5);}
これをコンパイルして実行して、
1 2
とか
3 6
と入力すれば、足される。
0377デフォルトの名無しさん2007/09/26(水) 22:59:22
[1] 授業
[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 
誰か宜しくお願いします
ちなみに初心者です
0378デフォルトの名無しさん2007/09/26(水) 23:03:25
>>377
>>373 のどこが分からないのか説明してくれ
0379デフォルトの名無しさん2007/09/26(水) 23:15:30
>>378
もう放置で…
0380デフォルトの名無しさん2007/09/26(水) 23:19:19
どなたか>>377をお願いします
0381デフォルトの名無しさん2007/09/26(水) 23:20:50
>>380
マルチポスト
0382デフォルトの名無しさん2007/09/26(水) 23:24:31
[1] 授業
[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の戦闘力と攻撃力を求めるプログラムをポインタを使って作成しなさい
誰か宜しくお願いします
ちなみに小心者です
0383fubu ◆dFztVLlF36 2007/09/26(水) 23:26:35
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
atoi関数と同様の処理をする関数を作成しなさい
[3] 環境
 [3.1] OS: (Windows2000)
 [3.2] コンパイラ名とバージョン: CPad forBorland C++Compiler Ver2.31
 [3.3] 言語: (C/C++ どちらでも可)
[4] 期限: ([2007年09月28日10:00まで]
[5] atoiは文字列を10進数に変換する処理をするということはわかるのですが、
関数の自作というのがわかりません、、よろしくお願いします!!
0384デフォルトの名無しさん2007/09/26(水) 23:26:42
クマー
0385デフォルトの名無しさん2007/09/26(水) 23:31:40
>>383
int my_atoi(const char *str){int n;sscanf(str,"%d",&n);return n;}
0386デフォルトの名無しさん2007/09/26(水) 23:35:13
int mein_atoi(const char *str){return atoi(str);}
0387デフォルトの名無しさん2007/09/26(水) 23:44:47
int my_atoi(const char *str){return (int)strtod(str, NULL);}
0388デフォルトの名無しさん2007/09/26(水) 23:46:19
>>386 ちょw
0389デフォルトの名無しさん2007/09/26(水) 23:48:28
int my_atoi(const char *str){int n;istringstream i(str);i>>n;return n;}
0390デフォルトの名無しさん2007/09/26(水) 23:53:34
空気を読まずにマトモなやつを
#include<ctype.h>
int atoi_(const char*str){
  int sign = 0;
  int value= 0;
  while(isspace(*str))++str;
  if(*str == '+')++str;
  else if(*str == '-')sign = 1,++str;
  for(;isdigit(*str);++str){
    value *= 10;
    value += *str-'0';
  }
  if(sign)value = -value;
  return value;
}
0391デフォルトの名無しさん2007/09/26(水) 23:56:16
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 下に記入します
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 9月27日21時
[5] その他の制限:制限などは問題文にあるとおりです。

問題
char型の配列を使用し、ABCDEFGHIJKLMNというリテラルで初期化しておく。その後、
整数kを入力すると、k>0ならば文字列を右にk個巡回シフト、k<0なら左にk個巡回
シフトするプログラムを作成せよ。kはEOF入力まで繰り返し入力できるようにすること。

【実行例】どれだけシフトしますか--> 3
     LMNABCDEFGHIJK
     どれだけシフトしますか--> 4
HIJKLMNABCDEFG
     どれだけシフトしますか--> -7
ABCDEFGHIJKLMN
 どれだけシフトしますか--> 17
LMNABCDEFGHIJK
どれだけシフトしますか--> (EOF入力で終了)

ちなみに実行例を見ればわかると思いますが、シフトは毎回ABC〜から始めるのではなく
前の結果から巡回シフトを開始します。
わかるかたよろしくお願い致します。
0392デフォルトの名無しさん2007/09/27(木) 00:00:13
夏休みの宿題を今からかよって感じだな
0393デフォルトの名無しさん2007/09/27(木) 00:05:45
int myatoi(const char *cs) {
 int a = 1, b = 0;
 const char *c = cs;
 if (*c == '-') {
  a *= -1;
  c++;
 }
 for (; *c != '\0'; c++) {
  if (*c >= '0' && *c <= '9')
   b = (b * 10) + *c - '0';
  else
   break;
 }
 return a * b;
}
0394デフォルトの名無しさん2007/09/27(木) 00:07:06
>>391
#include<string.h>
#include<iostream>
using namespace std;
int main(){
  char s[]="ABCDEFGHIJKLMN";
  int size = strlen(s);
  char*end = s + size;
  int shift;
  while(cout << "どれだけシフトしますか--> ",cin>>shift){
    shift %= size;
    if(shift < 0)shift += size;
    rotate(s,end-shift,end);
    cout << s << endl;
  }
  cout<<endl;
}
03953942007/09/27(木) 00:10:00
あ、いけね。#include<algorithm>忘れてた。
0396デフォルトの名無しさん2007/09/27(木) 00:25:40
[1] 授業単元: リスト
[2] 問題文:
問:対称に並んだ文字列を検出する関数

与えられた文字リストの中の数字(1桁)に対応する数をnとして、
その数字の前後
n文字が対称的である部分を見つけ、複製して返す関数mirror_ima
ge()を作成せよ。

ここで「対照的」とは文字リストのi(i=1,2,...)番目の要素a(i)が
数字であり、それに対応
する数をnとすれば、条件a(i-1)=a(i+1),a(i-2)=a(i+2),...a(i-n
)=a(i+n)を全て満たす事である。

対称的である部分が複数ある場合には、それらの内の最も長いもの
を返すこと。
ただし最長の部分が複数ある場合には、そのいずれかを返せばよい
。
対称的な部分がなければ空リストを返す事。

関数mirror_image()のプロトタイプ宣言は以下の通りである。
struct node *mirror_image(struct node*);

他の関数はこれで御願いします↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img
/4974.txt

0397デフォルトの名無しさん2007/09/27(木) 00:27:44
他の関数はこれで御願いします↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4974.txt


このプログラムに、例えばP1P、abcde3edcxyad、ba1ax4xa1af、ab2
ba2abを与えると、
それぞれ(P1P)、(cde3edc)、(a1ax4xa1a)、(ab2ba)又は(ba2ab)が
印字される。
また、USA、P2P、short5trohなどを与えると()が印字される。


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 9月27日12:00まで
[5] その他の制限: リストを配列にコピーするのは御法度です。

よろしくおねがいします。

0398デフォルトの名無しさん2007/09/27(木) 01:18:40
[1] 授業: 教科書
[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 
誰か宜しくお願いします
ちなみに初心者です
0399デフォルトの名無しさん2007/09/27(木) 01:22:55
次からテンプレに「テンプレすら埋めれない池沼はお帰りください」って書こうぜ
0400デフォルトの名無しさん2007/09/27(木) 01:26:37
ポインタは危険だから気をつけろよ。

#include <stdio.h>
int main(void)
{
int i;
double data[5] ={10.8, 20.3, 30, 6.40, 10.4, 2.12}, max = 0;
char *p;

for (i = 0; i < 5; i++) {
max += data[i];
}
p = "max = %f, average = %f\n";
printf(p, max, max / 5);
return 0;
}
0401デフォルトの名無しさん2007/09/27(木) 01:28:58
危険なのはレーザーポインタ
ポインタ自身はそこまで危険じゃない
0402デフォルトの名無しさん2007/09/27(木) 01:29:04
問題文を読み返して思ったが

double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
だと変だな。
最後のコロンは置き換えたが、要素数が間違っているのまでは気づかなかった。
適当に修正してくれよ。
0403デフォルトの名無しさん2007/09/27(木) 01:32:15
>>399
テンプレに沿わない質問に答える気がないならお前が答えなくて良いよ
うっとうしいんだよ
0404デフォルトの名無しさん2007/09/27(木) 01:37:14
テンプレに沿わない質問がうっとおしい
0405デフォルトの名無しさん2007/09/27(木) 01:41:43
>>401が>>400にマジレスしているのがかわいらしい
0406デフォルトの名無しさん2007/09/27(木) 01:44:05
>>403
無能乙www
0407デフォルトの名無しさん2007/09/27(木) 01:58:34
>>399が無能だろ。俺は普通に答えているわ、ボケが
0408デフォルトの名無しさん2007/09/27(木) 02:08:18
文字列いじる程度の簡単な奴だけだろw
ちょっと難しいのになると出てこないくせに
0409デフォルトの名無しさん2007/09/27(木) 02:10:24
テンプレに従ってなくても答えられるけど、従ってくれたほうが読みやすいことが多いね
0410デフォルトの名無しさん2007/09/27(木) 02:24:52
408 名前:デフォルトの名無しさん 投稿日:2007/09/27(木) 02:08:18
文字列いじる程度の簡単な奴だけだろw
ちょっと難しいのになると出てこないくせに
↑なんだこいつ?きめぇ。初歩的なもの以外、答えていないと思ってんのか?
お前がテンプレに沿った質問の仕方をしていないからって、答えないよと言っているだけで
テンプレに沿っていないけど初歩的ともいえる問題に答えることすら出来ないんだろ?w
gdgd言うなら別に答えなくて良いっつってんじゃん、ここはお前が主のスレじゃねーよ
答える側は任意
0411デフォルトの名無しさん2007/09/27(木) 02:26:46
double data[5] ={10.8,20.3,30,6.40,10.4,2.12};

int main()
{
int last_index = sizeof(data)/sizeof(data[0]);
if (last_index-5)printf("This program is abnormal\n");// 平気か調べる。
for (double *p=data,sum=0.0;p!=data[last_index];p++){
sum+=*p;
}
char output_string[1024];
sprintf(output_string,"sum=%f,avg=%f",sum,sum/(float)last_index);
puts(output_string);
return 0;
}

死ね!
0412デフォルトの名無しさん2007/09/27(木) 02:49:45
[1] 授業: 教科書
[2] OS Windows
[3]問題
double data[5] ={10.8,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 
誰か宜しくお願いします
ちなみに初心者です
0413デフォルトの名無しさん2007/09/27(木) 03:01:06
いいかげんこのネタやめろw
0414デフォルトの名無しさん2007/09/27(木) 03:02:22
>>396
node の定義や必要そうな include もこちらで補うのかい?
0415デフォルトの名無しさん2007/09/27(木) 05:56:53
>>396
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

struct node {
    char element;
    struct node *next;
};

int check(struct node *p, struct node *mid)
{
    int i, j, n = mid->element - '0';
    struct node *temp;
    for(i=0, temp = p; temp!=mid; i++, temp=temp->next);
    if(i!=n) return 0;
    for(i=0; i<n; i++, temp=temp->next) if(temp->next==NULL) return 0;
    for(i=0; i<n; i++, p=p->next) {
        for(temp=mid, j=0; j<n-i; j++, temp=temp->next);
        if(p->element != temp->element) return 0;
    }
    return 1;
}
0416デフォルトの名無しさん2007/09/27(木) 05:59:16
続き
struct node* mirror_image(struct node *list)
{
    struct node *p, *buf = NULL, *temp, *ret = (struct node*)malloc(sizeof(struct node));
    int max = 0;
    ret->next = NULL;
    for(p=list->next; p!=NULL; p=p->next) {
        for(temp=p->next; temp!=NULL; temp=temp->next) {
            if(isdigit(temp->element) && temp->element - '0' > max) {
                if(check(p, temp)) {
                    buf = p;
                    max = temp->element - '0';
                }
            }
        }
    }
    if(buf) {
        int i, l = 2 * max + 1;
        for(i=0, temp = ret; i<l; i++, buf = buf->next) {
            temp = temp->next = (struct node*)malloc(sizeof(struct node));
            temp->element = buf->element;
        }
        temp->next = NULL;
    }
    return ret;
}
0417デフォルトの名無しさん2007/09/27(木) 07:02:54
>>396
眠いのに朝からやってやったお(^ω^)
ループ文なしでやってみたお。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4980.c
0418デフォルトの名無しさん2007/09/27(木) 07:11:59
- '0' とか意味無かったお・・・。冗長すぎワロタ欝出し脳
0419デフォルトの名無しさん2007/09/27(木) 11:01:25
>>365
0420デフォルトの名無しさん2007/09/27(木) 11:09:09
>>396 1/2
char *createcs(struct node *list) {
 char *cs = 0;
 int i = 0;
 struct node *p;
 for (i = 0, p = list->next; p; i++, p = p->next) continue;
 cs = (char *)malloc(sizeof(char) * (i + 1));
 for (i = 0, p = list->next; p; i++, p = p->next) cs[i] = p->element;
 cs[i] = '\0';
 return cs;
}
0421デフォルトの名無しさん2007/09/27(木) 11:09:41
>>396 2/2
struct node *mirror_image(struct node *list) {
 char *cs = createcs(list);
 struct node *mirror = 0;
 int i, j, n, maxn_index = -1;
 for (i = 0; i < strlen(cs); i++) {
  if (!isdigit(cs[i])) continue;
  
  n = cs[i] - '0';
  if (i < n || (strlen(cs) - 1 - i) < n) continue; // 無理
  if (n < cs[maxn_index] - '0') continue; // 無駄
  for (j = 0; j < n; j++) { // n個チェック
   if (cs[i - (j + 1)] != cs[i + (j + 1)]) break;
  }
  if (n == j && cs[maxn_index] - '0' < n) maxn_index = i;
 }
 cs[maxn_index + (cs[maxn_index] - '0') + 1] = '\0';
 if (0 < maxn_index) {
  mirror = initclist(&cs[maxn_index - (cs[maxn_index] - '0')]);
 } else {
  mirror = (struct node *)calloc(1, sizeof(struct node));
 }
 free(cs);
 return mirror;
}
■ このスレッドは過去ログ倉庫に格納されています