• ベストアンサー

こんなことって可能なのですか?1234567890→偶数桁を2倍する→"143851271690"と出力 

sgwjnの回答

  • ベストアンサー
  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.2

やってやれなくはないでしょう。 スマートな方法ではありませんが、例えば以下の方法でできるはずです。 (1)整数入力  a = 456789 (2)整数を文字列に変換  b = ["456789"] (3)文字列を1文字ごとに整数に変換  c = [4, 5, 6, 7, 8, 9] (4)偶数のみ2倍にする  d = [8, 5, 12, 7, 16, 9] (5)整数を文字配列に変換  e = ["8", "5", "12", "7", "16", "9"] (6)文字列に連結  f = ["85127169"] (7)文字列を数値に変換  a = 85127169 かなりの力技ですが…。

jpncndgoo2
質問者

お礼

!なるほど・・・。力技?とんでもない。今の私の知識では上記の方法が最も適切だと思います。親切なアドバイスありがとうございました。助かりました。

関連するQ&A

  • ”123456”といった整数を文字列に変換、その後、文字列を1文字ごとに整数に変換 

    忙しい中失礼します。 http://oshiete1.goo.ne.jp/qa3424254.htmlでも質問させて頂いたものですが、 今、回答してくださった方の意見を参考に以下の過程をこなそうとしています。 1.整数入力 →scanf関数を使用し、"123456"と入力します。 2.整数を文字列に変換 → printf("Write the SIN: \n");   scanf("%d", &fnum);   printf("%c\n",fnum); で、"123456"と数値を入力しても”123456”という値が返されず、@となってしまいます。 どうすれば入力した数値が文字列として返ってくるのでしょうか? どんな文・関数を使用すれば数字を文字列として使用することが可能になるのでしょうか? 今のところ習っている文はif else, swith case, while for,do whileで、 getcharやstr?(string)という関数は習っていません。なので、どうプログラムを書けばいいのか??さっぱりなのです。 でもgetcharやstr?(string)という関数を使用するしか方法はないものなのでしょうか?  また、それから 3.文字列を1文字ごとに整数に変換  にする場合、どんな文・関数を使用すれば、1文字”ごと”に整数に変換できるのでしょうか? ごめんなさい、分からないのです。プログラム文、ヒントもしくは参考になるページ等があれば教えて下さい。 よろしくお願いします。 <使用環境:フリーソフト(Borland?)C ANSI C>

  • excelで奇数の4桁数字を偶数に変換する方法ありますか?

    品物の価格一覧表が200行くらいあります。 それらの金額を、百の位で偶数にそろえたいと思っています。 手入力ではなく関数などで一気にできないでしょうか? 下記のように、奇数の百の位を偶数に切り上げたいのです。 1,300→1,400 1,200→1,200のまま 1,900→2,000 元の数字はすべて4桁です。 うまく説明できずにすみませんが、宜しくお願いします。

  • while for/ if else/do while文を使い”640968592”の各数字を独立させて取り出すことは可能でしょうか?

    忙しい中失礼します。 今以下のようなプログラミングを組もうとしています。 1.”640968592”といった9桁の数字を入力→scanfで入力(これは出来ます) 2.各桁の数字を独立させて取り出す:”6” ”4” ”0” ”9” ”6”・・・といった具合に(これも一応出来ます) 3.偶数桁は2倍する   2桁目:4x2=8   4桁目:9x2=18   6桁目:8x2=16   8桁目:9x2=18 そして、私の場合、以下のようなプログラムになるのですが、これがなんとも不細工な感じがし、スマートにプログラムを変更したいと思っています。 抱えている問題:while for/ if else/do while文などを用いて、下記のプログラムを書き直すことは可能なのでしょうか?例え出来たとしても、文int=num1~num35までの定義も減らすことは可能なのでしょうか? 手も足も出ない・・・ プログラム内容 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int num1,num2,num3,num4; /*8 9桁目*/ int num5,num6; /*7桁目*/ ・ ・ ・ int num15,num16; /*2桁目*/ int num17; /*1桁目*/ int num19,num20,num21,num22,num23,num24,num25; int num26,num27,num28,num29,num30,num31,num32; int num33,num34,num35; printf("Write the SIN: "); scanf ("%d", &num1); num2=num1 / pow(10, 8); //9桁目 num3=num1 / pow(10, 7); //8桁目 num4=num3 % 10; num5=num1 / pow(10, 6); //7桁目 num6=num5 % 10; ・ ・ ・ num15=num1/pow(10, 1); //2桁目 num16=num15%10; num17=num1%10; //1桁目 num19=num4*2; //8桁目計算 num20=num19/10; num21=num19%10; num22=num20+num21; ・ ・ ・ num31=num16*2; //2桁目計算 num32=num31/10; num33=num31%10; num34=num32+num33; system("pause"); return 0; } こんなのが直ぐにプログラムとして早く組めるようになりたい・・・ どうしても頭に浮かばないのです。アドバイス等あればお願いします。 <使用環境:フリーソフト(Borland?)C ANSI C>

  • 数の大小の出力

    C言語で関数を用いたプログラムを作成しているのです、行き詰まっています。内容は、double型の数を2つ入力して大きい数を出力するというものですが、エラーは1つもでてはいないのですが結果が0と表示されてしまいます。私の書いたプログラムに問題点はなんなのか教えていただけないでしょうか? ちなみに、このプログラムの条件は ・main関数は値の入力と関数を呼び出し、結果を出力する。 ・大小を判別する部分は関数として作成。 ・関数の引数は入力した2つの値。 ・関数の戻り値は大きいと判定した数。となっております。 ちなみに私の書いたプログラムはこちらです。条件とあわせて指摘をおねがいいたします。 #include<stdio.h>  double daisyou(double x, double y);  int main(){  printf ("数を入力してください。");  scanf("%f %f",&a,&b);  max = ookii;  printf("大きい数は%f\n",max);  }  doubele daisyou(double x, double y){  double ookii;  if(x>y){  ookii = x;  returun ookii;  }else if(x<y){  ookii = y;  return ookii;  } }

  • printf()で出力したいんですが?

    #include <stdio.h> int main( void ) { int air[4]; int i; i = 0; printf( "データ入力\n" ); do{ scanf( "%d\t", &air[ i++ ]); } while(air[ i - 1 ] > 0 ); printf( "%d\n", i ); return 0; } このプログラムはコンパイル出来ますが、期待していたprintf関数での出力ができません。 その理由として何がありますか?関数の使い方が間違っているのか、DO~WHILE文が使えない場所 なのか、もし直すとすればどう直せばいいのですか。

  • 奇数と偶数をそれぞれ足していく:python

    私は、今プログラミングの勉強をしています。そこでfor,if,wheleを使ったプログラムの練習として奇数と偶数をそれぞれ足していくプログラムを作ろうとしているのですが思うように行きません。そのためpythonでこのプログラムを書いていただけないでしょうか。 どうかよろしくお願いします。 仕様としては、下記のようです。 数値を入力してください。 10 奇数:1、偶数:2 奇数:3、偶数:4    ・   ・      ・   ・    ・   ・ 奇数の合計:25、偶数の合計:30 こんな感じのイメージです。

  • 5桁までの2進数を10進数に変換するプログラム(C言語)

    自分で、プログラムを作ったのですが、エラーがしこたまでます、どこがわりのか、みていただきたいのですが、どこが違うのでしょうか?よろしくお願いします。 #include<stdio.h> main() { int x; int a,b,c,d,e,f; printf("5桁までの数値を入力してください"); scanf("%d",&x); if(x>11111) printf(”警告5桁以上です。"); a=(x/10000); if(a!=0) x=x-10000; b=(x/1000); if(b!=0) x=x-1000; c=(x/100); if(c!=0) x=x-100; d=(x/10); if(d!=0) x=x-10; e=(x/1); if(e!=0) x=x-1; f=a*16+b*8+c*4+d*2+e*1; }

  • EXCELで 一桁の数値を二桁に

    教えてください。 エクセルで、入っているデータを編集しているのですが A列には、一桁の数値が B列には、1桁から2桁の数値が C列には、1桁から2桁の数値が D列には、文字データが入っています。 D列のデータに対する対応表を作るために このA~C列のデータを CONCATENATE関数を使って合体させたいのですが、 (合体させると、数値がダブらない為) B列とC列に入っている1桁の数値を 2桁に変換したいのですが、 何かよい方法はありませんでしょうか? 手打ちで変換するには、かなり多いデータなのです。 どなたか、助けてください。

  • getcharをしながらwhile文で出力すると一つ多く出力されるので

    getcharをしながらwhile文で出力すると一つ多く出力されるのです・・・。 変な現象に遭遇しました。1文字入力して「入力した文字は~です。」とxが入力されるまで繰り返してくださいというプログラムを書きました↓ #include <stdio.h> main() { char a; do { a = getchar(); printf("入力した文字は%cです。",a); } while(a != 'x'); } ところが実行して、たとえばキーボードのaを押してenterキーを押すと 入力した文字はaです。入力した文字は です。 と表示されるのです!!「入力した文字はaです。」だけでいいのに1つ多く出力されます。このソースは間違ってますか? すみません、教えてください(涙)

  • 簡単なようで分からない?for文での加算処理方法及び出力表示方法

    忙しい中失礼します。 ・・・???分からないので質問させていただきます。 プログラム過程 1.5桁の数値入力: 68562 2.偶数桁のみ2倍する: 8x2=16 6x2=12 3.68592→6165122という処理を行う。 4.6165182→処理:6 1+6 5 1+2 2→再度5桁表示:67532 (※2桁目と4桁目の数字が1.とは異なります) 5.67532各桁の加算処理を行い(6+7+5+3+2=23)、”23”をディスプレイ上に表示させる。 希望出力結果:    5桁入力 68592 67532 合計 23    ←加算処理方法及び出力表示方法(ここが分からないのです) を望んでいます。 分からないところ:どうやって67532の加算処理を行い、どうやってそれをディスプレイ上に表示させれば良いのかが分かりません???            以下のプログラム[1]、[2]から、[2]を[1]に組み込もうとしています。ですが、[2]for文のカッコ内()の条件???、及び[2]を[1]のどこに組み込めば”合計23”が表示されるのかも分かりません。 そもそもfor文で行うこと自体が無理?そんなことはない、と思っているのですが・・・。それとも[2]を[1]に組み込もうとしてること自体が間違っている?のですかね??? 大変忙しいとは思いますが、アドバイス等ありましたらお願いします。 <使用環境: Borland?? C> [1] 1~4までのプログラミング(完成済) #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int num,tra; int inpt=5; int inptnum; int s; printf("5桁入力; "); scanf("%d", &num); for(inpt ; inpt >=1 ; inpt--) { if(inpt%2 == 0) { inptnum = pow(10,inpt-1); tra = (num/inptnum)%10; s=(tra*2)/10+(tra*2)%10; printf("%d",s); } else {inptnum = pow(10,inpt-1); tra = (num/inptnum)%10; printf("%d",tra);} } system("pause"); return 0; } [2]単独での加算処理プログラム(完成済) #include <stdio.h> #include <stdlib.h> int main() { int count; int Sum; Sum=0; for (count = 1; count <= 6; count++) {printf("%d ",count); Sum = Sum + count; } printf("\nSum%d\n", Sum); system("pause"); return 0; }