2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【電脳少女 プログラミング2088 Cランク】 廃マンションの一室 C言語による

Last updated at Posted at 2025-02-08

概要

↓こちらに参加し、といた中で現時点でん?となったものです
https://paiza.jp/entry/denno2088_qiita

2025/02/09更新
ご指摘いただき、main関数内のconvert(N, &result)をconvert(N, result)に変更

コーディング経験

大学に入ってからC言語を学習中

アプローチ

シンプルに、10進数から3進数に変換する際と10進数から特殊な3進数への変換の際に発生するギャップを埋める方法をとりました。結構汚いコードを書いているとは思いますが暖かく、余力があればご指摘いただけると幸いです。

コード

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 40

void convert(int n, char *result);
int main(void)
{
    int N;
    char result[MAX_LEN];
    scanf("%d ", &N);
    convert(N, result);
    printf("%s", result);
    return 0;
}
void convert(int n, char *result){
    if(n == 0){
        strcpy(result, "0");
        return;
    }
    
    char temp[MAX_LEN];
    int index, remainder, i;
    index = 0;
    
    //特殊な3進法への変換
    while(n != 0){
        remainder = n % 3;
        n /= 3;
        //もしあまりが2であったら、それを-1として扱い、n++する(繰り上げする)
        //この特殊な3進法においては、通常10進法から3進法を導く時の方法はそのまま使えない。
        //なぜなら、10進法の2を特殊な3進法へ変えた時、結果は2となるが、2は特殊3進法で-1を表すためである。
        //もし使うのだとしたら、この帳尻を3あげることで、つまり元の10進法で繰り上げることで表現すれば良い。
        if(remainder == 2){
            remainder = -1;
            n++;
        //あまりが-2に突入したら、あまりを1にする
        }else if(remainder == -2){
            remainder = 1;
            n--;
        }
        temp[index++] = (remainder == -1) ? '2' : ('0' + remainder);
    }
    
    for(i = 0; i < index; i++){
        result[i] = temp[index - 1 - i];
    }
    //ヌル文字で終端を表す
    result[index] = '\0';
}

レイミレビュー(ナルシストVer)

Screenshot 2025-02-08 at 22.22.48.png

感想

意外と記事書くのって難しいんですね。それはともかく、レビューをAIに受けることができるのとゲーム性を同時に楽しみながらコーディングできるの、すっごいワクワクして面白いと感じました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?