C言語関係掲示板

過去ログ

No.1319 虫食い算の桁合わせ

[戻る] [ホームページ]
No.17756

配列の移動について
投稿者---清清(2004/11/04 05:57:35)


虫食い算を作っているのですが、配列を使った桁合わせができません。たとえば、123と4567という数字を入力して、配列の桁を合わせて計算したいのですが、うまくいきません。
gets(a);
gets(b);
gets(c);

x=strlen(a);
y=strlen(b);
z=strlen(c);

if(x==10 || y==10 || z==10)goto sakihe;

for(g=1;g<=x;g++){
for(p=10;p>=11-x;p--){
for(i=x-g;i<=p;i++){
for(j=x;j<=10;j++){
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
}
}
sakihe:
ここまでしかプログラムが組めませんでした。
これでは求められません。
だれか教えてくれる方いませんか?


No.17759

Re:配列の移動について
投稿者---あかま(2004/11/04 06:21:34)


>虫食い算を作っているのですが、配列を使った桁合わせができません。たとえば、123と4567という数字を入力して、配列の桁を合わせて計算したいのですが、うまくいきません。
情報が足りません。
123と4567という数字を入力したら、どういう計算をして、どういう出力がしたいのですか?
虫食い算というのは□+1=3で四角を求めるというやつですよね?
あと、計算に使うなら文字列型ではなく、整数型を使ってはいかがでしょう?


No.17760

Re:配列の移動について
投稿者---清清(2004/11/04 06:28:49)


あとで虫食い覆面算に応用するために虫食い算を作っているので文字列型を使用しています。
そのため整数型を使用することができないので何かいい方法はありませんか??


No.17761

Re:配列の移動について
投稿者---清清(2004/11/04 06:36:47)


さっきの質問の不足の部分がありました。
出力の方法ですが文字列として出力したいのです。入力の方法はgets関数を使用します。なので桁をあわせなければ計算ができません。いい案はありませんか???


No.17762

Re:配列の移動について
投稿者---あかま(2004/11/04 06:39:24)


桁が固定でいいなら
#include <stdio.h>
#include <string.h>

#define LEN 10

int main(){
    char a[LEN+1]={'\0'},b[LEN+1]={'\0'},c[LEN+1]={'\0'},buf[LEN+1];
    int i;
    
    for(i=0;i < LEN;i++) a[i] = '0';//'0'で初期化
    for(i=0;i < LEN;i++) b[i] = '0';
    for(i=0;i < LEN;i++) c[i] = '0';
    
    gets(buf);
    strcpy(a+LEN-strlen(buf),buf);//桁をあわせてコピー
    gets(buf);
    strcpy(b+LEN-strlen(buf),buf);
    gets(buf);
    strcpy(c+LEN-strlen(buf),buf);
    
    printf("a=%s\nb=%s\nc=%s\n",a,b,c);
    
    return 0;
}


こんなんでどうでしょうか。


No.17763

Re:配列の移動について
投稿者---あかま(2004/11/04 06:49:47)


#include <stdio.h>

#define LEN 10

int main(){
    char a[LEN+1];
    int i=5;
    
    sprintf(a,"%0*d",LEN,i);
    printf("%s",a);
    return 0;
}

蛇足だけど整数型から変換したいときはこんな手もある。
scanfで整数型で読み込んでこっち使ったほうが楽かも



No.17764

Re:配列の移動について
投稿者---清清(2004/11/04 06:59:03)


完璧です。スゴすぎです!!!
これなら虫食い覆面算にも応用できます。
ありがとうございます。
虫食い覆面算はどのように作ったらいいかアドバイスをしていただけませんか??