diff options
| author | Mitsuo Tokumori <[email protected]> | 2023-08-18 01:56:52 -0500 |
|---|---|---|
| committer | Mitsuo Tokumori <[email protected]> | 2023-08-18 01:56:52 -0500 |
| commit | 49d4392ca1972c8d66b1015f2cdda414d94812b8 (patch) | |
| tree | 13585bcb546d97b96ec669457c06fc27f2d66ab7 /2022-2/L06/mitsuo/fun.cpp | |
| parent | d6e56dbe184cac37d7aa5cebe3e1db108dee4a28 (diff) | |
| download | LP1-49d4392ca1972c8d66b1015f2cdda414d94812b8.tar.gz LP1-49d4392ca1972c8d66b1015f2cdda414d94812b8.tar.bz2 LP1-49d4392ca1972c8d66b1015f2cdda414d94812b8.zip | |
Fix naming. Add leading 0 to lab names
Diffstat (limited to '2022-2/L06/mitsuo/fun.cpp')
| -rw-r--r-- | 2022-2/L06/mitsuo/fun.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/2022-2/L06/mitsuo/fun.cpp b/2022-2/L06/mitsuo/fun.cpp new file mode 100644 index 0000000..569350c --- /dev/null +++ b/2022-2/L06/mitsuo/fun.cpp @@ -0,0 +1,69 @@ +#include <cstdlib> +#include <iostream> +#include <fstream> +#include <cstdlib> +#include "fun.h" + +using namespace std; + +void cargaarreglo(void *&arreglo, + int (*cmpnumero)(const void *, const void *), + int *leenumero(istream &in), + const char *filename) +{ + ifstream in(filename); + + if (!in) { + cerr << "Error, no se pudo abrir archivo\n"; + return; + } + + int **numbers; + int *data; + int *buffer[MAXLEN]; + int i; + /* load buffer */ + for (i = 0; (data = leenumero(in)); i++) { + buffer[i] = data; + } + buffer[i] = nullptr; + + /* create "exact" array of pointers to int */ + numbers = new int * [i + 1]; + for (i = 0; buffer[i]; i++) { + numbers[i] = buffer[i]; + } + numbers[i] = nullptr; + + /* sort array */ + + qsort(numbers, i, sizeof(void *), cmpnumero); + + // for (i = 0; numbers[i]; i++) { + // cout << *numbers[i] << '\n'; + // } + + /* modify parameter reference */ + arreglo = numbers; +} + +/* qsort comparisong function. Descending order */ +int cmpnumero(const void *p1, const void *p2) +{ + return - (** (int **) p1 - ** (int **) p2); +} + +/* allocates memory */ +int *leenumero(istream &in) +{ + int n; + if (in >> n) + return new int{n}; + else + return nullptr; +} + +void imprimenumero(ostream &out, void *data) +{ + cout << * (int *) data << '\n'; +} |
