Τα πάντα για την C

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

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

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 10 Οκτ 2011, 12:59

stamatiou έγραψε:
Ωρίστε τι μου λέει στο gdb:
Spoiler: show
#0 0x00007ffff7a7bd05 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff7a7fab6 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff7ab4d7b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007ffff7ac0a8f in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#4 0x00007ffff7ac48e3 in free () from /lib/x86_64-linux-gnu/libc.so.6
#5 0x0000000000400abe in table_cleanup (table=0x7fffffffe180) at main.c:70
#6 0x000000000040119e in main () at main.c:249

Και μέσα στο Σαββατοκύριακο θα δοκιμάσω και το Pelles C αλλά γιατί παίρνει μόνο το δεύτερο input;

Δεν βοηθάει αυτό που μου δείχνεις από τον gdb. Είναι λίστα λαθών ή απλά λίστα διευθύνσεων από μεταβλητές ή κλήσεις συναρτήσεων; (δεν πολυθυμάμαι κι απέξω το interface του gdb).

Όσο για το 2ο input, επειδή δεν θυμάμαι καθόλου για ποιο πράγμα μιλάμε :lol: κάνε μου μια παράθεση του κώδικα και πες μου σε ποιο input αναφέρεσαι και σε ποιο πρόγραμμα.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 10 Οκτ 2011, 13:02

Star_Light έγραψε:BTW migf1 τελικα τι εκανες με τον αλγοριθμο της ναυμαχίας? :)

Μου έχει μείνει το τελικό κομμάτι της τεχνητής νοημοσύνης, εκείνο που πρέπει να βυθίσει το πλοίο (sink shooting mode). Με έχει κουράσει και το έχω παρατήσει τις τελευταίες μέρες, αλλά έχω βγάλει public τον κώδικα και ήδη ένα παλικάρι έχει ξεκινήσει να προσθέτει γραφικό περιβάλλον :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 10 Οκτ 2011, 14:24

migf1 έγραψε:
Μου έχει μείνει το τελικό κομμάτι της τεχνητής νοημοσύνης, εκείνο που πρέπει να βυθίσει το πλοίο (sink shooting mode). Με έχει κουράσει και το έχω παρατήσει τις τελευταίες μέρες, αλλά έχω βγάλει public τον κώδικα και ήδη ένα παλικάρι έχει ξεκινήσει να προσθέτει γραφικό περιβάλλον :)


Aμα ειχα τις γνωσεις θα το εφτιαχνα εγω :P αλλα προς το παρον προσπαθω να υλοποιησω πιο απλους αλγοριθμους.
Με πολυπλοκοτητα έχεις ασχοληθει να ρωτησω κατι?
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 10 Οκτ 2011, 14:29

Παντως επειδη μπηκα σε περιεργεια... μολις βρω χρονο θα διαβασω τον αλγοριθμο.
Ποτε δεν ξερεις... ισως καταφερω και καταλαβω κατι. Οποτε θα σου πω.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 10 Οκτ 2011, 16:58

Απλή υλοποίηση για τα πολλαπλάσια ενος αριθμου τον οποιο θα δινει ο χρήστης

Κώδικας: Επιλογή όλων
/*---------------------------------------------------
* Upologizei ta pollaplasia enos arithmou
* orio sta pollaplasia pou upologizei to opoio
* epilegei o xristis , epiprostheta otan
* o arithmos pou 8a epilegetai gia na upologis8oun
* ta pollaplasia tou tha einai perittos arithmos
* tote tha ektupwnonte mono ta zuga tou pollaplasia
*
* version : 1.2 by Kostas
*--------------------------------------------------- */

#include <stdio.h>

void pollaplasia(int n);
void zuga_pollaplasia_perittou(int n);
int main() // main function

{
int n;

printf("Dwste to n: ");
scanf("%d",&n);

if((n%2)==1)
{
printf("H if doulevei");
zuga_pollaplasia_perittou(n);
}

else if((n%2)==0)
{
printf(" H else if doulevei");
pollaplasia(n);
} // function call

return 0;
}
//---------------------------------------------

void pollaplasia(int n)
{

int count , pollaplasia , s;

printf("\n Posa pollaplasia theleis na upologiseis? \n ");
scanf("%d",&s); // The limit is given by user

for(count=1; count<(s+1); count++) // for count=1 till ... s+1 because
// the zero is not included
{
pollaplasia=count*n;

printf("\n%d",pollaplasia);

}
return;
}

//---------------------------------------------
void zuga_pollaplasia_perittou(int n)
{
int s , count , pollaplasia;

printf("\n Posa pollaplasia theleis na upologiseis? \n ");
scanf("%d",&s);

for(count=1; count<(s+1); count++)
{
pollaplasia=count*n;
if((pollaplasia%2)==0)
printf("\n%d",pollaplasia);
}

return;
}



Το θέμα που προκύπτει ειναι αν τελικα θα πρέπει να χρησιμιποιήσω και δευτερη συνάρτηση η οποια απλα διαφοροποιείται με την βασικη(pollaplasia) μονο σε ενα if .
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 10 Οκτ 2011, 18:25

migf1 έγραψε:
stamatiou έγραψε:
Ωρίστε τι μου λέει στο gdb:
Spoiler: show
#0 0x00007ffff7a7bd05 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff7a7fab6 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff7ab4d7b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007ffff7ac0a8f in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#4 0x00007ffff7ac48e3 in free () from /lib/x86_64-linux-gnu/libc.so.6
#5 0x0000000000400abe in table_cleanup (table=0x7fffffffe180) at main.c:70
#6 0x000000000040119e in main () at main.c:249

Και μέσα στο Σαββατοκύριακο θα δοκιμάσω και το Pelles C αλλά γιατί παίρνει μόνο το δεύτερο input;

Δεν βοηθάει αυτό που μου δείχνεις από τον gdb. Είναι λίστα λαθών ή απλά λίστα διευθύνσεων από μεταβλητές ή κλήσεις συναρτήσεων; (δεν πολυθυμάμαι κι απέξω το interface του gdb).

Όσο για το 2ο input, επειδή δεν θυμάμαι καθόλου για ποιο πράγμα μιλάμε :lol: κάνε μου μια παράθεση του κώδικα και πες μου σε ποιο input αναφέρεσαι και σε ποιο πρόγραμμα.

https://ideone.com/iaL2d
:lol:
Αυτός είναι ο κώδικας, και όταν ζητά input από το χρήστη 2 φορές ,μόνο τη δεύτερη το παίρνει....
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 10 Οκτ 2011, 22:00

stamatiou έγραψε:
migf1 έγραψε:
stamatiou έγραψε:
Ωρίστε τι μου λέει στο gdb:
Spoiler: show
#0 0x00007ffff7a7bd05 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff7a7fab6 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff7ab4d7b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007ffff7ac0a8f in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#4 0x00007ffff7ac48e3 in free () from /lib/x86_64-linux-gnu/libc.so.6
#5 0x0000000000400abe in table_cleanup (table=0x7fffffffe180) at main.c:70
#6 0x000000000040119e in main () at main.c:249

Και μέσα στο Σαββατοκύριακο θα δοκιμάσω και το Pelles C αλλά γιατί παίρνει μόνο το δεύτερο input;

Δεν βοηθάει αυτό που μου δείχνεις από τον gdb. Είναι λίστα λαθών ή απλά λίστα διευθύνσεων από μεταβλητές ή κλήσεις συναρτήσεων; (δεν πολυθυμάμαι κι απέξω το interface του gdb).

Όσο για το 2ο input, επειδή δεν θυμάμαι καθόλου για ποιο πράγμα μιλάμε :lol: κάνε μου μια παράθεση του κώδικα και πες μου σε ποιο input αναφέρεσαι και σε ποιο πρόγραμμα.

https://ideone.com/iaL2d
:lol:
Αυτός είναι ο κώδικας, και όταν ζητά input από το χρήστη 2 φορές ,μόνο τη δεύτερη το παίρνει....

Εσένα σου δουλεύει μια χαρά;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 11 Οκτ 2011, 12:32

stamatiou έγραψε:
Αυτός είναι ο κώδικας, και όταν ζητά input από το χρήστη 2 φορές ,μόνο τη δεύτερη το παίρνει...
Εσένα σου δουλεύει μια χαρά;

Σε αυτό εδώ το ποστ: viewtopic.php?p=210537#p210537 σου έχω εξηγήσει αναλυτικά και σου έχω δώσει κώδικα τόσο για την append, όσο και για την prepend. Η prepend που έχεις σε αυτόν τον κώδικα είναι λάθος.

Όσο για την delete_num() που καλεί την delete_pos() το 1ο που βλέπω στην delete_pos() είναι πως αν το posit είναι π.χ. 0 η memove() επιχειρεί να κάνει access στο στοιχείο table[-1] λόγω του &table->buffer[posit-1] που της περνάς σαν όρισμα.

ΥΓ. Επίσης (για πολλοστή φορά :P) ο κώδικάς σου είναι δυσανάγνωστος και επιρρεπής σε λάθη (return στην ίδια γραμμή με τα if, loop με κενά σώματα που έχουν το ελληνικό ερωτηματικό στην ίδια γραμμή αντί σε ξεχωριστή από κάτω, κολλημένες γραμμές, κλπ).
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 11 Οκτ 2011, 12:47

Star_Light έγραψε:
...
Με πολυπλοκοτητα έχεις ασχοληθει να ρωτησω κατι?

Τα βασικά τα θυμάμαι, για πες.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 11 Οκτ 2011, 13:17

Star_Light έγραψε:Απλή υλοποίηση για τα πολλαπλάσια ενος αριθμου τον οποιο θα δινει ο χρήστης

Κώδικας: Επιλογή όλων
/*---------------------------------------------------
* Upologizei ta pollaplasia enos arithmou
* orio sta pollaplasia pou upologizei to opoio
* epilegei o xristis , epiprostheta otan
* o arithmos pou 8a epilegetai gia na upologis8oun
* ta pollaplasia tou tha einai perittos arithmos
* tote tha ektupwnonte mono ta zuga tou pollaplasia
*
* version : 1.2 by Kostas
*--------------------------------------------------- */

#include <stdio.h>

void pollaplasia(int n);
void zuga_pollaplasia_perittou(int n);
int main() // main function

{
int n;

printf("Dwste to n: ");
scanf("%d",&n);

if((n%2)==1)
{
printf("H if doulevei");
zuga_pollaplasia_perittou(n);
}

else if((n%2)==0)
{
printf(" H else if doulevei");
pollaplasia(n);
} // function call

return 0;
}
//---------------------------------------------

void pollaplasia(int n)
{

int count , pollaplasia , s;

printf("\n Posa pollaplasia theleis na upologiseis? \n ");
scanf("%d",&s); // The limit is given by user

for(count=1; count<(s+1); count++) // for count=1 till ... s+1 because
// the zero is not included
{
pollaplasia=count*n;

printf("\n%d",pollaplasia);

}
return;
}

//---------------------------------------------
void zuga_pollaplasia_perittou(int n)
{
int s , count , pollaplasia;

printf("\n Posa pollaplasia theleis na upologiseis? \n ");
scanf("%d",&s);

for(count=1; count<(s+1); count++)
{
pollaplasia=count*n;
if((pollaplasia%2)==0)
printf("\n%d",pollaplasia);
}

return;
}



Το θέμα που προκύπτει ειναι αν τελικα θα πρέπει να χρησιμιποιήσω και δευτερη συνάρτηση η οποια απλα διαφοροποιείται με την βασικη(pollaplasia) μονο σε ενα if .

Βασικά, σύμφωνα με την εκφώνηση που έχεις στην αρχή, όταν δίνω για νούμερο το 9 και κατόπιν ζητάω 3 πολλαπλάσια περιμένω να μου βγάλει 18, 36, 54 αλλά αυτό μου βγάζει μόνο το 18.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

ΠροηγούμενηΕπόμενο

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