C言語で文字列の文字数の少ない順に入れ替えるプログラム教えてくれ

1: 2019/07/09(火) 01:37:31.95 ID:MkzKvWZC0
落ちたので

2: 2019/07/09(火) 01:38:03.95 ID:MkzKvWZC0
ちな入力させた文字列を小さい順に入れ替えて出力するんや

7: 2019/07/09(火) 01:40:00.09 ID:dA05fRBY0
Cは知らんけど
文字列を配列に突っ込んで少ない順に並び替えて吐き出せばええんちゃうの

8: 2019/07/09(火) 01:40:16.28 ID:MkzKvWZC0
>>7
それがむずいんや

9: 2019/07/09(火) 01:40:52.11 ID:MkzKvWZC0
#include<stdio.h>
#include<string.h>
int main(void)
{
char buffer[20][33],b[20][20];
int i,j,s,w;
for(i=0,j=0;i<19;i++){
buffer[i][j]='\0';
j++;
}
i=0;
printf("データ入力\n");
printf("buffer[312]=",i);
scanf("176",&buffer[i]);
for(i=1;strcmp(buffer[i-1],"END")!=0 && strcmp(buffer[i-1],"end")!=0;i++){
printf("buffer[]=",i);
scanf("",&buffer[i]);
}
printf("データ出力\n");
for(j=0;j<i-1;j++){
for(s=0;s<i-2;s++){
if( strcmp(buffer[s],buffer[s+1])){
strcpy(b[s],buffer[s]);
strcpy(buffer[s],buffer[s+1]);
strcpy(buffer[s+1],b[s]);}}}
for(i=0;i<s;i++){
printf("\n",buffer[i]);}
return 0;
}

10: 2019/07/09(火) 01:41:03.56 ID:MkzKvWZC0
これのどこがだめやねん

11: 2019/07/09(火) 01:41:28.41 ID:MkzKvWZC0
なんでやねん

12: 2019/07/09(火) 01:41:46.75 ID:MkzKvWZC0
もう終わったわこれ

13: 2019/07/09(火) 01:41:58.95 ID:zmGaNxXu0
文字列のポインタを別に持っておいてstrlenで返ってきた長さでソート

15: 2019/07/09(火) 01:42:19.87 ID:MkzKvWZC0
>>13
ポインタとか全然分からん

14: 2019/07/09(火) 01:41:59.39 ID:MkzKvWZC0
どうすんねんこれ

17: 2019/07/09(火) 01:42:33.25 ID:CZUCRZSQM
長さ取得してバブルソートでええやん

19: 2019/07/09(火) 01:42:48.96 ID:Zq8Ra/Ce0
バブルソートて検索しろ

20: 2019/07/09(火) 01:42:51.85 ID:0xg5ID6v0
Cに配列のsortメソッドないんか
sortメソッドのファンクション内で2つの値の桁数見て戻り値を正負値で返すだけや
ちなJavascript

21: 2019/07/09(火) 01:43:03.57 ID:59tEvfU80
strcmp(buffer[i-1],"END")!=0 && strcmp(buffer[i-1],"end")!=0
これAND条件やん
"END" OR "end" ちゃうか

25: 2019/07/09(火) 01:44:02.87 ID:MkzKvWZC0
>>21
継続条件やぞ

30: 2019/07/09(火) 01:46:05.00 ID:59tEvfU80
>>21
ああ ちゃうなワイが間違ってるわ
このソースわかり難いねん

24: 2019/07/09(火) 01:43:39.91 ID:gX8CHpNc0
インデントしなおしてもう一回書き込め

32: 2019/07/09(火) 01:46:37.06 ID:0QyG57Ga0
長さ取得してバブルソートして元の文字列表示じゃいかんのか?

34: 2019/07/09(火) 01:46:48.76 ID:MkzKvWZC0
>>32
それどうやるか分からんねん

33: 2019/07/09(火) 01:46:42.06 ID:upRt3V/m0
なぜなんJで聞いてしまうのか

そもそも
for(i=0,j=0;i<19;i++){
 buffer[i][j]='\0';
 j++;
}
の時点で何がしたいのか意味分からん

35: 2019/07/09(火) 01:47:01.27 ID:MkzKvWZC0
>>33
初期化や

41: 2019/07/09(火) 01:48:14.31 ID:upRt3V/m0
>>35
これだと i == j な対角成分にヌル文字入れてるだけやぞ

42: 2019/07/09(火) 01:48:26.21 ID:MkzKvWZC0
>>41

50: 2019/07/09(火) 01:49:39.68 ID:upRt3V/m0
>>42
これだと buffer[0][0], buffer[1][1], ..., buffer[18][18] に '\0' が入るだけやけどそれがやりたいことなんか?

59: 2019/07/09(火) 01:51:09.70 ID:nxTZuwyyM
>>42
i x j列を図に書いてループの動き追ってみろや
原理自体は小学生でも分かるぞ

63: 2019/07/09(火) 01:52:01.45 ID:CZUCRZSQM
>>33
混乱ぶりが伝わってくるわこれ
2重ループでググれ

38: 2019/07/09(火) 01:47:49.93 ID:rqaZsaSBa
アドレス渡しが苦手でCはマスターできなかった。

39: 2019/07/09(火) 01:47:50.76 ID:pEewQF5n0
ソートのアルゴリズムまでは多分要求しとらんやろ

46: 2019/07/09(火) 01:49:09.29 ID:wLvqyTkI0
buffer[0][0],buffer[1][1]...buffer[19][19]で初期化されるけどええんか?

47: 2019/07/09(火) 01:49:22.56 ID:MkzKvWZC0
>>46
あっそっか

53: 2019/07/09(火) 01:50:15.33 ID:gX8CHpNc0
初期化はbuffer[20][33]={};でええで

57: 2019/07/09(火) 01:50:53.71 ID:MkzKvWZC0
>>53
サンガツ