Απορίες σε απλά πραγματάκια σε C++
- gasparosoft
- Gbyte level
- Posts: 1920
- Joined: Fri Oct 19, 2007 8:03 pm
Re: Απορίες σε απλά πραγματάκια σε C++
Από το λίγο που κοίταξα,έχεις ξεχάσει την "κατσαρή αγκύλη" της main.Τώρα δεν το έχω δοκιμάσει όλο για να σου πω(αν μπορώ φυσικά).Αν και αυτό που κάνεις (το for μέσα στο while δεν μου στέκει).Βγάλε το for έξω από το while και βάλε και την "κατσαρή αγκύλη" και δες αν λειτουργεί.
- proskopos
- Wow! Terabyte level
- Posts: 2808
- Joined: Tue Dec 18, 2007 4:01 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Στα φεγγάρια του Πλάνταρ...
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Την έχω την {... Και είναι και κατσαρή...gasparosoft wrote:Από το λίγο που κοίταξα,έχεις ξεχάσει την "κατσαρή αγκύλη" της main.Τώρα δεν το έχω δοκιμάσει όλο για να σου πω(αν μπορώ φυσικά).Αν και αυτό που κάνεις (το for μέσα στο while δεν μου στέκει).Βγάλε το for έξω από το while και βάλε και την "κατσαρή αγκύλη" και δες αν λειτουργεί.
Δεν νομίζω να είναι αυτό που λες το πρόβλημα... Αλλά άμα πάω σπίτι θα το δώ....
- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: Απορίες σε απλά πραγματάκια σε C++
Code: Select all
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using namespace std;
int athroisma = 0;
vector<string> the_vector;
vector<string>::iterator the_iterator;
void diavasma(string filename)
{
int temp;
ifstream inFile (filename.c_str());
while(inFile >> temp)
{
athroisma += temp;
}
cout << "To athroisma tou " << filename << " einai " << athroisma << endl ;
athroisma = 0;
}
int main()
{
ifstream infile1 ("arxeio.txt");
string word;
while(infile1 >> word)
{
the_vector.push_back(word);
}
the_iterator = the_vector.begin();
while( the_iterator != the_vector.end() ) {
diavasma(*the_iterator);
the_iterator++;
}
system("PAUSE");
return 0;
}
για 60 50
20 20 20 20 40
35 25 70 αντίστοιχα
-----------------------------------------------------------------------------------
Δε λειτουργεί γιατί πρώτα πρέπει να βάλεις όλες τις τιμές στο vector κ μετά να το προσπελάσεις με το iterator. Δηλαδή κλείσε πρώτα το while κ μετά πήγαινε στο for.proskopos wrote:Επέστρεψα και πάλι δυναμικά....Code: Select all
while (getline(inFile, titles)) { message_title.push_back(titles); for(it=message_title.begin() ; it < message_title.end(); it++ ) { ifstream inFile(*it.c_str()); } }
Το παραπάνω γιατί δεν λειτουργεί...;
Σε αυτό μου χτύπαγε ένα σφάλμα ο compiler αλλά έκανα το εξήςproskopos wrote:Λογικά το σφάλμα θα είναι στοCode: Select all
ifstream inFile(*it.c_str());
Code: Select all
string temp;
for(it=message_title.begin() ; it < message_title.end(); it++ )
{
temp = *it;
ifstream inFile(temp.c_str());
}
Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- proskopos
- Wow! Terabyte level
- Posts: 2808
- Joined: Tue Dec 18, 2007 4:01 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Στα φεγγάρια του Πλάνταρ...
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Για ποιόν λόγο μπορεί ο compiler να μην βγάζει λάθος(να μην δείχνει δηλαδή ότι η τάδε γραμμή έχει λάθος) , ωστόσο στο exit αντί για 0 να δείχνει 2.. (άρα υπάρχει λάθος, που δεν μου το δείχνει σε ποια γραμμή, και τι λάθος είναι..)..?
Δηλαδή μετά από compile πήρα αυτό...:
Τι μπορεί να φταίει...;
Δηλαδή μετά από compile πήρα αυτό...:
Code: Select all
........
build/Debug/Cygwin-Windows/newfile.o: In function `_Z4readSs':
/cygdrive/c/Documents and Settings/Jamais Ariere/Τα έγγραφά μου/NetBeansProjects/Application_1/newfile.cpp:18: multiple definition of `[u][b]read[/b][/u](std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
build/Debug/Cygwin-Windows/eswteriko.o:/cygdrive/c/Documents and Settings/Jamais Ariere/Τα έγγραφά μου/NetBeansProjects/Application_1/eswteriko.cpp:18: first defined here
build/Debug/Cygwin-Windows/newfile.o: In function `_Z7msgfileSs':
.....(εδώ λέει ότι πάνω αλλά αλλάζει την μέθοδο... Είτε βάζει το όνομα άλλης μεθόδου είτε ενός vector είτε και ενός iterator....)
collect2: ld returned 1 exit status
make[1]: *** [dist/Debug/Cygwin-Windows/application_1.exe] Error 1
make[1]: Leaving directory `/cygdrive/c/Documents and Settings/Jamais Ariere/Τα έγγραφά μου/NetBeansProjects/Application_1'
make: *** [.build-impl] Error 2
Build failed. Exit value 2.
- Zifnab
- Venus Former Team Member
- Posts: 7581
- Joined: Tue Nov 15, 2005 2:42 am
- Academic status: MSc
- Gender: ♂
- Location: Connecticut
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Τις μεθόδους σου τις δηλώνεις πριν την main() , προτού γράψεις το σώμα τους κάτω από την main???
Εναλλακτικά μπορείς να μεταφέρεις το σώμα των μεθόδων πάνω από την main... Τώρα αμα δεν έχουμε κομμάτια κώδικα πολλά μπορεί να φταίνε...
P.S Proskope ωραίο Username έχεις στο Pc σου: Jamais Ariere
Εναλλακτικά μπορείς να μεταφέρεις το σώμα των μεθόδων πάνω από την main... Τώρα αμα δεν έχουμε κομμάτια κώδικα πολλά μπορεί να φταίνε...
P.S Proskope ωραίο Username έχεις στο Pc σου: Jamais Ariere
- proskopos
- Wow! Terabyte level
- Posts: 2808
- Joined: Tue Dec 18, 2007 4:01 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Στα φεγγάρια του Πλάνταρ...
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Εϊχα το σώμα τςν μεθόδων πάνω από την main... Αλλά το άλλαξα και το έβαλα από κάτω και πιο πριν απλά τις δήλωσα, αλλά καμία διαφορά... Περίεργο....Zifnab wrote:Τις μεθόδους σου τις δηλώνεις πριν την main() , προτού γράψεις το σώμα τους κάτω από την main???
Εναλλακτικά μπορείς να μεταφέρεις το σώμα των μεθόδων πάνω από την main... Τώρα αμα δεν έχουμε κομμάτια κώδικα πολλά μπορεί να φταίνε...
P.S Proskope ωραίο Username έχεις στο Pc σου: Jamais Ariere
Υ.Γ. Jamais Ariere...: Με όνομα βαρύ σαν ιστορία...
- Spoiler: εμφάνιση/απόκρυψη
- Zifnab
- Venus Former Team Member
- Posts: 7581
- Joined: Tue Nov 15, 2005 2:42 am
- Academic status: MSc
- Gender: ♂
- Location: Connecticut
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Παράξενο....
Ο ρουφ... είναι το screenshot σου....
Ο ρουφ... είναι το screenshot σου....
- proskopos
- Wow! Terabyte level
- Posts: 2808
- Joined: Tue Dec 18, 2007 4:01 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Στα φεγγάρια του Πλάνταρ...
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
[off] Α... δεν το είχα προσέξει ότι το είχα αφήσει... [/off]Zifnab wrote:Παράξενο....
Ο ρουφ... είναι το screenshot σου....
Τώρα που έψαχνα να δω τι συμβαίνει με τον κώδικα που γράφω παραπάνω, παρατήρησα ότι το πρόβλημα δεν είναι στον κώδικα... Αλλά κάπου αλλού... Διότι ακόμα και αν έγραφα ένα πρόγραμμα που απλά έχει ενα cout πάλι το ίδιο περίπου έβγαζε... Δηλαδή με ένα πρόγραμμα που έχει cout << "kati";
έβγαζε
Code: Select all
/usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `/cygdrive/c/............/NetBeansProjects/Application_1'
mkdir -p build/Debug/Cygwin-Windows
g++.exe -c -g -o build/Debug/Cygwin-Windows/newfileadsasd.o newfileadsasd.cpp
----->
make[1]: *** No rule to make target `newfile.cpp', needed by `build/Debug/Cygwin-Windows/newfile.o'. Stop.
----->
make[1]: Leaving directory `/cygdrive/c/......../NetBeansProjects/Application_1'
make: *** [.build-impl] Error 2
Build failed. Exit value 2.
EDIT:
Το πρόβλημα λύθηκε....
- Bloody Mary
- Venus Former Team Member
- Posts: 1230
- Joined: Thu May 10, 2007 6:52 pm
- Academic status: Alumnus/a
- Gender: ♀
Re: Απορίες σε απλά πραγματάκια σε C++
Το πρόβλημα μου φαίνεται πως δεν έχει σχέση με το πρόγραμμα σου, αλλά με τον compiler... Μπορεί να μην έχει εγκατασταθεί σωστά, ή να του λείπουν κάποια βοηθήματα/βιβλιοθήκες που του χρειάζονται για να κάνει σωστά build/compile/debug κάποιο πρόγραμμα... Έχεις ξαναεκτελέσει προγράμματα από τον συγκεκριμένο compiler και δεν είχες πρόβλημα?
Στείλε μας το άρθρο σου, βοήθησε να αναπτυχθεί
το portal με θέματα που σε ενδιαφέρουν!
Υπάρχουν 10 είδη ανθρώπων: Αυτοί που ξέρουν δυαδικό σύστημα και αυτοί που δεν ξέρουν.το portal με θέματα που σε ενδιαφέρουν!
- proskopos
- Wow! Terabyte level
- Posts: 2808
- Joined: Tue Dec 18, 2007 4:01 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Στα φεγγάρια του Πλάνταρ...
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Δεν ήταν από τον compiler, ούτε καν θα το έλεγα πρόβλημα... Τελικά ήταν του netbeans θέμα. Επειδή στο ίδιο project, άνοιγα πολλά αρχεία γιατί έκανα πατέντες, ήθελε κάποια στιγμή να δηλώσω τα αρχεία αυτά με το αρχικό αρχείο του project... Και εγώ αυτό δεν το ήξερα.. Και δεν το είχα κάνει...Bloody Mary wrote:Το πρόβλημα μου φαίνεται πως δεν έχει σχέση με το πρόγραμμα σου, αλλά με τον compiler... Μπορεί να μην έχει εγκατασταθεί σωστά, ή να του λείπουν κάποια βοηθήματα/βιβλιοθήκες που του χρειάζονται για να κάνει σωστά build/compile/debug κάποιο πρόγραμμα... Έχεις ξαναεκτελέσει προγράμματα από τον συγκεκριμένο compiler και δεν είχες πρόβλημα?
- proskopos
- Wow! Terabyte level
- Posts: 2808
- Joined: Tue Dec 18, 2007 4:01 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Στα φεγγάρια του Πλάνταρ...
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Code: Select all
while (inFile2 >> word)
{
messages[word];
while (inFile3 >> word)
{
it4=messages.find(word);
if (messages.find(it4) != 0)
{
messages[word]++;
}
}
}
Να πάρω αρχικά μια λέξη από το inFile2 και να την προσθέσω στο messages map, στην συνέχεια να πάρω μια λέξη από το inFile3 και αν αυτή η λέξη βρίσκεται ήδη στο messages map, να αυξήση κατα 1 την τιμή της...
Μου βγάζει όμως λάθος στο
Code: Select all
messages.find(it4) != 0
- netharis
- Venus Former Team Member
- Posts: 1845
- Joined: Sun Jul 15, 2007 2:37 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Seattle, Washington
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Νομίζω η find σε ένα map, γυρίζει έναν iterator, και όχι τιμή.
Δοκίμασε να κάνεις τη σύγκριση με
Δοκίμασε να κάνεις τη σύγκριση με
Code: Select all
if (messages.find(it4) != messages.end())
{
messages[word]++;
}
Resistance is futile. Join the foss-side now!
"UNIX is very simple, it just needs a genius to understand its simplicity." - Dennis Ritchie
"The things that I want, by Max Payne. A smoke. A whiskey. For the sun to shine. I want to sleep, to forget. To change the past. Unlimited ammo and a license to kill. But right then, more than anything, I wanted her."
- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: Απορίες σε απλά πραγματάκια σε C++
Τι ακριβώς θες να κάνεις;
Να δεις αν υπάρχει και στα δύο; Να δεις πόσες φορές υπάρχει και στα δύο; Να δεις αν υπάρχει μόνο στο ένα;
----
Anyway, θα σου απαντήσω για το πιο πιθανό.
Αν θες να δεις αν υπάρχει και στα δύο μπορείς να κάνεις το παρακάτω:
Να δεις αν υπάρχει και στα δύο; Να δεις πόσες φορές υπάρχει και στα δύο; Να δεις αν υπάρχει μόνο στο ένα;
----
Anyway, θα σου απαντήσω για το πιο πιθανό.
Αν θες να δεις αν υπάρχει και στα δύο μπορείς να κάνεις το παρακάτω:
Code: Select all
while (inFile2 >> word)
{
messages[word]=1;
}
while (inFile3 >> word)
{
messages[word]++;
}
for(mapIterator = mymap.begin(); mapIterator != mymap.end(); mapIterator++)
if ((*mapIterator).second > 1)
cout << (*mapIterator).first << endl;;
Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- proskopos
- Wow! Terabyte level
- Posts: 2808
- Joined: Tue Dec 18, 2007 4:01 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Στα φεγγάρια του Πλάνταρ...
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Netharis δεν λειτουργεί αυτο... Το δοκίμασα... Έχεις δίκιο πάντως, iterator επιστρέφει... Θέλω να μετρήσω πόσες φορές υπάρχει (αν υπάρχει) μια λέξη που βρίσκεται στο infile3 ενώ παράλληλα βρίσκεται και στο inFile2...
- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: Απορίες σε απλά πραγματάκια σε C++
Στη λύση που σου έδωσα αντικατέστησε το παραπάνω cout με:
κι είσαι έτοιμος
Code: Select all
cout << "Το string " << (*mapIterator).first << " υπάρχει στο αρχείο 3, " << (*mapIterator).second - 1 << " φορές." << endl
Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- proskopos
- Wow! Terabyte level
- Posts: 2808
- Joined: Tue Dec 18, 2007 4:01 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Στα φεγγάρια του Πλάνταρ...
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
Έχω την εντύπωση ότι κάτι είναι λάθος, σε αυτό που έγραψες para... Γιατί τώρα που του δίνω κάτι δοκιμαστικά δεδόμένα, μου βγάζει κάθε φορά το ίσο με 1...
Επίσης γτ δεν δουλεύει το find...; Λογικά (δεν ξέρω πόσο λογικά, αλλά έτσι νομίζω ), μια μέθοδος που προυπάρχει για ένα set , map κτλ θα είναι πιο γρήγορη από οτιδήποτε άλλο.. Αν γνωρίζει κάποιος ας το επιβεβαιώσει, και ακόμα καλύτερα ας δώσει μια λίση στο παραπάνω πρόβλημα....
Code: Select all
(*mapIterator).second - 1
Επίσης γτ δεν δουλεύει το find...; Λογικά (δεν ξέρω πόσο λογικά, αλλά έτσι νομίζω ), μια μέθοδος που προυπάρχει για ένα set , map κτλ θα είναι πιο γρήγορη από οτιδήποτε άλλο.. Αν γνωρίζει κάποιος ας το επιβεβαιώσει, και ακόμα καλύτερα ας δώσει μια λίση στο παραπάνω πρόβλημα....
- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: Απορίες σε απλά πραγματάκια σε C++
Έμπλεξα δυο maps μαζί
Τελική έκδοση: Αντί για mymap, messages.
Επειδή υπάρχει περίπτωση να τα έχεις ήδη αλλάξει θα κάνω μια δοκιμή να δω αν δουλεύει
Τελική έκδοση:
Code: Select all
while (inFile2 >> word)
{
messages[word]=1;
}
while (inFile3 >> word)
{
messages[word]++;
}
for(mapIterator = messages.begin(); mapIterator != messages.end(); mapIterator++)
if ((*mapIterator).second > 1)
cout << "Το string " << (*mapIterator).first << " υπάρχει στο αρχείο 3, " << (*mapIterator).second - 1 << " φορές." << endl;;
Επειδή υπάρχει περίπτωση να τα έχεις ήδη αλλάξει θα κάνω μια δοκιμή να δω αν δουλεύει
Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- proskopos
- Wow! Terabyte level
- Posts: 2808
- Joined: Tue Dec 18, 2007 4:01 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Στα φεγγάρια του Πλάνταρ...
- Contact:
Re: Απορίες σε απλά πραγματάκια σε C++
para wrote:Έμπλεξα δυο maps μαζί
Τελική έκδοση:Αντί για mymap, messages.Code: Select all
while (inFile2 >> word) { messages[word]=1; } while (inFile3 >> word) { messages[word]++; } for(mapIterator = messages.begin(); mapIterator != messages.end(); mapIterator++) if ((*mapIterator).second > 1) cout << "Το string " << (*mapIterator).first << " υπάρχει στο αρχείο 3, " << (*mapIterator).second - 1 << " φορές." << endl;;
Επειδή υπάρχει περίπτωση να τα έχεις ήδη αλλάξει θα κάνω μια δοκιμή να δω αν δουλεύει
Μάντεψε.... Το είχα ήδη αλλάξει... Αλλά δεν κάνει...
- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: Απορίες σε απλά πραγματάκια σε C++
Μου δουλεύει κανονικά το παρακάτω
arxeio2.txt: mhden ena ena ena ena dyo dyo dyo tria tessera tessera tessera tessera
arxeio3.txt: ena dyo dyo tria tria tria tessera tessera tessera tessera
Το αποτέλεσμα που παίρνω είναι το:
(βγαίνει με αλφαβητική)
Code: Select all
#include <iostream>
#include <map>
#include <string>
#include <fstream>
using namespace std;
int main()
{
map<string, unsigned> messages;
map<string, unsigned>::const_iterator mapIterator;
string word;
ifstream inFile2 ("arxeio2.txt");
while (inFile2 >> word)
{
messages[word]=1;
}
ifstream inFile3 ("arxeio3.txt");
while (inFile3 >> word)
{
messages[word]++;
}
for(mapIterator = messages.begin(); mapIterator != messages.end(); mapIterator++)
if ((*mapIterator).second > 1)
cout << "To string " << (*mapIterator).first << " yparxei sto arxeio3, " << (*mapIterator).second - 1 << " fores." << endl;;
cin.get();
return 0;
}
arxeio3.txt: ena dyo dyo tria tria tria tessera tessera tessera tessera
Το αποτέλεσμα που παίρνω είναι το:
(βγαίνει με αλφαβητική)
Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: Απορίες σε απλά πραγματάκια σε C++
Επαναφέρω το θέμα με μια κουλή απορία..
Δε μου αναγνωρίζει το cout ο g++. Έχω κάνει include το iostream, αλλά εξακολουθεί τα ίδια.. Τι κάνω;
----
ok forget it -_-. Προέρχομαι από κάτι ώρες java κι είχα ξεχάσει να ορίσω το namespace. Θα επανέλθω με απορία όμως
Δε μου αναγνωρίζει το cout ο g++. Έχω κάνει include το iostream, αλλά εξακολουθεί τα ίδια.. Τι κάνω;
----
ok forget it -_-. Προέρχομαι από κάτι ώρες java κι είχα ξεχάσει να ορίσω το namespace. Θα επανέλθω με απορία όμως
Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: Απορίες σε απλά πραγματάκια σε C++
Πώς μπορώ να διακόπτω μέσα στο πρόγραμμα κάτι που το ίδιο το πρόγραμμα έχει αρχίσει να εκετελεί;
Τι ακριβώς θέλω να κάνω:
Αρχικά το πρόγραμμα καλεί τη system() η οποία δε σταματάει να εκτελείται από μόνη της. Θέλω όμως να συνεχίσω παρακάτω στο πρόγραμμα όσο θα τρέχει αυτή. (Το παρακάτω περιλαμβάνει κι άλλη κλήση της system() που κι αυτή θέλει να τη σταματήσει ο χρήστης.).
Ψάχνοντας βρήκα ότι αυτό μπορώ να το κάνω με τη fork() αλλά δε μου την αναγνωρίζει.
Πώς μπορώ να το πετύχω;
**Εναλλακτικά, μπορώ να φτιάξω ένα πρόγραμμα που θα ανοίγει ένα άλλο -ας πούμε- 10 φορές (σχεδόν) ταυτόχρονα κ να συνεχίζει να εκτελείται;
--
προς mods:
Τι ακριβώς θέλω να κάνω:
Αρχικά το πρόγραμμα καλεί τη system() η οποία δε σταματάει να εκτελείται από μόνη της. Θέλω όμως να συνεχίσω παρακάτω στο πρόγραμμα όσο θα τρέχει αυτή. (Το παρακάτω περιλαμβάνει κι άλλη κλήση της system() που κι αυτή θέλει να τη σταματήσει ο χρήστης.).
Ψάχνοντας βρήκα ότι αυτό μπορώ να το κάνω με τη fork() αλλά δε μου την αναγνωρίζει.
Πώς μπορώ να το πετύχω;
**Εναλλακτικά, μπορώ να φτιάξω ένα πρόγραμμα που θα ανοίγει ένα άλλο -ας πούμε- 10 φορές (σχεδόν) ταυτόχρονα κ να συνεχίζει να εκτελείται;
--
προς mods:
- Spoiler: εμφάνιση/απόκρυψη
Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- ~~Wind~~
- Gbyte level
- Posts: 1747
- Joined: Thu Nov 30, 2006 1:07 am
- Academic status: N>4
- Gender: ♂
- Location: *void
Re: Απορίες σε απλά πραγματάκια σε C++
με fork γίνεται πολύ όμορφα σε C. Αν είχες διαβάσει Λειτουργικά θα ήξερες
Γιατί η C είναι πολύ μπροστά από την C++.-
Έτσι μπορείς να γράψεις το πρόγραμμα σου σε C
H fork() αναγνωρίζεται από την C++. Δες, ένα απλό παράδειγμα:
κ να ελπίζεις οτι δουλεύει σωστά, ή μπορείς να περιμένεις μέχρι το 2010 που θα βγει το νέο πρότυπο για την C++ κ μάλλον θα περιλαμβάνει.
Δε μου έρχεται κάτι άλλο τώρα, ο netharis μπορεί να ξέρει κάτι παραπάνω.. (hoho! hoho!)
---------------------------------------------------------------------------------------
Ο ίδιος κώδικας σε C++
Με απλά λόγια αν το fork ξεκινά μια νέα διεργασία. Αν πετύχει επιστρέφει έναν αριθμό μεγαλύτερο του 0.
Αυτός είναι το id της νέας διεργασίας. (2 διεργασίες έχουμε : 1 διεργασία αυτή που γίνεται κ καλεί το fork, κ μία ακόμα αυτή που δημιουργείται από το fork)
Ότι έχουμε κάτω από το fork το κάνουν και οι δύο διεργασίες. Έτσι αν τυπώσουμε "Hello world" αυτό θα τυπωθεί δύο φορές. Σα να είμαστε σε παράλληλο σύμπαν δλδ.
Αυτό που αλλάζει στις δύο διεργασίες είναι το fork_return. Η αρχική διεργασία το βλέπει ως το pid (process id) της νέας διεργασίας ενώ η νέα το βλέπει 0 (νομίζω )
Έτσι αν πουμέ if ( fork_return > 0 ) τότε αυτό είναι true για την αρχική διεργασία αλλά false για την νέα.
Με αυτό τον τρόπο μπορούμε να διαχωρίσουμε τι εντολές θα συνεχίσει να κάνει η αρχική διεργασία
κ τι εντολές θα κάνει η νέα (στο else ή if ( fork_return == 0 ) ).
Τώρα όποιος θέλει να το ψάξει κι αλλό ας το κάνει. Μπορείται να βάλετε τις διεργασίες να επικοινωνούν κ να περιμένει η μία αποτελέσματα της άλλης κλπ.
Γιατί η C είναι πολύ μπροστά από την C++.-
Έτσι μπορείς να γράψεις το πρόγραμμα σου σε C
H fork() αναγνωρίζεται από την C++. Δες, ένα απλό παράδειγμα:
- Spoiler: εμφάνιση/απόκρυψη
κ να ελπίζεις οτι δουλεύει σωστά, ή μπορείς να περιμένεις μέχρι το 2010 που θα βγει το νέο πρότυπο για την C++ κ μάλλον θα περιλαμβάνει.
Δε μου έρχεται κάτι άλλο τώρα, ο netharis μπορεί να ξέρει κάτι παραπάνω.. (hoho! hoho!)
---------------------------------------------------------------------------------------
Ο ίδιος κώδικας σε C++
Με απλά λόγια αν το fork ξεκινά μια νέα διεργασία. Αν πετύχει επιστρέφει έναν αριθμό μεγαλύτερο του 0.
Αυτός είναι το id της νέας διεργασίας. (2 διεργασίες έχουμε : 1 διεργασία αυτή που γίνεται κ καλεί το fork, κ μία ακόμα αυτή που δημιουργείται από το fork)
Ότι έχουμε κάτω από το fork το κάνουν και οι δύο διεργασίες. Έτσι αν τυπώσουμε "Hello world" αυτό θα τυπωθεί δύο φορές. Σα να είμαστε σε παράλληλο σύμπαν δλδ.
Αυτό που αλλάζει στις δύο διεργασίες είναι το fork_return. Η αρχική διεργασία το βλέπει ως το pid (process id) της νέας διεργασίας ενώ η νέα το βλέπει 0 (νομίζω )
Έτσι αν πουμέ if ( fork_return > 0 ) τότε αυτό είναι true για την αρχική διεργασία αλλά false για την νέα.
Με αυτό τον τρόπο μπορούμε να διαχωρίσουμε τι εντολές θα συνεχίσει να κάνει η αρχική διεργασία
κ τι εντολές θα κάνει η νέα (στο else ή if ( fork_return == 0 ) ).
Τώρα όποιος θέλει να το ψάξει κι αλλό ας το κάνει. Μπορείται να βάλετε τις διεργασίες να επικοινωνούν κ να περιμένει η μία αποτελέσματα της άλλης κλπ.
Last edited by Bloody Mary on Mon Jan 26, 2009 7:47 pm, edited 3 times in total.
Reason: merged posts
Reason: merged posts
Come to foss-aueb ...we have cookies.. yamyam~nomnomnomnomnomnomnomnom
a cookie ~ I will do science to it