Skip to content

Instantly share code, notes, and snippets.

@maehrm
Created March 17, 2019 09:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maehrm/2f92c1f6741abf2b39392c3be896b8ce to your computer and use it in GitHub Desktop.
Save maehrm/2f92c1f6741abf2b39392c3be896b8ce to your computer and use it in GitHub Desktop.
平成28年度秋季試験_基本情報午後問8
#include <stdio.h>
#include <string.h>
#define ON (1)
#define OFF (0)
void edit(char [], char []);
void edit(char pattern[], char value[]) {
char fill;
int signif;
int p, v;
fill = pattern[0];
signif = OFF;
v = 0;
for (p = 0; p < strlen(pattern); p++) {
if (pattern[p] == 'w' || pattern[p] == 'b') { /* 表2のケース1〜7の処理 */
if (signif == OFF) { /* ケース1〜5 */
if (pattern[p] == 'w' && value[v] == '0') {
/* 何もしない */
}
else {
if (value[v + 1] != '+') {
signif = ON;
}
}
if (value[v] == '0') {
pattern[p] = fill;
}
else {
pattern[p] = value[v];
}
}
else { /* ケース6,7 */
if (value[v+1] == '+') {
signif = OFF;
}
pattern[p] = value[v];
}
v++;
}
else { /* 表2のケース8,9の処理 */
if (signif == OFF) {
pattern[p] = fill;
}
}
}
}
int main(void) {
char pattern[][9] = {
" ww,www",
"*ww,www#",
"*www.ww#",
"*wwb.ww#"
};
char value[][7] = {
"01234+",
"00000+",
"00012-",
"00012+"
};
int i, size = sizeof pattern / sizeof pattern[0];
for (i = 0; i < size; i++) {
edit(pattern[i], value[i]);
printf("%s\n", pattern[i]);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment