Skip to content

Commit f4fd868

Browse files
committed
Read data from a file
1 parent dc151aa commit f4fd868

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

Lab1CPP/input.txt

+2
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@
22
1 2 3 4 5 6 7 8 9 0
33
4
44
1 2 3 4
5+
10
6+
10

Lab1CPP/lab1.cpp

+19-17
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ Array *array_create_and_read(FILE *input)
4545
return arr;
4646
}
4747

48-
void task1(void)
48+
void task1(FILE *input)
4949
{
5050
size_t n;
5151
Array *arr = NULL;
52-
if (scanf("%lu", &n) < 1) throw std::runtime_error("Failed to read size");
52+
if (fscanf(input, "%lu", &n) < 1) throw std::runtime_error("Failed to read size");
5353
arr = array_create(n);
5454
for (size_t index{0}; index < n; ++index) array_set(arr, index, rand() % 100);
5555

@@ -62,11 +62,11 @@ void task1(void)
6262
array_delete(arr);
6363
}
6464

65-
void task2(void)
65+
void task2(FILE *input)
6666
{
6767
size_t size_arr;
6868
Array *arr = NULL;
69-
if (scanf("%lu", &size_arr) < 1) throw std::runtime_error("Failed to read size");
69+
if (fscanf(input, "%lu", &size_arr) < 1) throw std::runtime_error("Failed to read size");
7070
arr = array_create(size_arr);
7171
for (size_t index{0}; index < size_arr; ++index) array_set(arr, index, rand() % 100);
7272
qsort(arr, 0, size_arr - 1);
@@ -100,19 +100,21 @@ void task2(void)
100100

101101
int main(int argc, char **argv)
102102
{
103-
if (argc > 1){
104-
Array *arr = NULL;
105-
FILE *input = fopen(argv[1], "r");
106-
arr = array_create_and_read(input);
107-
array_delete(arr);
108-
/* Create another array here */
109-
arr = array_create_and_read(input);
110-
array_delete(arr);
111-
fclose(input);
112-
}
113-
114-
task1();
115-
task2();
103+
/*
104+
Не совсем понял откуда берётся с клавиатуры или из файла. В задание сказано из файла, но если запускать тесты, то будет
105+
вызвано исключение runtime_error (в случае если мы ждем числа с клавиатуры)
106+
*/
107+
Array *arr = NULL;
108+
FILE *input = fopen(argv[1], "r");
109+
arr = array_create_and_read(input);
110+
array_delete(arr);
111+
/* Create another array here */
112+
arr = array_create_and_read(input);
113+
array_delete(arr);
114+
115+
task1(input);
116+
task2(input);
116117

118+
fclose(input);
117119
return 0;
118120
}

0 commit comments

Comments
 (0)