文字列から数値への変換して、5 進数から 10 進数に変 換する。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kingyoshi
記事: 1
登録日時: 1週間前

文字列から数値への変換して、5 進数から 10 進数に変 換する。

#1

投稿記事 by kingyoshi » 1週間前

c言語の課題である 5 進数の数字が A-E のアルファベットを用いた文字列で表現(A=0、B=1、C=2、D=3、E=4)されるとする。文字列として入力を受け付け、5 進数から 10 進数に変換せよと出たのですが文字列を数値に変換する段階でつまづいています。どなたか助けてください。また、文字列から数値への変換はユーザー関数で行うことするみたいです。OSはLinaxでコンパイラはC++です。

コード:

#include <stdio.h>
#include<stdlib.h>
int man(){
char m[6]={'0','1','2','3','4'};
int su;
	printf("文字列1を入力してください。 \n");
	scanf("%d",m);
	su=atoi(m)
	printf("%d",su);
	return 0;
}

アバター
あたっしゅ
記事: 255
登録日時: 9年前
住所: 東京23区
連絡を取る:

Re: 文字列から数値への変換して、5 進数から 10 進数に変 換する。

#2

投稿記事 by あたっしゅ » 1週間前

文字列から一文字を取り出すことは、できますか ?
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

box
記事: 1744
登録日時: 9年前

Re: 文字列から数値への変換して、5 進数から 10 進数に変 換する。

#3

投稿記事 by box » 1週間前

不正な文字を入力したときなどのエラー処理はしていません。
ご自由に改変してください。

コード:

#include <stdio.h>

int QuinaryToDecimal(char *s)
{
    int n, i, j;
    char t[] = "ABCDE";

    for (n = i = 0; s[i]; i++) {
        for (j = 0; j < 5; j++) {
            if (s[i] == t[j]) {
                n = 5 * n + j;
            }
        }
    }
    return n;
}

int main(void)
{
    char s[10];

    printf("5進数の文字列を入力(A:0, B;1, C:2, D:3, E:4)\n");
    scanf("%s", s);
    printf("%d\n", QuinaryToDecimal(s));
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

“C言語何でも質問掲示板” へ戻る