Εισαγωγη και περασμα δεδομένων σε 2D array απο txt file C++

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Εισαγωγη και περασμα δεδομένων σε 2D array απο txt file C++

Δημοσίευσηαπό Nebula » 18 Ιαν 2013, 02:08

Καλησπερα σας!
Εχω φαει ολο το κυβερνοχωρο για να λυσω τη παρακάτω απορία μου πάνω στο προγραμματισμό σε C++ αλλα δεν...
Θα ηθελα να ρωτήσω, πως μπορώ να κάνω εισαγωγή αριθμών απο αρχειο (οι οποίοι αποτελουν στοιχεια ενος πίνακα), και να τα μεταφέρω σε ένα 2D πινακα, όμως χωρίς να ξέρω τις διαστάσες του πίνακα.
Δηλαδή θα πρεπει να μάθω εκ των υστέρων τον αριθμό των δεδομένων του αρχειου (δηλαδή το μέγεθος του πίνακα που βρίσκεται μέσα στο αρχείο).

Ας πάρουμε για παράδειγμα ότι δημιουργώ ένα αρχειο data.txt που περιέχει μέσα:
Κώδικας: Επιλογή όλων
1   0   1
1   -1   1
1   1   -1

Άλλα εγω πρεπει να μάθω απο το πρόγραμα ότι εχει 3 γραμμες και 3 στήλες...
Ευχαριστω προκαταβολικά!
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 14.04 trusty 3.13.0-35-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.13.0-32-generic, Windows 7
3 Intel Core i5-4210M CPU @ 2.60GHz ‖ RAM 7880 MiB ‖ Acer EA50_HWS - Acer Aspire E5-572G
4 Intel 4th Gen Core Processor Integrated Graphics [8086:0416] {i915}
5 wlan0: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter [168c:0036] (rev 01) ⋮ eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 12)
Nebula
babeTUX
babeTUX
 
Δημοσιεύσεις: 60
Εγγραφή: 12 Ιαν 2012, 20:47
Εκτύπωση

Re: Εισαγωγη και περασμα δεδομένων σε 2D array απο txt file

Δημοσίευσηαπό simosx » 18 Ιαν 2013, 02:52

Βασικά το ερώτημά σου είναι:
→ Αν ο πίνακας που είχα δεσμεύσει αυθαίρετα με π.χ. 100 θέσεις είναι μικρός, τι να κάνω;
Και η απάντηση είναι, να δεσμεύσεις δυναμικά άλλο μεγαλύτερο πίνακα, να μεταφέρεις τα δεδομένα στο νέο πίνακα, και να αποδεσμεύσεις τον παλιό.

Στη C++ μαθαίνεις για «STL»; Αν ναι, μπορείς να χρησιμοποιήσεις και δομές από STL. Αν δεν μαθαίνεις για STL, τότε με τον απλό τον τρόπο είναι πάνω κάτω ίδιος κόπος.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Εισαγωγη και περασμα δεδομένων σε 2D array απο txt file

Δημοσίευσηαπό evolgen » 18 Ιαν 2013, 10:36

Μεταφέρθηκε στην κατάλληλη ενότητα

Το να μειώνεις ένα έργο ελεύθερου λογισμικού, επειδή θεωρείς το δικό σου καλύτερο,
είναι απαράδεκτη συμπεριφορά και δε συμβαδίζει με τις αρχές του ελεύθερου λογισμικού.

Γνώσεις Linux: Μέτριο++ ┃ Προγραμματισμός: Perl, R, Python, SQL, C, Common Lisp, BashΑγγλικά: Άριστα

1. Ubuntu 14.04 trusty
2. Intel Core i7-3520M CPU @ 2.90GHz ‖ RAM 7892 MiB
3. Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
4. eth0: Broadcom NetXtreme BCM57765 Gigabit Ethernet PCIe [14e4:16b4] (rev 10) ⋮ eth1: Broadcom BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
Άβαταρ μέλους
evolgen
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1031
Εγγραφή: 28 Ιούλ 2010, 14:22
Τοποθεσία: UK
IRC: bioevolgenec
Εκτύπωση

Re: Εισαγωγη και περασμα δεδομένων σε 2D array απο txt file

Δημοσίευσηαπό Nebula » 18 Ιαν 2013, 18:38

Γεια σου simosx!
Η ερωτηση μου ειναι αν μπορω μεσω κάποιων συναρτησεων να μάθω τι διαστάσεις έχει το .txt αρχείο, δηλαδή πόσες στήλες και πόσες γραμμές.
Αν για παράδειγμα σε αυτο το αρχείο υπάρχει ενας πίνακας που μπορει να είναι 160Χ100 να μπορω να μάθω ότι έχει αυτές τις διαστάσεις.
Στη C++ μαθαίνεις για «STL»;

Όχι ακόμα...
Αυτή τη στιγμή ασχολούμαι με μεθόδους επιλυσης γραμμικών συστημάτων, και απλά ήθελα να το κανω πιο γενικό προγραμματιστικα ώστε ο χρήστης να μην ειναι σε θέση να δωσει τις διαστασεις του πίνακα, στη περίπτωση που δεν τις ξέρει.....
Άρα να το κάνω με δυναμικό πίνακα;
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 14.04 trusty 3.13.0-35-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.13.0-32-generic, Windows 7
3 Intel Core i5-4210M CPU @ 2.60GHz ‖ RAM 7880 MiB ‖ Acer EA50_HWS - Acer Aspire E5-572G
4 Intel 4th Gen Core Processor Integrated Graphics [8086:0416] {i915}
5 wlan0: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter [168c:0036] (rev 01) ⋮ eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 12)
Nebula
babeTUX
babeTUX
 
Δημοσιεύσεις: 60
Εγγραφή: 12 Ιαν 2012, 20:47
Εκτύπωση

Re: Εισαγωγη και περασμα δεδομένων σε 2D array απο txt file

Δημοσίευσηαπό simosx » 18 Ιαν 2013, 18:49

Nebula έγραψε:Άρα να το κάνω με δυναμικό πίνακα;


Ναι. Φαίνεται να είναι η κατάλληλη λύση.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Εισαγωγη και περασμα δεδομένων σε 2D array απο txt file

Δημοσίευσηαπό Nebula » 18 Ιαν 2013, 19:17

Ok!
Δεν τσεκαρω ακόμη το θέμα, όταν φτιαξω το κωδικα θα το αναρτήσω και μετα θα το τσεκαρω...
Ευχαριστω πολύ!
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 14.04 trusty 3.13.0-35-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.13.0-32-generic, Windows 7
3 Intel Core i5-4210M CPU @ 2.60GHz ‖ RAM 7880 MiB ‖ Acer EA50_HWS - Acer Aspire E5-572G
4 Intel 4th Gen Core Processor Integrated Graphics [8086:0416] {i915}
5 wlan0: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter [168c:0036] (rev 01) ⋮ eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 12)
Nebula
babeTUX
babeTUX
 
Δημοσιεύσεις: 60
Εγγραφή: 12 Ιαν 2012, 20:47
Εκτύπωση

Re: Εισαγωγη και περασμα δεδομένων σε 2D array απο txt file

Δημοσίευσηαπό vasster » 18 Ιαν 2013, 21:46

Ενας άλλος τρόπος θα ήταν να μετρήσεις τα line delimiters και το max των field delimiters ανά line στο stream που αντιπροσωπεύει το αρχείο σου, τα οποία θα είναι οι διαστάσεις του πίνακα σου και στη συνέχεια να τον φορτώσεις.
Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
Ubuntu 17.04 (Zesty Zapus) 4.10.0-19-generic 64bit (en_US.UTF-8, Unity ubuntu)
Intel Core i5-6500 CPU @ 3.20GHz ‖ RAM 15915 MiB ‖ MSI H170M PRO-VDH (MS-7982) - MSI MS-7982
Intel Sky Lake Integrated Graphics [8086:1912] {i915_bpo}
enp1s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15) ⋮ wlx784476b5edea: 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
vasster
punkTUX
punkTUX
 
Δημοσιεύσεις: 253
Εγγραφή: 23 Μάιος 2010, 09:51
Εκτύπωση


Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι