OIT Archive
C演習I 12
最終更新:
oit-archive
-
view
workc1.c
- #include <stdio.h>
- #define MEIJI_GANNEN 1868
- #define TAISHO_GANNEN 1912
- #define SHOWA_GANNEN 1926
- #define HEISEI_GANNEN 1989
-
- int main(void){
- int year, gen, n;
-
-
- if( gen == 1 ){
- year = MEIJI_GANNEN;
- } else if( gen == 2 ){
- year = TAISHO_GANNEN;
- } else if( gen == 3 ){
- year = SHOWA_GANNEN;
- } else if( gen == 4 ){
- year = HEISEI_GANNEN;
- } else {
- return 0;
- }
-
- year = year + (n-1);
-
- return 0;
- }
-
workc2.c
- #include <stdio.h>
-
- int main(void) {
- int n;
- int w; /* 前回の1の位の値を格納 */
- int flag; /* 1=昇順である, 0=昇順でない */
-
-
- if(n < 0){
- return 0;
- }
-
- flag = 1;
- while( n > 0 && flag != 0){
- w = n % 10;
- n = n / 10;
- if( n % 10 > w ){ /* n%10‥今の1の位, w‥前の1の位 */
- flag = 0;
- }
- }
-
- if(flag == 1){
- } else {
- }
-
- return 0;
- }
-
workc3.c
- #include <stdio.h>
-
- #define MAXARRAY 8
-
- int main(void){
-
- int i, j, mx, tmp;
- int data[] = {3, 4, 5, 3, 9 , 2, 7, 1};
-
- for(i=0; i < MAXARRAY; i++){
- }
-
- for(i=0;i < MAXARRAY -1; i++){
- mx = i;
- for( j=i+1; j < MAXARRAY; j++){
- if( data[mx] < data[j] ){
- mx = j;
- }
- }
- tmp = data[i];
- data[i] = data[mx];
- data[mx] = tmp;
- }
-
- for(i=0; i < MAXARRAY; i++){
- }
-
- return 0;
- }
-
workc4.c
- #include <stdio.h>
-
- #define MAXARRAY 8
-
- void printArray( int d[], int n){
- int i;
- for(i=0; i < n; i++){
- }
- }
-
- int selectionDecendSort(int d[], int n){
- int i,j,mx,tmp;
- int count=0;
- for(i=0;i < n -1; i++){
- mx = i;
- for( j=i+1; j < n; j++){
- if( d[mx] < d[j] ){
- mx = j;
- count++;
- }
- }
- tmp = d[i];
- d[i] = d[mx];
- d[mx] = tmp;
- }
- return count;
- }
-
- int main(void){
- int i;
- int c;
- int data[MAXARRAY];
-
- for( i=0; i < MAXARRAY; i++){
- }
-
- printArray(data, MAXARRAY);
-
- c = selectionDecendSort(data, MAXARRAY);
-
- printArray(data, MAXARRAY);
-
- return 0;
- }
-
workc5.c
- #include <stdio.h>
-
- #define BATCH 350
-
- int main(void){
- int total = 0;
- int c, n, r;
- int nokori;
-
-
- c = 0;
- while( total+n <= BATCH ){
- total = total + n;
- c++;
- }
- r = BATCH - total;
-
- if( r == 0) {
- } else {
- nokori = n - r;
- }
-
- return 0;
- }
-
workc6.c
- #include <stdio.h>
-
- #define BATCH 350
-
- int main(void){
-
- int total = 0;
- int c, n, r, m,i;
- int nokori;
-
-
- c = 0;
- for( i = 0; i < m ; i++){
- while( total+n <= BATCH ){
- total += n;
- c++;
- }
-
- r = BATCH - total;
-
- if(r == 0) {
- nokori = 0;
- }else{
- nokori = n - r;
- }
- total = nokori;
- c = 0;
- }
-
- return 0;
- }
-
workc7.c
- #include <stdio.h>
-
- #define BATCH 350
-
- int calcInput(int nokori1, int n1){
- int c1 = 0;
- while( nokori1 + n1 <= BATCH ){
- nokori1 += n1;
- c1++;
- }
- return c1;
- }
-
- int printMSG(int n2, int r2, int c2){
- int rest;
- if( r2 == 0) {
- rest = 0;
- } else {
- rest = n2 - r2;
- }
- return rest;
- }
-
- int main(void){
- int nokori = 0;
- int c, n, r, m,i;
-
-
- for( i = 0; i < m ; i++){
- c = calcInput(nokori, n);
- nokori = nokori + n * c;
- r = BATCH - nokori;
- nokori = printMSG(n, r, c);
- }
-
- return 0;
- }
-
workc8.c
- #include <stdio.h>
-
- #define BATCH 350
- #define PACKSUU 3 /*価格 内容量の組合せ数*/
-
- int calcInput(int nokori1, int n1){
- int c1 = 0;
- while( nokori1 + n1 <= BATCH ){
- nokori1 += n1;
- c1++;
- }
-
- return c1;
- }
-
- int main(void) {
- int c, r0,r1, m,i,j;
- int totalp;
-
- int plist[PACKSUU] = { 315, 420, 730 }; /* 価格表*/
- int vlist[PACKSUU]= { 175, 250, 500 }; /* 内容量*/
- int tlist[PACKSUU];
- int minprice=0, minpack=0;
-
-
- for( j = 0; j < PACKSUU; j++){
- r0 =0; /* 前回の余り量 r0 今回の実行後の余り量 r1とする*/
- totalp = 0; /* 費用の累積額の初期化*/
- for( i = 0; i < m ; i++){
-
- c = calcInput(r0, vlist[j]); /* 袋まるごとの投入量計算*/
-
- /* 部分的に投入する場合の量の計算 */
- r1=BATCH - (vlist[j] * c + r0) ;
-
- if(r1 == 0){
- r0 = 0; /* 余りが無い*/
- totalp = totalp + c * plist[j];
- }else {
- if( r0 <= BATCH ){
- r0 = vlist[j] - r1; /* 余りがあるが最後の袋の*/
- totalp = totalp + (c+1) * plist[j]; /* 投入数が1増える*/
- }else{
- r0 = r0 - BATCH; /* 前回の残りで足りる場合。*/
- }
- }
- }
-
- tlist[j]=totalp; /* totalp には使った袋の分の費用が入っている*/
-
- if(j==0 || minprice > totalp){ /*最小条件の更新*/
- minprice = totalp;
- minpack = j;
- }
- }
-
- for( j = 0; j < PACKSUU; j++){
- }
-
- return 0;
- }
-