ChristosFis Δημοσ. 5 Ιουνίου 2022 Δημοσ. 5 Ιουνίου 2022 (επεξεργασμένο) Kαλησπέρα θα μπορούσε κάποιος να βόηθησει στο θέμα αυτό . Η γλωσσα προγραμματισμου είναι C Επεξ/σία 5 Ιουνίου 2022 από ChristosFis
DrKo Δημοσ. 5 Ιουνίου 2022 Δημοσ. 5 Ιουνίου 2022 (επεξεργασμένο) Η σωστή απάντηση είναι πως η ερώτηση είναι ημιτελής. Η standard C δεν το επιτρέπει αλλά ο GNU C compiler το επιτρέπει. Επίσης, δεν υπάρχει ερώτημα Γ. Γενικά παρατηρείται ένα θεματάκι με το πόσο ακριβής είναι ο γραπτός λόγος που χρησιμοποιείς και που διαβάζεις. Επεξ/σία 5 Ιουνίου 2022 από DrKo
cvb~ Δημοσ. 5 Ιουνίου 2022 Δημοσ. 5 Ιουνίου 2022 Καλησπέρα. Ρίξε μια ματιά σ' αυτό https://stackoverflow.com/questions/3523145/pointer-arithmetic-for-void-pointer-in-c . Ίσως σε βοηθήσει.
ChristosFis Δημοσ. 5 Ιουνίου 2022 Μέλος Δημοσ. 5 Ιουνίου 2022 (επεξεργασμένο) 33 λεπτά πριν, DrKo είπε Η σωστή απάντηση είναι πως η ερώτηση είναι ημιτελής. Η standard C δεν το επιτρέπει αλλά ο GNU C compiler το επιτρέπει. Επίσης, δεν υπάρχει ερώτημα Γ. Γενικά παρατηρείται ένα θεματάκι με το πόσο ακριβής είναι ο γραπτός λόγος που χρησιμοποιείς και που διαβάζεις. δικό μου λαθος εννοουσα ολο το θέμα αυτο αν μπορούσε να με βοηθήσει κάποιος. Το θέμα βασίζεται στο κομμάτι του πολυμορφισμού στην ευελιξία και στην μετατροπή τύπων Επεξ/σία 5 Ιουνίου 2022 από ChristosFis
newnick Δημοσ. 8 Ιουνίου 2022 Δημοσ. 8 Ιουνίου 2022 Google is your friend...... https://stackoverflow.com/questions/68071964/add-2-void-pointer-arrays-in-c
Επισκέπτης Δημοσ. 8 Ιουνίου 2022 Δημοσ. 8 Ιουνίου 2022 (επεξεργασμένο) Μπορείς να κάνεις πατέντα με macros και να φιάξεις κάτι σαν τα templates της C++. Δεν νομίζω ότι σε πανεπιστήμιο έχει ασχοληθεί κανείς με macros οπότε ξέχασε το. Αλλιώς γράφεις όλες τις πιθανές εκδοχές της συνάρτησης σου π.χ. add_int(...), add_float(...), add_double(...) για int, float, double κλπ. Μάλλον στην εκφώνηση σε περιορίζει στο πώς θα ονομάσεις την συνάρτηση, οπότε ξέχασε το και αυτό. Το μόνο που μου έρχεται στο μυαλό και δέν μου πολυαρέσει κιόλας σαν λύση είναι αυτό: #include <stdio.h> #include <stdlib.h> #include <string.h> void add(const char *type, void *a, void *b, void *c, int size) { if (strcmp(type, "int") == 0) { for (int i = 0; i < size; i++) { ((int *)c)[i] = ((int *)a)[i] + ((int *)b)[i]; } } else if (strcmp(type, "float") == 0) { for (int i = 0; i < size; i++) { ((float *)c)[i] = ((float *)a)[i] + ((float *)b)[i]; } } } int main() { int *a = malloc(4 * sizeof(int)); int *b = malloc(4 * sizeof(int)); int *c = malloc(4 * sizeof(int)); for (int i = 0; i < 4; i++) { a[i] = i; b[i] = i; c[i] = 0; } add("int", a, b, c, 4); for (int i = 0; i < 4; i++) { printf("%d ", c[i]); } free(a); free(b); free(c); return 0; } Επεξ/σία 8 Ιουνίου 2022 από xorz57
ChristosFis Δημοσ. 10 Ιουνίου 2022 Μέλος Δημοσ. 10 Ιουνίου 2022 Στις 8/6/2022 στις 6:17 ΜΜ, xorz57 είπε Μπορείς να κάνεις πατέντα με macros και να φιάξεις κάτι σαν τα templates της C++. Δεν νομίζω ότι σε πανεπιστήμιο έχει ασχοληθεί κανείς με macros οπότε ξέχασε το. Αλλιώς γράφεις όλες τις πιθανές εκδοχές της συνάρτησης σου π.χ. add_int(...), add_float(...), add_double(...) για int, float, double κλπ. Μάλλον στην εκφώνηση σε περιορίζει στο πώς θα ονομάσεις την συνάρτηση, οπότε ξέχασε το και αυτό. Το μόνο που μου έρχεται στο μυαλό και δέν μου πολυαρέσει κιόλας σαν λύση είναι αυτό: #include <stdio.h> #include <stdlib.h> #include <string.h> void add(const char *type, void *a, void *b, void *c, int size) { if (strcmp(type, "int") == 0) { for (int i = 0; i < size; i++) { ((int *)c)[i] = ((int *)a)[i] + ((int *)b)[i]; } } else if (strcmp(type, "float") == 0) { for (int i = 0; i < size; i++) { ((float *)c)[i] = ((float *)a)[i] + ((float *)b)[i]; } } } int main() { int *a = malloc(4 * sizeof(int)); int *b = malloc(4 * sizeof(int)); int *c = malloc(4 * sizeof(int)); for (int i = 0; i < 4; i++) { a[i] = i; b[i] = i; c[i] = 0; } add("int", a, b, c, 4); for (int i = 0; i < 4; i++) { printf("%d ", c[i]); } free(a); free(b); free(c); return 0; } εν τελει βγήκε με την τεχνική της qsort και αναλογως τι εχουμε int ,float ,struct καναμε τα καταλληλα casting
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα