#include <stdbool.h>
#include <stdio.h>
void swap(char *a, char *b) {
}
bool is_at(char c) {
}
void justify(char line[], int n) {
}
int main(void) {
char line[] = "t@a@@@n@@q@@@ku@@n"; // 文字列 size_t n = sizeof(line) - 1; // 文字数
justify(line, n); // 前詰め
printf("%s\n", line); // 入れ替えた結果の表示
return 0;
}
実行結果
tanqkun@@@@@@@@@@@
上の雛形を使って実行結果の通りにしたいのですがよくわかりません。
良ければ解答をお願いします
C言語 ソートについて
Re: C言語 ソートについて
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
例えば、
とすると、「実行結果」に書かれている出力が得られますね。
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
例えば、
#include <stdbool.h>
#include <stdio.h>
void swap(char *a, char *b) {
}
bool is_at(char c) {
}
void justify(char line[], int n) {
puts(" tanqkun@@@@@@@@@@@");
line[0] = '\0';
#define n 0
}
int main(void) {
char line[] = "t@a@@@n@@q@@@ku@@n"; // 文字列 size_t n = sizeof(line) - 1; // 文字数
justify(line, n); // 前詰め
printf("%s\n", line); // 入れ替えた結果の表示
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語 ソートについて
#include <stdbool.h>
#include <stdio.h>
void swap(char* a, char* b) {
char temp = *a;
*a = *b;
*b = temp;
}
bool is_at(char c) {
if (c == '@') {
return true;
}
else {
return false;
}
}
void justify(char line[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i; j < n; j++) {
if (is_at(line[i]))
swap(&line[i], &line[j]);
}
}
}
int main(void) {
char line[] = "t@a@@@n@@q@@@ku@@n";
size_t n = sizeof(line) - 1;
justify(line, n);
printf("%s\n", line);
return 0;
}
無駄な動きが多いような気もしますのでご自分で改良お願い致します。
ボールを違うところに投げてたらご指摘して頂けると嬉しいです(o_ _)o
Re: C言語 ソートについて
「'@' ではない文字群を先頭側に集めて,残りを '@' で埋める」と見えるので
それを素直にやればいいんじゃないかと思う.
・上記の作業に swap なんていう処理をどこで使うのか不明なので,未使用とする.
・main() 関数内にさりげなく仕掛けられているトラップ n の解決が馬鹿馬鹿しい.
それを素直にやればいいんじゃないかと思う.
・上記の作業に swap なんていう処理をどこで使うのか不明なので,未使用とする.
・main() 関数内にさりげなく仕掛けられているトラップ n の解決が馬鹿馬鹿しい.
//この関数は必要性不明につき,使わぬ.
void swap(char *a, char *b) {}
//せっかくだからこれは使っておくが,コレ関数にする意味あるか?
bool is_at(char c){ return c=='@'; } //「C言語での」boolについて知らんから,これでいいのか謎だが.
//引数nは使わぬ.
void justify(char line[], int n)
{
const char *s = line;
char *d = line;
while( *s )
{
if( !is_at(*s) ){ *d++=*s; }
++s;
}
while( d != s ){ *d++ = '@'; }
}
//main() 内に唐突に出てくる n がコンパイルエラーを起こすことへの対策.
const int n = 0; //値は使わぬ.
//(main() は提示されたままなので省略)