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