2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

c言語宿題です..

1 ::01/10/18 23:18
全然分からないのです。
入れ替えをしないバブルソートのプログラムはどうすればいいんのですか??

2 :デフォルトの名無しさん:01/10/18 23:27
>>1
意味がわからん

3 :デフォルトの名無しさん:01/10/18 23:28
>>1
テーブルを使うってことか?

4 ::01/10/18 23:29
構造体をコピーするとしないの違いは??

5 :デフォルトの名無しさん:01/10/18 23:30
頼むからわかるように書け。

6 :デフォルトの名無しさん:01/10/18 23:30
同順位のものの順番を保持するってこと?

7 ::01/10/18 23:34
入れ替えは、構造体をコピーしている。y−>temp,x->y,temp->x;
ひとつの入れ替えのたびに構造体は3回コピーしている。
構造体のデータが大きかったらコピーしたくない。
コピーせずにバブルソートするにはどうしたらよいか?
というのが問題です。

8 :デフォルトの名無しさん:01/10/18 23:35
>>1
いかなる入れ替えもせずにソートすることなど、神でもできまい。

もうちょっと条件がついてるだろ、条件が。
おまえ、問題をちゃんと理解してないんじゃないか?

9 :デフォルトの名無しさん:01/10/18 23:37
教えてやらんでもないが、その前に答えてくれ。
お前は何歳で、身分(大学生とか専門学生とか)は
何だ?その日本語能力はヤバすぎるぞ。

10 ::01/10/18 23:38
すいません。今でも、問題の文全部かきました。

11 :デフォルトの名無しさん:01/10/18 23:38
>>7
「バブルソート」っつーのがミソだろ?
じゃあ、リンクリスト使えや、ゴルァ!

それでも、論理的には「入れ替え」てるぞ!

12 ::01/10/18 23:39
18才大学1年生

13 :デフォルトの名無しさん:01/10/18 23:41
ポインタ配列つくってそっちで入れ替えれ。

14 :デフォルトの名無しさん:01/10/18 23:42
あほか!
上下に配列の余裕が一杯あればできるじゃんか。

15 ::01/10/18 23:42
全然わからないものですいませんでした、

16 ::01/10/18 23:47
リンクリストとはどういうものですか?

17 :デフォルトの名無しさん:01/10/18 23:50
この手のスレを立てた奴の質問に答えるの、やめないか?

18 :デフォルトの名無しさん:01/10/18 23:56
問い詰めたい。小一時間問い詰めたい。

19 :デフォルトの名無しさん:01/10/18 23:56
>>17
同意

http://piza2.2ch.net/test/read.cgi/tech/1003286513/l50
↑のスレといい、単発質問スレに答えるなよって思う。

20 :デフォルトの名無しさん:01/10/18 23:58
>>17
いいんだよ。駄目になればこっちの業界にも
来なくなるだろうから。

>>1
ほれ。これがポインタを使ったやりかただ。
多分字下げが変になるけど気にするな。

#include <stdio.h>
#define NUMBER (10)

struct foo {
int a;
int b;
int c;
};

int main (void)
{

struct foo n[NUMBER];
struct foo *p[NUMBER];
struct foo *temp;
int i;
int j;

for (i = 0; i < NUMBER; i++) {
n[i].a = rand() % 1000;
p[i] = &n[i];
printf("%d ", n[i].a);
}
printf("\n");

for (i = NUMBER - 1; i > 0; i--) {
for (j = 0; j < i; j++) {
if (p[j]->a > p[j + 1]->a) {
temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}

for (i = 0; i < NUMBER; i++) {
printf("%d ", p[i]->a);
}
printf("\n");

return 0;
}

21 :デフォルトの名無しさん:01/10/19 00:03
上げるな馬鹿

22 :デフォルトの名無しさん:01/10/19 00:17
こういうスレッドが上のほうに連発してると
来て損した気分にならないか?

23 :デフォルトの名無しさん:01/10/19 00:20

1はプログラムの授業中に居眠りでもしていたんだろう。
1はプログラムの授業中をサボっていたのだろう。
1はプログラムの実習中にどこぞのエロWEBでも見ていたのだろう。
1はプログラムの授業中友人との話に夢中だったのだろう。
1の周りには、宿題について聞けるような友人がいないのだろう。

こんなスレ立てる奴はどうかしている。
こんな質問に答える奴もどうかしてる。
まさに「スレ立てるまでもない質問」だ。
宿題わかりません、宿題おしえてくださいスレ見るたびにうんざりする。
そんなことは友人か先生に聞け。
ああ、ごめん。優秀な友人はいないのか。
先生も相手にしてくれないからここで聞いているのか。
だったらこっちにいけバカ。
http://piza2.2ch.net/test/read.cgi/tech/1001998049/l50

24 :デフォルトの名無しさん:01/10/19 00:45
さんざん叩いても最終的には適切なポインタを残すのが2chの優しさ

25 :デフォルトの名無しさん:01/10/19 01:06
くだらない質問だ。

26 :デフォルトの名無しさん:01/10/19 11:43
>>25
社長またそんなこと! 言わないで下さいよもう!!

27 :リンクリスト 1/3:01/10/20 14:59
#include <stdio.h>
#include <stdlib.h>
#define NUMBER (10)

struct _node {
  struct _node *next;
  struct _node *prev;
  void *data;
};

struct _list {
  struct _node *first;
  struct _node *last;
};

struct _list *list_new();
void list_delete(struct _list *list);
int list_add_last(struct _list *list, void *data);


struct foo {
  int a;
  int b;
  int c;
};

void list_foo_bubble_sort(struct _list *list);
void list_foo_print(struct _list *list);
int is_foo_swap(struct foo *f1,struct foo *f2);

int main (void)
{
  struct foo f[NUMBER];
  struct _list *list;
  int i;

  if( ! (list = list_new()) ){
    printf("ERROR : list_new\n");
    return -1;
  }

  for (i = 0; i < NUMBER; i++) {
    f[i].a = rand() % 1000;
    f[i].b = rand() % 1000;
    f[i].c = rand() % 1000;

    if(list_add_last(list,&f[i])){
      printf("ERROR : list_add_last (f[%d])\n",i);
      list_delete(list);
      return -1;
    }
  }

  list_foo_print(list);
  list_foo_bubble_sort(list);
  list_foo_print(list);

  list_delete(list);
  return 0;
}

28 :リンクリスト 2/3:01/10/20 15:00
int is_foo_swap(struct foo* f1,struct foo* f2)
{
  if(f1->a > f2->a)
    return 1;
  else
    return 0;
}

void list_foo_bubble_sort(struct _list* list)
{
  struct _node *target;
  struct _node *max;

  if(list==NULL || list->first==NULL)
    return;

  printf("########################\n");
  printf("### list_foo_bubble_sort\n");
  printf("########################\n");

  max = list->first;
  while(max->next){
    target = max->next;

    if( ! is_foo_swap(max->data,target->data)){
      max = target;
      continue;
    }

    while(target->prev){
      if(is_foo_swap(target->prev->data,target->data)){
        target->prev->next = target->next;
        if(target->next) target->next->prev = target->prev;
        target->next = target->prev;
        target->prev = target->next->prev;
        target->next->prev = target;
        if(target->prev) target->prev->next = target;
      }else{
        break;
      }
    }
  }
}

29 :リンクリスト 3/3:01/10/20 15:01
void list_foo_print(struct _list *list)
{
  struct foo *f;
  struct _node *current;

  if(list==NULL)
    return;

  printf("===== struct foo =====\n");

  current = list->first;
  while(current){
    f = current->data;
    printf("foo : a = %d, b = %d, c = %d\n", f->a,f->b,f->c);
    current = current->next;
  }
}

struct _list *list_new()
{
  struct _list *list;
  if(list = malloc(sizeof(struct _list))){
    list->first = NULL;
    list->last = NULL;
  }
  return list;
}


void list_delete(struct _list *list)
{
  struct _node *next;
  struct _node *current;

  if(list==NULL)
    return;

  current = list->first;
  while(current){
    next = current->next;
    free(current);
    current = next;
  }
}

30 :げ、まだあったリンクリスト 4/3:01/10/20 15:02
int list_add_last(struct _list* list, void *data)
{
  struct _node *node;

  if(list==NULL || data==NULL)
    return -1;

  if(! (node = malloc(sizeof(struct _node))))
    return -1;

  node->next = NULL;
  node->prev = NULL;
  node->data = data;

  if(list->last){
    list->last->next = node;
    node->prev = list->last;
    list->last = node;
  }else{
    list->first = node;
    list->last = node;
  }

  return 0;
}

31 :デフォルトの名無しさん:01/10/20 15:06
void list_foo_bubble_sort(struct _list *list);
に、is_swap()の関数ポインタ渡せるようにすれば、汎用的になるYO。

32 :デフォルトの名無しさん:01/10/20 15:16
あ、バグだ・・・
>>29のlist_delete()、nodeしか開放してない。
list自身を消し忘れてる。鬱。

10 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)