変数やマクロの追加なしでプログラムを完成させたい。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
c learner

変数やマクロの追加なしでプログラムを完成させたい。

#1

投稿記事 by c learner » 9年前

コメントの仕様通りにsumを作ろうとしたのですがうまく作ることができません。どうすればよいでしょうか?

コード:

#include<stdio.h>
char NUM[]="123.45678";
# define c2n(c) (( (c)>='0' && (c)<='9' )?(c)-'0':(c))
int reverse();
int replace();
int sum(char *p);
main(){
  char *ptr;
  ptr=NUM;
  printf("abc.def->fed.cba:\t%s->",NUM);
  reverse();
  putchar('\n');
  printf("abc.def->def.abc:\t %s->",NUM);
  replace();
  putchar('\n');
  printf("         \t\t\t-----------\n");
  ptr=NUM;
  printf("         \t\t\t+%5d\n",sum(ptr));
}
int reverse( void ){/*123.45678を87654.321即ちNUMの中の配列を逆順に表示する関数*/
  char temp1[100];
  char *p1, *p2;	
  p1 = NUM;
  p2 = temp1;	
  while ( *p1 != '\0' ) {
    p1++;
  }
  while (p1 > NUM) {	
    p1--;		
    *p2 = *p1;	
    p2++;		
  }
  *p2 = '\0';		
  printf( "%s\n",temp1);
  return 0;
}
int replace(void){/*123.45678を45678.123に即ちNUMの中の配列の小数部分と整数部分を入れ変え表示する関数*/
  char temp2[50],temp3[50];
  char *p1,*p2,*p3;	
  p1=NUM;
  p2=temp2;
  p3=temp3;
  while(*p1!='.'){*p2=*p1;p1++;p2++;
  }
  *p2='\0';
  while(*p1!='\0'){p1++;*p3=*p1;p3++;
  }
  printf("%s.%s\n",temp3,temp2);
  return 0;
}
int sum(char *p){/*生成した2個の数値の整数部分の和を画面表示する。 num_aは逆順の数値,num_bは整数部分と小数部分を入れ替えた数値. 変数、マクロ、関数追加はなしマクロc2nは利用可*/
  int num_a=0,num_b=0;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 変数やマクロの追加なしでプログラムを完成させたい。

#2

投稿記事 by みけCAT » 9年前

確実に画面表示させるのは難しいですが、出力するだけなら素直に実装すればいいでしょう。

コード:

int sum(char *p){
  int num_a=0,num_b=0;
  p=NUM;
  /* 小数部分と整数部分を入れ替えたので、もとの小数部分のみを数値に変換する */
  while (*p!='\0' && *p!='.') p++;
  if (*p != '\0') {
    while (*++p!='\0') num_b = num_b*10 + c2n(*p);
  }
  /* 逆順なので、逆順に数値に変換する */
  while (*--p!='.') {
    num_a = num_a*10 + c2n(*p);
    if (p == NUM) break;
  }
  /* 2個の数値の整数部分の和を出力する */
  printf("%d\n", num_a + num_b);
  return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

c learner

Re: 変数やマクロの追加なしでプログラムを完成させたい。

#3

投稿記事 by c learner » 9年前

みけCAT さん 解決しました!ありがとうございました。

閉鎖

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