2017年8月9日 星期三

[瘋狂程設]M90H023:平面幾何:三角形重心

M90H023:平面幾何:三角形重心

#include<stdio.h>

int main()
{
float x1, x2, x3;
float y1, y2, y3;
scanf("%f %f %f %f %f %f", &x1, &y1, &x2, &y2, &x3, &y3);
printf("(%g,%g)", (x1+x2+x3)/3.0, (y1+y2+y3)/3.0);
}

[ITSA Basic] 題目33. 一整數序列所含之整數個數及平均值(Java, C++)

題目33. 一整數序列所含之整數個數及平均值

成績: 0 / 倒扣: 0.8
1. 問題描述 
寫一個程式求一整數序列所含之整數個數及平均值。
輸入說明 
一整數序列以空白鍵隔開數字。
輸出說明:
序列所含之整數個數及平均值。精確至小數點第3位(由小數點第4位四捨五入)
範例 
輸入範例輸出範例
23 34 34 56 56
100 100 -100 100 100 90
1 2 3 4 5 6 7 8 9 10
5 5 5 5 5 5 5 5 5 5 5 5
543 78243 -901 2785
Size: 5
Average: 40.600
Size: 6
Average: 65.000
Size: 10
Average: 5.500
Size: 12
Average: 5.000
Size: 4
Average: 20167.500

  Java

  1. import java.util.Scanner; 
  2.  
  3. public class Main{ 
  4.  
  5.  public static void main(String[] args) { 
  6.         
  7.         int size = 0;   
  8.         int sum = 0;   
  9.          float avg;   
  10.        Scanner sc = new Scanner(System.in);   
  11.          String s; 
  12.       while(sc.hasNext()) 
  13.         { 
  14.           s = sc.nextLine();  
  15.             String[] token = s.split(" ");   
  16.  
  17.           for(int i = 0; i < token.length; i++)   
  18.              {   
  19.                 int num = Integer.parseInt(token[i]);   
  20.                 sum = sum + num;   
  21.                  size++;   
  22.           }  
  23.               
  24.            avg = (float)sum/(float)size;   
  25.             System.out.println("Size: " + size);   
  26.              System.out.printf("Average: " + "%.3f", avg);   
  27.             System.out.println(); 
  28.           size = 0;   
  29.             sum = 0;   
  30.          } 
  31.  } 
  32. }  

  C++

  1. #include <iostream> 
  2. #include <iomanip> 
  3. #include <string> 
  4. #include <sstream> 
  5.  
  6. using namespace std; 
  7.  
  8. int main() { 
  9.     // 題目33. 一整數序列所含之整數個數及平均值 
  10.     //g++(c++11) 
  11.    string text; 
  12.    int size = 0; 
  13.   double sum = 0; 
  14.     string num[10000]; 
  15.  double i_num[10000]; 
  16.    while(getline(cin, text)) 
  17.   { 
  18.       //字串切割 
  19.      stringstream ss(text); 
  20.      string token; 
  21.       while (getline(ss, token, ' ')) 
  22.         { 
  23.           num[size] = token; 
  24.          i_num[size] = stod(num[size]); 
  25.          size++; 
  26.         } 
  27.       for(int i = 0;i < size;i++) 
  28.      { 
  29.           sum = sum + i_num[i]; 
  30.       } 
  31.       double ave = sum / size; 
  32.  
  33.       cout << "Size: " << size << endl; 
  34.         cout << "Average: " << fixed << setprecision(3) << ave << endl;  
  35.      size = 0; 
  36.       sum = 0; 
  37.    } 
  38.   return 0; 
  39. }  










[ITSA Basic] 題目24. 計算複利

import java.util.*;
import java.math.BigDecimal;
import java.math.BigInteger;
/*
 *  題目24. 計算複利
 *  完成日期:2017/08/09
 *  作者:王如馨
 */
public class Num24_compound_interest {

public static void main(String[] args) throws java.lang.NumberFormatException {
BigDecimal r, p ; //每期利率, 每期投入金額
BigDecimal _b = new BigDecimal("1"); //利率要+1(本金)
BigDecimal sum = new BigDecimal("0");//月底本利和
int n; //期數

Scanner sc = new Scanner(System.in);
        r = sc.nextBigDecimal();   //輸入每期利率
        n = sc.nextInt();          //輸入期數
        p = sc.nextBigDecimal();   //輸入每期投入金額

   for(int i = 1;i <= n;i++)
   {
    //計算月底本利和:sum = (sum+p)*(r+1)
    sum = (sum.add(p)).multiply(r.add(_b));
   }
   //把BigDecimal轉換成BigInteger
   BigInteger Intsum = sum.toBigInteger();
   System.out.println(Intsum);  
}
}

--這裡最難的就是期數越大,本利合就會有誤差,為了避免造成誤差所以使用BigDecimal和BigInteger。
--運算是使用.add()和.multiply(),只有同為Big開頭的才能運算,所以我把利率+1的1也宣告成BigDecimal。
--如果把n宣告成Big開頭的話就無法再在for迴圈的()裡使用了。
--在計算完成後把BigDecimal轉換成BigInteger就完成了。