2020年5月8日 星期五

正課 Week 11_07166046

瘋狂程設進階題複習1 : 讀入整數反序列印


#include <stdio.h>
int a[10];        //設置陣列
int N=0;         //陣列目前有0個
int main()
{
int now;             //陣列目前位置
while(1){
scanf("%d", &now);
if(now==0){
break;
}
a[N]= now;           //a[0]= 目前讀入的數
N++;                    //往後移一格
}
for(int i=N-1;i>=0;i--){
printf("%d ", a[i]);      //倒過來印
}
printf("\n");

}

-----------------------------------------------------

瘋狂程設進階題複習2 : 大小寫轉換


#include <stdio.h>
char line[20];
int main()
{
scanf("%s", line);  //讀入字串
for(int i=0; line[i]!=0 ;i++){    //line[i]!=0 --> 當字串為 '\0' 是結尾,結束
char a= line[i];          //現在的字母
if(a>='A' && a<='Z'){     //如果現在字母是大寫
line[i]= a-'A'+'a';    //減去大寫成分+上小寫
}
else if(a>='a' && a<='z'){   //現在是小寫,同上
line[i]= a-'a'+'A';
}
}
printf("%s\n", line);
}





-------------------------------------------------------



泡泡排序法

--> 兩兩比較,如果後面的比較小就交換

--> 對於快排好的效率特別快
--> 對於大的都在前面的效率特別低

//int []a=new int[10];   //Java's Array
//int []a={3,0,1,8,7,2,5,4,6,9};  //https://www.youtube.com/watch?v=lyZQPjUT5B4
//int []a={6,3,5,9,1,0,4,2,7,8};
//int []a={1,2,3,5,0,4,6,7,8,9};
//int []a={0,9,1,2,3,5,4,6,7,8}; //對於快要排好的東西, 特別快!!!
int []a={9,8,7,6,5,4,3,2,1,0}; //最糟的狀況:全倒 => QQ
void setup(){
  size(500,800);
  //for(int i=0;i<10;i++){  //random choose number
  //  a[i]=int(random(10));  //亂數決定數字
  //}
  textSize(36);
  textAlign(LEFT,TOP);
  showArray(y);
}
int y=0;
void showArray(int y){
  for(int i=0;i<10;i++){
    fill(255);  rect(i*50, y, 50,50);
    fill(0);         text(a[i], i*50, y);
  }  
}
void draw(){
  
}
void mousePressed(){
  for(int i=0; i<10-1;i++){
    if(a[i] > a[i+1]){
      int temp=a[i];
      a[i]=a[i+1];
      a[i+1]=temp;
      fill(255,0,0,128); rect(i*50, y, 100,50);
    }
  }
  y+=50;
  showArray(y);
}

容易理解的影片範例


-----------------------------------------



小精靈繼續做~

void setup()
{
   size(400,400); 
}
int x=100, y=100, angle= 45, diff= 1;   
//
x,y= 一開始座標 ,angle= 角度,diff= 差值
void draw()
{
    background(0);
    arc(x,y, 80,80, radians(angle), radians(360-angle), PIE);
    angle+=diff;
    if(angle>60) diff=-1;
    if(angle<0) diff=+1;
}







--------------------------------------------------------------------------------

void setup()
{
   size(400,400); 
}
int x=100, y=100, angle= 45, diff= 1, dx= 1,dy= 0;
void draw()
{
    background(0);
    arc(x,y, 80,80, radians(angle), radians(360-angle), PIE);
    angle+=diff;
    if(angle>60) diff=-1;
    if(angle<0) diff=+1;
    x+=dx;   //x座標增加
    y+=dy;   //y座標增加
}
void keyPressed()   //按鍵,小精靈移動
{
    if(keyCode==RIGHT) { dx=+1; dy= 0;}
    if(keyCode==LEFT) { dx=-1; dy= 0;}
    if(keyCode==UP) { dx=0; dy= -1;}
    if(keyCode==DOWN) { dx=0; dy= +1;}

}




---------------------------------------------------


void setup()
{
   size(400,400); 
}
int x=100, y=100, angle= 45, diff= 1, dx= 1,dy= 0, dir=0;
void draw()
{
    background(0);
    arc(x,y, 80,80, radians(dir+angle), radians(dir+360-angle), PIE);
    angle+=diff;
    if(angle>60) diff=-1;
    if(angle<0) diff=+1;
    x+=dx;
    y+=dy;
}
void keyPressed()   //增加方向的角度 dir : 0,180,270,90
{
    if(keyCode==RIGHT) { dx=+1; dy= 0; dir= 0;}
    if(keyCode==LEFT) { dx=-1; dy= 0; dir= 180;}
    if(keyCode==UP) { dx=0; dy= -1; dir= 270;}
    if(keyCode==DOWN) { dx=0; dy= +1; dir= 90;}

}

--------------------------------------------------



大致完成小精靈功能

int [][]bean={
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1} };
void setup()
{
   size(400,400); 
}
int x=100, y=100, angle= 45, diff= 1, dx= 1,dy= 0, dir=0;
void draw()
{
    background(0);
    fill(255);
    for(int y=0; y<10; y++){
      for(int x=0; x<10; x++){
        if(bean[x][y]==0) continue;
        ellipse(20+x*40, 20+y*40, 10,10);
        if(dist(x,y, 20+x*40, 20+y*40) <20) bean[y][x]=0;
      }
    }
    fill(#FFCF0D); arc(x,y, 40,40, radians(dir+angle), radians(dir+360-angle), PIE);
    angle+=diff;
    if(angle>60) diff=-1;
    if(angle<0) diff=+1;
    x+=dx;
    y+=dy;
}
void keyPressed()
{
    if(keyCode==RIGHT) { dx=+1; dy= 0; dir= 0;}
    if(keyCode==LEFT) { dx=-1; dy= 0; dir= 180;}
    if(keyCode==UP) { dx=0; dy= -1; dir= 270;}
    if(keyCode==DOWN) { dx=0; dy= +1; dir= 90;}

}







沒有留言:

張貼留言