#2
by Meta3 » 4年前
エラーで動かなかったのでコピペ間違いだけなをして a1--- a6 を表示 あとは教科書を見て
VisualStudio2019 c1.c
コード:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct area {
char name[20];
int population;
struct area *left;
struct area *right;
};
void printTree(int indent, struct area *s);
struct area *addarea(struct area *ar, char *str, int num);
int main() {
struct area a1 = {"A", 250000, NULL, NULL},
a2 = {"B", 190000, NULL, NULL},
a3 = {"C", 400000, NULL, NULL},
a4 = {"D", 170000, NULL, NULL},
a5 = {"E", 240000, NULL, NULL},
a6 = {"F", 430000, NULL, NULL};
struct area *root = NULL;
root = &a1;
a1.left = &a2;
a1.right = &a3;
a2.left = &a4;
a2.right = &a5;
a3.right = &a6;
printTree(0, root);
return 0;
char str[20];
int num;
printf("input a area name and its population : ");
scanf("%s %d", str, &num);
root = addarea(root, str, num);
printTree(0, root);
printf("\n");
return 0;
}
void printTree(int indent, struct area *ar) {
int i;
if (ar == NULL)
printf("NULL");
else {
printf("\n");
for (i = 0; i < indent; i++) printf(" ");
printf("(%-10s: population = %6d) ", ar->name, ar->population);
printTree(indent + 5, ar->left);
printf(", ");
printTree(indent + 5, ar->right);
printf(") ");
}
}
struct area *addarea(struct area *ar, char *str, int num) {
if (ar->population > num) {
if (ar->left == NULL) {
ar->left = malloc(sizeof(struct area));
strcpy(ar->left->name, str);
ar->left->population = num;
return ar;
} else {
addarea(ar->left, str, num);
}
} else {
if (ar->right == NULL) {
ar->right = malloc(sizeof(struct area));
strcpy(ar->right->name, str);
ar->right->population = num;
return ar;
} else {
addarea(ar->right, str, num);
}
}
}
コード:
Copyright (C) Microsoft Corporation. All rights reserved.
/out:c1.exe
c1.obj
c:\b>c1.exe
(A : population = 250000)
(B : population = 190000)
(D : population = 170000) NULL, NULL) ,
(E : population = 240000) NULL, NULL) ) ,
(C : population = 400000) NULL,
(F : population = 430000) NULL, NULL) ) )
c:\b>
エラーで動かなかったのでコピペ間違いだけなをして a1--- a6 を表示 あとは教科書を見て
VisualStudio2019 c1.c
[code]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct area {
char name[20];
int population;
struct area *left;
struct area *right;
};
void printTree(int indent, struct area *s);
struct area *addarea(struct area *ar, char *str, int num);
int main() {
struct area a1 = {"A", 250000, NULL, NULL},
a2 = {"B", 190000, NULL, NULL},
a3 = {"C", 400000, NULL, NULL},
a4 = {"D", 170000, NULL, NULL},
a5 = {"E", 240000, NULL, NULL},
a6 = {"F", 430000, NULL, NULL};
struct area *root = NULL;
root = &a1;
a1.left = &a2;
a1.right = &a3;
a2.left = &a4;
a2.right = &a5;
a3.right = &a6;
printTree(0, root);
return 0;
char str[20];
int num;
printf("input a area name and its population : ");
scanf("%s %d", str, &num);
root = addarea(root, str, num);
printTree(0, root);
printf("\n");
return 0;
}
void printTree(int indent, struct area *ar) {
int i;
if (ar == NULL)
printf("NULL");
else {
printf("\n");
for (i = 0; i < indent; i++) printf(" ");
printf("(%-10s: population = %6d) ", ar->name, ar->population);
printTree(indent + 5, ar->left);
printf(", ");
printTree(indent + 5, ar->right);
printf(") ");
}
}
struct area *addarea(struct area *ar, char *str, int num) {
if (ar->population > num) {
if (ar->left == NULL) {
ar->left = malloc(sizeof(struct area));
strcpy(ar->left->name, str);
ar->left->population = num;
return ar;
} else {
addarea(ar->left, str, num);
}
} else {
if (ar->right == NULL) {
ar->right = malloc(sizeof(struct area));
strcpy(ar->right->name, str);
ar->right->population = num;
return ar;
} else {
addarea(ar->right, str, num);
}
}
}[/code]
[code]Copyright (C) Microsoft Corporation. All rights reserved.
/out:c1.exe
c1.obj
c:\b>c1.exe
(A : population = 250000)
(B : population = 190000)
(D : population = 170000) NULL, NULL) ,
(E : population = 240000) NULL, NULL) ) ,
(C : population = 400000) NULL,
(F : population = 430000) NULL, NULL) ) )
c:\b>[/code]