質問編集履歴
12
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,8 +1,15 @@
|
|
1
|
-
商品の情報をファイルから入手し、入力された予算に応じて買うことのできる全ての組み合わせを列挙する問題です。お助けいただけると幸いです。書いたコード貼っときます。
|
1
|
+
商品の情報をファイルから入手し、入力された予算に応じて買うことのできる全ての組み合わせを列挙する問題です。お助けいただけると幸いです。書いたコード貼っときます。()
|
2
2
|
例)F1.txt(name price amount /商品は10個と確定しています。)
|
3
|
-
Apple 1
|
3
|
+
Apple 1 20
|
4
|
-
Banana
|
4
|
+
Banana 4 25
|
5
|
+
Peach 4 34
|
6
|
+
Grape 4 3
|
7
|
+
Strawberry 2 40
|
8
|
+
Blueberry 3 9
|
9
|
+
Rice 10 2
|
5
|
-
|
10
|
+
Egg 1 22
|
11
|
+
Pen 6 10
|
12
|
+
Note 1 19
|
6
13
|
|
7
14
|
|
8
15
|
|
@@ -26,7 +33,7 @@
|
|
26
33
|
}
|
27
34
|
}
|
28
35
|
|
29
|
-
int check(Data
|
36
|
+
int check(Data* data) {
|
30
37
|
int f = 0;
|
31
38
|
rep(i,10){
|
32
39
|
if(budget >= (data+i)->price) f++;
|
@@ -35,10 +42,20 @@
|
|
35
42
|
return f;
|
36
43
|
}
|
37
44
|
|
45
|
+
|
38
|
-
|
46
|
+
int count = 0;
|
47
|
+
//the number of all possible combinations
|
48
|
+
void pick(Data* data, int index, int maxindex, float price) {
|
49
|
+
if(maxindex <= index) return;
|
50
|
+
float newprice = price + (data+index)->price;
|
51
|
+
if(newprice <= budget){
|
52
|
+
count++;
|
53
|
+
pick(data, index+1, maxindex, newprice);
|
54
|
+
}
|
55
|
+
pick(data, index+1, maxindex, price);
|
56
|
+
|
39
57
|
}
|
40
58
|
|
41
|
-
|
42
59
|
int main(){
|
43
60
|
Data p[10];
|
44
61
|
Data *q = &p;
|
@@ -50,6 +67,8 @@
|
|
50
67
|
input(fi, q);
|
51
68
|
int C = check(q);
|
52
69
|
if(C == 0) return 0;
|
70
|
+
pick(q, 1, 9, 0);
|
71
|
+
printf("%d", count);
|
53
72
|
/*rep(i,10) {
|
54
73
|
printf("%s %f %d\n", (q+i)->name, (q+i)->price, (q+i)->amount);
|
55
74
|
}*/
|
@@ -59,6 +78,7 @@
|
|
59
78
|
}
|
60
79
|
|
61
80
|
|
81
|
+
|
62
82
|
|
63
83
|
|
64
84
|
|
11
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
商品の情報をファイルから入手し、入力された予算に応じて買うことのできる全ての組み合わせを列挙する問題です。
|
1
|
+
商品の情報をファイルから入手し、入力された予算に応じて買うことのできる全ての組み合わせを列挙する問題です。お助けいただけると幸いです。書いたコード貼っときます。
|
2
2
|
例)F1.txt(name price amount /商品は10個と確定しています。)
|
3
3
|
Apple 1.00 5
|
4
4
|
Banana 0.90 4
|
10
問題点の訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
商品の情報をファイルから入手し、入力された予算に応じて買うことのできる全ての組み合わせを列挙する問題です。組み合わせを列挙する
|
1
|
+
商品の情報をファイルから入手し、入力された予算に応じて買うことのできる全ての組み合わせを列挙する問題です。組み合わせをいきなり列挙するのはなんか手に負えなそうだったので一旦何通りあるかを出してみようと思っています。お助けいただけると幸いです。書いたコード貼っときます。
|
2
2
|
例)F1.txt(name price amount /商品は10個と確定しています。)
|
3
3
|
Apple 1.00 5
|
4
4
|
Banana 0.90 4
|
9
ミスがありましたので訂正しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
商品の情報をファイルから入手し、入力された予算に応じて買うことのできる全ての組み合わせを列挙する問題です。組み合わせを列挙する部分がどうすればよいかわからなくて困っています。お助けいただけると幸いです。書いたコード貼っときます。
|
2
2
|
例)F1.txt(name price amount /商品は10個と確定しています。)
|
3
|
-
Apple 1.00
|
3
|
+
Apple 1.00 5
|
4
|
-
Banana 0.90
|
4
|
+
Banana 0.90 4
|
5
5
|
.......
|
6
6
|
|
7
7
|
|
8
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -49,8 +49,7 @@
|
|
49
49
|
scanf("%f", &budget);
|
50
50
|
input(fi, q);
|
51
51
|
int C = check(q);
|
52
|
-
if(C == 0)
|
52
|
+
if(C == 0) return 0;
|
53
|
-
}
|
54
53
|
/*rep(i,10) {
|
55
54
|
printf("%s %f %d\n", (q+i)->name, (q+i)->price, (q+i)->amount);
|
56
55
|
}*/
|
@@ -59,6 +58,7 @@
|
|
59
58
|
|
60
59
|
}
|
61
60
|
|
61
|
+
|
62
62
|
|
63
63
|
|
64
64
|
|
7
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -51,9 +51,9 @@
|
|
51
51
|
int C = check(q);
|
52
52
|
if(C == 0) {
|
53
53
|
}
|
54
|
-
rep(i,10) {
|
54
|
+
/*rep(i,10) {
|
55
55
|
printf("%s %f %d\n", (q+i)->name, (q+i)->price, (q+i)->amount);
|
56
|
-
}
|
56
|
+
}*/
|
57
57
|
|
58
58
|
return 0;
|
59
59
|
|
6
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -18,19 +18,39 @@
|
|
18
18
|
int amount;
|
19
19
|
}Data;
|
20
20
|
|
21
|
+
float budget;
|
22
|
+
|
21
23
|
void input(FILE* fi, Data* data) {
|
22
24
|
rep(i,10) {
|
23
25
|
fscanf(fi,"%s %f %d", (data+i)->name, &(data+i)->price, &(data+i)->amount);
|
24
26
|
}
|
25
27
|
}
|
28
|
+
|
29
|
+
int check(Data * data) {
|
30
|
+
int f = 0;
|
31
|
+
rep(i,10){
|
32
|
+
if(budget >= (data+i)->price) f++;
|
33
|
+
}
|
34
|
+
if(f==0) printf("you don't have enough money:'(\n");
|
35
|
+
return f;
|
36
|
+
}
|
37
|
+
|
38
|
+
void search() {
|
39
|
+
}
|
40
|
+
|
41
|
+
|
26
42
|
int main(){
|
27
43
|
Data p[10];
|
28
44
|
Data *q = &p;
|
29
45
|
char ni[10] ="F1.txt";
|
30
46
|
FILE *fi;
|
31
47
|
fi = fopen(ni,"r");
|
32
|
-
|
48
|
+
printf("insert your budget!!\n");
|
49
|
+
scanf("%f", &budget);
|
33
50
|
input(fi, q);
|
51
|
+
int C = check(q);
|
52
|
+
if(C == 0) {
|
53
|
+
}
|
34
54
|
rep(i,10) {
|
35
55
|
printf("%s %f %d\n", (q+i)->name, (q+i)->price, (q+i)->amount);
|
36
56
|
}
|
5
コードの修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
すべての組み合わせの列挙
|
body
CHANGED
@@ -8,8 +8,8 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
```c
|
11
|
-
|
12
|
-
#include<stdio.h>
|
11
|
+
#include <stdio.h>
|
12
|
+
#include <float.h>
|
13
13
|
#define rep(i,n) for(int i = 0; i < (n); ++i)
|
14
14
|
|
15
15
|
typedef struct{
|
@@ -18,54 +18,27 @@
|
|
18
18
|
int amount;
|
19
19
|
}Data;
|
20
20
|
|
21
|
-
void input(FILE*, Data*)
|
21
|
+
void input(FILE* fi, Data* data) {
|
22
|
-
void output(FILE*, Data*, int, int );
|
23
|
-
|
22
|
+
rep(i,10) {
|
24
|
-
|
25
|
-
|
23
|
+
fscanf(fi,"%s %f %d", (data+i)->name, &(data+i)->price, &(data+i)->amount);
|
26
|
-
|
27
|
-
|
24
|
+
}
|
25
|
+
}
|
28
26
|
int main(){
|
29
27
|
Data p[10];
|
30
28
|
Data *q = &p;
|
31
|
-
char ni[10] ="F1.txt"
|
29
|
+
char ni[10] ="F1.txt";
|
32
|
-
FILE *fi
|
30
|
+
FILE *fi;
|
33
31
|
fi = fopen(ni,"r");
|
34
|
-
fo = fopen(no,"w");
|
35
32
|
|
36
33
|
input(fi, q);
|
37
|
-
int d = check(fi);
|
38
|
-
if(d==0) return 0;
|
39
34
|
rep(i,10) {
|
40
35
|
printf("%s %f %d\n", (q+i)->name, (q+i)->price, (q+i)->amount);
|
41
36
|
}
|
42
37
|
|
38
|
+
return 0;
|
43
39
|
|
44
|
-
return 0;
|
45
40
|
}
|
46
41
|
|
47
|
-
void input(FILE* fi, Data* data){
|
48
|
-
printf("insert your budget!!\n");
|
49
|
-
scanf("%f", &budget);
|
50
|
-
rep(i,m){
|
51
|
-
fscanf(fi,"%s %f %d", (data+i)->name, &(data+i)->price, &(data+i)->amount);
|
52
|
-
}
|
53
|
-
}
|
54
|
-
//a is amount of products
|
55
|
-
void output(FILE* fo, Data* data, int i, int a) {
|
56
|
-
fprintf(fo, "%s %f %d\n", (data+i)->name, (data+i)->price, a);
|
57
|
-
printf("%s %f %d\n", (data+i)->name, (data+i)->price, a);
|
58
|
-
}
|
59
|
-
|
60
|
-
int check(Data* data) {
|
61
|
-
int f = 0;
|
62
|
-
rep(i,m) {
|
63
|
-
if((data+i)->price <= budget) f++;
|
64
|
-
}
|
65
|
-
if(f==0) printf("your money is not enough");
|
66
|
-
return f;
|
67
|
-
}
|
68
|
-
|
69
42
|
|
70
43
|
|
71
44
|
|
4
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
```c
|
11
|
+
|
11
12
|
#include<stdio.h>
|
12
13
|
#define rep(i,n) for(int i = 0; i < (n); ++i)
|
13
14
|
|
@@ -19,11 +20,11 @@
|
|
19
20
|
|
20
21
|
void input(FILE*, Data*);
|
21
22
|
void output(FILE*, Data*, int, int );
|
22
|
-
int check(Data*
|
23
|
+
int check(Data*);
|
23
24
|
|
24
25
|
int m = 10; //amount of the products
|
25
26
|
|
26
|
-
float budget;
|
27
|
+
float budget = 0;
|
27
28
|
int main(){
|
28
29
|
Data p[10];
|
29
30
|
Data *q = &p;
|
@@ -33,11 +34,13 @@
|
|
33
34
|
fo = fopen(no,"w");
|
34
35
|
|
35
36
|
input(fi, q);
|
36
|
-
int d = check(fi
|
37
|
+
int d = check(fi);
|
37
38
|
if(d==0) return 0;
|
39
|
+
rep(i,10) {
|
40
|
+
printf("%s %f %d\n", (q+i)->name, (q+i)->price, (q+i)->amount);
|
41
|
+
}
|
38
42
|
|
39
43
|
|
40
|
-
|
41
44
|
return 0;
|
42
45
|
}
|
43
46
|
|
@@ -45,7 +48,7 @@
|
|
45
48
|
printf("insert your budget!!\n");
|
46
49
|
scanf("%f", &budget);
|
47
50
|
rep(i,m){
|
48
|
-
fscanf(fi,
|
51
|
+
fscanf(fi,"%s %f %d", (data+i)->name, &(data+i)->price, &(data+i)->amount);
|
49
52
|
}
|
50
53
|
}
|
51
54
|
//a is amount of products
|
@@ -54,16 +57,15 @@
|
|
54
57
|
printf("%s %f %d\n", (data+i)->name, (data+i)->price, a);
|
55
58
|
}
|
56
59
|
|
57
|
-
int check(Data* data
|
60
|
+
int check(Data* data) {
|
58
61
|
int f = 0;
|
59
62
|
rep(i,m) {
|
60
|
-
if((data+i)->price <=
|
63
|
+
if((data+i)->price <= budget) f++;
|
61
64
|
}
|
62
65
|
if(f==0) printf("your money is not enough");
|
63
66
|
return f;
|
64
67
|
}
|
65
68
|
|
66
|
-
|
67
69
|
|
68
70
|
|
69
71
|
|
3
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -15,12 +15,12 @@
|
|
15
15
|
char name[30];
|
16
16
|
float price;
|
17
17
|
int amount;
|
18
|
-
}Data
|
18
|
+
}Data;
|
19
19
|
|
20
20
|
void input(FILE*, Data*);
|
21
21
|
void output(FILE*, Data*, int, int );
|
22
22
|
int check(Data*, int);
|
23
|
-
|
23
|
+
|
24
24
|
int m = 10; //amount of the products
|
25
25
|
|
26
26
|
float budget;
|
@@ -33,7 +33,7 @@
|
|
33
33
|
fo = fopen(no,"w");
|
34
34
|
|
35
35
|
input(fi, q);
|
36
|
-
int d = check(
|
36
|
+
int d = check(fi, budget);
|
37
37
|
if(d==0) return 0;
|
38
38
|
|
39
39
|
|
@@ -42,17 +42,16 @@
|
|
42
42
|
}
|
43
43
|
|
44
44
|
void input(FILE* fi, Data* data){
|
45
|
-
int x;
|
46
45
|
printf("insert your budget!!\n");
|
47
46
|
scanf("%f", &budget);
|
48
47
|
rep(i,m){
|
49
|
-
fscanf(
|
48
|
+
fscanf(fi, "%s %f %d", (data+i)->name, (data+i)->price, &(data+i)->amount);
|
50
49
|
}
|
51
50
|
}
|
52
51
|
//a is amount of products
|
53
52
|
void output(FILE* fo, Data* data, int i, int a) {
|
54
53
|
fprintf(fo, "%s %f %d\n", (data+i)->name, (data+i)->price, a);
|
55
|
-
printf("%s %f %d\n", (data+i)->name, (data+i)->price, a)
|
54
|
+
printf("%s %f %d\n", (data+i)->name, (data+i)->price, a);
|
56
55
|
}
|
57
56
|
|
58
57
|
int check(Data* data, int x) {
|
@@ -60,15 +59,12 @@
|
|
60
59
|
rep(i,m) {
|
61
60
|
if((data+i)->price <= x) f++;
|
62
61
|
}
|
63
|
-
if(f==0) printf("
|
62
|
+
if(f==0) printf("your money is not enough");
|
64
63
|
return f;
|
65
64
|
}
|
66
65
|
|
67
66
|
|
68
67
|
|
69
|
-
void search(Data* data) {
|
70
|
-
|
71
|
-
}
|
72
68
|
|
73
69
|
|
74
70
|
|
2
コードの修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
すべての組み合わせの列挙
|
1
|
+
オードのすべての組み合わせの列挙
|
body
CHANGED
@@ -35,9 +35,9 @@
|
|
35
35
|
input(fi, q);
|
36
36
|
int d = check(f, budget);
|
37
37
|
if(d==0) return 0;
|
38
|
-
float min = fmin(q);
|
39
38
|
|
40
39
|
|
40
|
+
|
41
41
|
return 0;
|
42
42
|
}
|
43
43
|
|
1
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -20,7 +20,6 @@
|
|
20
20
|
void input(FILE*, Data*);
|
21
21
|
void output(FILE*, Data*, int, int );
|
22
22
|
int check(Data*, int);
|
23
|
-
float fmin(Data*);
|
24
23
|
void search(Data*);
|
25
24
|
int m = 10; //amount of the products
|
26
25
|
|
@@ -65,13 +64,7 @@
|
|
65
64
|
return f;
|
66
65
|
}
|
67
66
|
|
68
|
-
|
67
|
+
|
69
|
-
int x = 10001001;
|
70
|
-
rep(i,m) {
|
71
|
-
if(x<(data+i)->price) x = (data+i)->price;
|
72
|
-
}
|
73
|
-
return x;
|
74
|
-
}
|
75
68
|
|
76
69
|
void search(Data* data) {
|
77
70
|
|