[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
| |
test
1
:
名無しさん
:2009/07/01(水) 02:52:24
testスレ
2
:
名無しさん
:2009/07/01(水) 02:53:10
/*** インクルードファイル ***/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int Num = 10; /* データ人数 */
int* point_ptr; /* 得点を記録する領域のポインタ */
int* rank_ptr; /* 順位を記録する領域のポインタ */
int i; /* point_ptrのオフセットカウンタ */
int j; /* rank_ptrのオフセットカウンタ */
int* rank_sort; /* ソートした順位を記録する領域のポインタ */
int k; /* ちょっと入れとく用変数 */
int no[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; /* 番号に使う */
/*** 領域確保 ***/
point_ptr = (int*)calloc(Num,sizeof(int));
rank_ptr = (int*)calloc(Num,sizeof(int));
rank_sort = (int*)calloc(Num,sizeof(int));
/*** データの入力 ***/
i = 0;
while( i < Num ){
scanf("%d",(point_ptr + i));
i++;
}
/***
*** 順位付け
***/
/*** 最初の人から順番に自分の順位を調べる ***/
for (i = 0; i < Num; i++) {
/*** 順位を1に初期化 ***/
*(rank_ptr + i) = 1;
*(rank_sort + i) = 1;
/*** 自分と全員の得点を比べ自分より高い得点の人がいたら ***/
/*** 順位を1足していく ***/
for (j = 0; j < Num; j++) {
if( *( point_ptr + j ) > *( point_ptr + i ) ){
*( rank_ptr + i ) += 1;
}
}
}
/*** ソート ***/
for (i = 0; i < Num; i++) {
for (j = 0; j < Num; j++) {
if( *( rank_ptr + j ) > *( rank_ptr + i ) ){
k = *( rank_ptr + j );
*( rank_ptr + j ) = *( rank_ptr + i );
*( rank_ptr + i ) = k;
k = *(point_ptr + j);
*(point_ptr + j) = *(point_ptr + i);
*(point_ptr + i) = k;
k = no[j];
no[j] = no[i];
no[i] = k;
}
}
}
printf(" 番号 得点 順位\n");
/*** 結果出力 ***/
for (i = 0; i < Num; i++) {
printf("%6d%6d%6d\n",no[i],*(point_ptr + i),*(rank_ptr + i));
}
return(0);
}
3
:
名無しさん
:2009/07/01(水) 03:15:57
>>2
int* rank_sort; /* ソートした順位を記録する領域のポインタ */
の部分と、
領域確保のとこの
rank_sort = (int*)calloc(Num,sizeof(int));
と、
/*** 順位を1に初期化 ***/ の部分の
*(rank_sort + i) = 1;
はまったく必要なかった。ごめん。
4
:
名無しさん
:2009/07/01(水) 12:47:03
#include <stdio.h>
#include <stdlib.h>
int main()
{
int Num = 100; /* データ人数 */
int* number_ptr;/* 順位を記録する領域のポインタ */
int* point_ptr; /* 得点を記録する領域のポインタ */
int* rank_ptr; /* 順位を記録する領域のポインタ */
int i; /* point_ptrのオフセットカウンタ */
int j; /* rank_ptrのオフセットカウンタ */
int p, S;
/*** 領域確保 ***/
number_ptr = (int*)calloc(Num,sizeof(int));
point_ptr = (int*)calloc(Num,sizeof(int));
rank_ptr = (int*)calloc(Num,sizeof(int));
/*** データの入力 ***/
for (i = 0; i<100; i++) {
scanf("%d", (point_ptr + i));
if(*(point_ptr + i) == -1) break; /* 入力終わり */
*(number_ptr + i) = i+1;
}
Num = i; /* データ人数 */
5
:
名無しさん
:2009/07/01(水) 12:47:49
/*** 点数順に並び替える (選択ソート) ***/
for (i = 0; i < Num-1; i++) {
/*** 順位 p を i で初期化 ***/
for (p = j = i; j < Num; j++) {
/*** 自分と全員の得点を比べ自分より高い得点の人がいたら ***/
if( *( point_ptr + j ) > *( point_ptr + p ) ){
/*** 順位 p を j にする ***/
p = j;
}
}
/* i と 順位 p と入れ替える */
S = *(point_ptr + i), *(point_ptr + i) = *(point_ptr + p), *(point_ptr + p) = S;
S = *(number_ptr + i), *(number_ptr + i) = *(number_ptr + p), *(number_ptr + p) = S;
}
/*** 順番に並んでいるものの順位を調べる ***/
*(rank_ptr) = p = 1;
for (i = 1; i < Num; i++) {
if( *(point_ptr + i-1) > *(point_ptr + i))
p = i+1;
*(rank_ptr + i) = p;
}
printf(" 番号 得点 順位\n");
/*** 結果出力 ***/
for (i = 0; i < Num; i++) {
printf("%6d%6d%6d\n", *(number_ptr + i), *(point_ptr + i), *(rank_ptr + i));
}
free(number_ptr);
free(point_ptr);
free(rank_ptr);
return(0);
}
6
:
名無しさん
:2009/07/01(水) 22:32:32
#include <stdio.h>
/* chの個数を数える関数 */
unsigned str_chnum(const char str[], char ch)
{
unsigned len = 0;
int count = 0;
while (str[len]) {
if(str[len] == ch)
count++;
len++;
}
return(count);
}
int main(void)
{
char st[100];
printf("文字列を入力してください:");
scanf("%s", st);
printf("%cは%d個含まれています。\n", st[0], str_chnum(st, st[0]));
return(0);
}
間違ってたらゴメン
7
:
<削除>
:<削除>
<削除>
8
:
<削除>
:<削除>
<削除>
9
:
名無しさん
:2009/07/02(木) 12:22:35
/* バイナリーファイルの読み込みと、リスト構造でのソート */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct fseito { char cd[6]; char simei[20]; char kokugo[3], sansu[3], rika[3], syakai[3]; }; // ファイル仕様
struct seito {
char cd[6+1];
char simei[20+1];
int kokugo;
int sansu;
int rika;
int syakai;
struct seito *p; /* 自己参照型ポインター */
};
int main() {
struct fseito str;
struct seito *ptr, *nptr = NULL;
struct seito *S, **ptr1, **ptr2;
FILE *fp;
char kokugo[3+1], sansu[3+1], rika[3+1], syakai[3+1];
int n, m, num;
if ((fp = fopen("name.txt", "r")) == NULL) {
printf("ファイルがオープンできません。\n");
return 1;
}
/* 読み込み処理 */
for(num=0; fread(&str, sizeof(str), 1, fp) != 0; num++) {
if((ptr = calloc(sizeof(struct seito), 1)) == NULL) break;
strncpy(ptr->cd, str.cd, 6);
strncpy(ptr->simei, str.simei, 20);
10
:
名無しさん
:2009/07/02(木) 12:23:07
strncpy(kokugo, str.kokugo, 3); kokugo[3] = '\0'; ptr->kokugo = atoi(kokugo);
strncpy(sansu, str.sansu, 3); sansu[3] = '\0'; ptr->sansu = atoi(sansu);
strncpy(rika, str.rika, 3); rika[3] = '\0'; ptr->rika = atoi(rika);
strncpy(syakai, str.syakai, 3); syakai[3] = '\0'; ptr->syakai = atoi(syakai);
ptr->p = nptr; nptr = ptr;
};
/* 並べ替え処理(リスト構造でのバブルソート)(隣接する前後を交換) */
for(n = 0, ptr1 = &nptr; n<num-1; n++, ptr1 = &nptr) {
for(m = n; m<num-1; m++, ptr1 = &(*ptr1)->p) {
ptr2 = &(*ptr1)->p;
if((*ptr1)->kokugo < (*ptr2)->kokugo) { /* 「国語」の点数で降順に並び替え */
S = (*ptr1)->p; /* 後ろの構造体の次ポインタをSに退避する */
(*ptr1)->p = (*ptr2)->p; /* 後ろの構造体の次ポインタに、前の構造体の次ポインタの値をコピーする */
S->p = *ptr1; /* 前の構造体の次ポインタが、後ろの構造体を指すようにする */
*ptr1 = S; /* 後ろの構造体を指していたポインタを、前の構造体を指すようにする */
}
}
}
/* 表示処理 */
for(ptr = nptr, n = 0; ptr != 0 /* n<num */; ptr = ptr->p, n++) { /* どちらの条件判断でも終了出来る */
if(n%10 == 0) puts("コード 氏 名 国語 算数 理科 社会");
printf("%6s %20s %4d %4d %4d %4d\n",
ptr->cd, ptr->simei, ptr->kokugo, ptr->sansu, ptr->rika, ptr->syakai);
}
/* 終了処理 */
for(ptr = nptr; ptr != 0; ptr = nptr) {
nptr = ptr->p;
free(ptr);
}
fclose(fp);
return 0;
}
11
:
名無しさん
:2009/07/03(金) 22:38:22
#include <stdio.h>
#define MAX_DATA 10
typedef struct {
char name[16+1];
int lang;
int prac;
int total;
} student_t;
int main() {
int cnt = 0;
char filename[256+1];
FILE *fp;
student_t person;
if(fgets(filename, 256, stdin) == NULL) return 1;
filename[strlen(filename)-1] = '\0';
if((fp = fopen(filename, "w")) == NULL) {
printf("%s file open error!", filename); return 1;}
while(cnt<MAX_DATA) {
scanf("%16s", person.name);
if(0 == strcmp(person.name, "-")) break;
scanf("%d %d", &person.lang, &person.prac);
person.total = person.lang + person.prac;
fprintf(fp, "%s %d %d %d\n",
person.name, person.lang, person.prac, person.total);
cnt++;
}
fclose(fp);
}
12
:
名無しさん
:2009/07/03(金) 22:39:08
#include <stdio.h>
typedef struct {
char name[16+1];
int lang;
int prac;
int total;
} student_t;
int main() {
char filename[256+1], kamoku;
FILE *fp;
student_t person;
int count = 0, point;
if(fgets(filename, 256, stdin) == NULL) return 1;
filename[strlen(filename)-1] = '\0';
if((fp = fopen(filename, "r")) == NULL) {
printf("%s file open error!", filename); return 1;}
scanf("%c %d", &kamoku, &point);
while(fscanf(fp, "%16s %d %d %d",
person.name, &person.lang, &person.prac, &person.total) == 4){
switch(kamoku) {
case 'l' : if(point <= person.lang) {
puts(person.name); count = 1; } break;
case 'p' : if(point <= person.prac) {
puts(person.name); count = 1; } break;
case 't' : if(point <= person.total) {
puts(person.name); count = 1; } break;
}
}
if(count == 0) puts("No one");
fclose(fp);
}
13
:
名無しさん
:2009/07/04(土) 08:02:52
#include <stdio.h>
char* Reverse(char *, int);
int main(){
char line[81];
int i=1, len;
do {
printf("非負の整数を入力してください: ");
if(fgets(line, 81, stdin) == NULL) return 1;
if(*line == '\n') continue;
for(len = 0; line[len] != '\n' && line[len] != '\0'; len++); line[len] = '\0';
for(i = len - 1; i>=0; i--)
if('0' > line[i] || line[i] > '9'){
printf("非負の整数以外が入力されました。\n");
break;
}
} while (i>=0);
printf("%s", line); // 関数のパラメータは、呼び出し順が左からではない為。
printf(" を逆から読むと%s です.\n", Reverse(line, len));
return 0;
}
char* Reverse(char *str, int length){
int i;
char tmp;
for(i=length/2-1; i>=0; i--) { // コードが最適化されるなら、for(i=0; i<length/2; i++)
tmp = str[i], str[i] = str[length-i-1], str[length-i-1] = tmp;
}
return str;
}
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板