2015年12月22日火曜日

C言語:2次配列

問題1.
下の表は東海道新幹線の料金表(=乗車券+自由席特急券)である。
キーボードから乗車駅と下車駅(行き先)をコードで入力し、
料金を求めるプログラムを作成。

                                00        01          02        03        04      05         06        07       08      09
       発着\着駅  |   東京    新横浜  小田原  熱海    三島    新富士  静岡    掛川    浜松    豊橋
============================================================================
00      東京         |    -
01      新横浜     |   1320     -
02      小田原     |   3130    1900     -
03      熱海         |   3570    2960    1240     -
04      三島         |   3890    3300    2330    1160     -
05      新富士     |   4930    4300    2790    2420    1320     -
06      静岡         |   5670    4930    3300    2960    1900    1410     -
07      掛川         |   7140    6820    4930    4620    4300    3130    1660     -
08      浜松         |   7560    7140    5350    4930    4620    4300    2230    1320     -
09      豊橋         |   8190    7870    6820    5670    5350    4930    4300    2790    1490     -


問題2.
キーボードから適当な人の姓名を10人分入力し、それをアルファベット順に
並べるプログラムを作成。(大小を区別し、大→小の順)

問題1のプログラム
int main(void) { long int ryokin[10][10]={{},{1320},{3130,1900},{3570,2960,1240},{3890,3300,2330,1160},{4930,4300,2790,2420,1320},{5670,4930,3300,2960,1900,1410},{7140,6820,4930,4620,4300,3130,1660},{7560,7140,5350,4930,4620,4300,2230,1320},{8190,7870,6820,5670,5350,4930,4300,2790,1490}}; int i,j; char s[1],t[1]; printf("乗車駅コードと下車駅コードを入力してください\n"); printf("01:東京 02:新横浜 03:小田原 04:熱海 05:三島 06:新富士 07:静岡 08:掛川 08:浜松 09:豊橋\n"); printf("乗車駅コード:"); scanf("%s",s); strtok(s,"0"); i = atoi(s); printf("下車駅コード:"); scanf("%s", &t); strtok(t,"0"); j = atoi(t); printf(" 料金は"); if(i<=j){printf("%ld円です。",ryokin[j-1][i-1]);} else {printf("%ld円です。",ryokin[i-1][j-1]);} return 0; }

問題2のプログラム
#define MAX 10

int main(void)
{
  int h,i,j;
  char name[MAX][20],s[128];
  for(h =0;h    printf("%d個目の名前: ",h+1);
    scanf("%s", name[h]);
  }
  for(i=0;i    for(j=i+1;j      if (strcmp(name[i], name[j]) > 0) {
          strcpy(s, name[i]);strcpy(name[i], name[j]);strcpy(name[j], s);
      }
    }
  }
  printf("アルファベット順(a to z,大文字 to 小文字)\n");
  for(h=0;h  return 0;
}

2015年12月21日月曜日

C言語:1次配列

このあたりの内容はQiitaではじめようかとも思ったんだけど、
まだまだ鍛錬が必要なので雑記としてメモ

C言語のプログラミング演習。

問題1.
2つの配列a,bに、キーボードから各々10文字以内の文字列を入力し、
それらをabの順の順とbaの順に連接するプログラムを作成。

問題2.
上記の1において、a、bに入力された文字列の各々の長さを比較し、
長い文字列が先頭に、短い文字列がその後に連接するように出力するプログラムを作成。
ただし、2つの文字列の長さが同じ場合には、a、bの順で連接。

問題3.
キーボードから2つの文字列(地名、氏名など)を入力し、アルファベット順に
出力するプログラムを作成してください。endが入力されたとき、
プログラムが終了すること。たとえば、TokyoとSapporoが入力されたときは、
Sapporo
Tokyo
の順で出力。

問題1のプログラム
int main(void){
  char a[10],b[10],x[10];
  printf("文字列を入力してください。\n");
  printf("a=");scanf("%s",&a);
  printf("b=");scanf("%s",&b);
  memcpy(x,a,sizeof(a));
  strcat(a,b);
  strcat(b,x);
  printf("a,bの順=%s\n",a);
  printf("a,bの順=%s\n",b);
  return 0;
}

問題2のプログラム
int main(void){
  char a[10],b[10],x[10];
  printf("文字列を入力してください。\n");
  printf("a=");scanf("%s",&a);
  printf("b=");scanf("%s",&b);
  memcpy(x,a,sizeof(a));
    if (strlen(a) < strlen(b)){
       strcat(a,b);
        printf("配列aの長さ<配列bの長さ:a,bの順=%s\n",a);
    }else if(strlen(x) > strlen(b)){
       strcat(b,x);
        printf("配列aの長さ>配列bの長さ:b,aの順=%s\n",b);
    }else{
       strcat(a,b);
        printf("配列aの長さ=配列bの長さ:a,bの順=%s\n",a);
    }
  return 0;
}
問題3のプログラム
int main(void){
  char a[20],b[20];
  int x;
while(1){
  printf("地名を2つ入力してください。\n");
  printf("endを入力すると終了します。\n");
  printf("地名1:");scanf("%s",&a);
  if(strcmp(a,"end")==0)break;
  printf("地名2:");scanf("%s",&b);
  if(strcmp(b,"end")==0)break;
  x = strcmp(a,b);
    if (x = 1){
      printf("%s\n",b);printf("%s\n",a);
    } else if(x = -1){
      printf("%s\n",a);printf("%s\n",b);
    } else {
      printf("%s\n",b);printf("%s\n",b);
    }
  }
  return 0;
}

2015年12月16日水曜日

memo apacheのhttpd.confのディレクティブ

ひとつひとつは理解できるんだけど、
チューニングするとなると、各ディレクティブの設定具合が重要になる。

StartServers
Apacheを起動したタイミングに生成される子プロセスの数。デフォルト5

MinSpareServers
idle状態のプロセスの最小の数。デフォルト5
プロセスの数がこの値より少なくなったら、この値までプロセスを起動する。

MaxSpareServers
idle状態のプロセスの最大の数。デフォルト10
プロセスがこの値より多くなるとプロセスを殺す。

※MinSpareServersが下限に対し、MaxSpareServersが上限として、
その範囲のidle状態のプロセス数を保とうとする。

MaxRequestsPerChild
それぞれのプロセスが扱えるリクエストの総数。デフォルトは10000
プロセス処理数がこの値を超えたら、プロセスを終了させる。
プロセスが起動してからこの数だけリクエストをさばいたら死ぬ。
0に設定すれば無制限。

MaxClients
同時接続数。応答可能な同時リクエスト数。デフォルト256

Timeout
指定された秒数を待っても応答がない場合は、セッションを切断。 デフォルト値は300

KeepAlive
ひとつのコネクションで複数のリクエストを扱う機能。デフォルトon

MaxKeepAliveRequests
KeepAliveで接続を維持している間に処理するリクエスト数。デフォルト100
ひとつのコネクションで許可されるリクエスト数。

KeepAliveTimeout
接続を一定時間で切断する時間。デフォルト15