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

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

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

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

Δημοσίευσηαπό migf1 » 24 Ιουν 2011, 02:26

sqrt( (f1*f1)+(f2*f2)+2*f1*f2*cos );
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό clepto » 24 Ιουν 2011, 02:27

και την δύναμη του 2 μπορώ να την γράψω έτσι f1^2 ;
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 24 Ιουν 2011, 02:29

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

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

Δημοσίευσηαπό clepto » 24 Ιουν 2011, 02:34

οπότε θα γινόταν κάπως έτσι:

Κώδικας: Επιλογή όλων
sqrt( pow(f1, 2)+pow(f2, 2)+2*f1*f2*con );

είναι σωστό; :problem: :?:
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 24 Ιουν 2011, 02:44

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

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

Δημοσίευσηαπό clepto » 24 Ιουν 2011, 02:48

έχω άλλο πρόβλημα τώρα...
άρχισα να φτιάχνω ένα πρόγραμμα με τύπους της φυσικής της 1ης λυκείου για υπολογισμούς (Qdata σου κλέβω την ιδέα :mrgreen: :P :oops: )
ο κώδικας είναι αυτός:

Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<math.h>
#include<stdlib.h>



kinhseis() {

char kin;

printf("Αν το κινητό εκτελεί Ευθύγραμμη Ομαλή Κίνηση (Ε.Ο.Κ.) πατήστε ένα (1)/n Αν εκτελεί Ευθύγραμμη Ομαλά Επιταχυνόμενη πατήστε δύο (2)/n Αν εκτελεί Ευθύγραμμη Ομαλά Επιβραδυνόμενη πατήστε τρία (3)/n");
scanf("%c", &kin);

switch(kin)
{
case "1":
eok();
break;

case "2":
eoept();
break;

case "3":
eoepv();
break;
}
}

eok() {

int u1, x1, t1;
char ceok;

printf("Για να βρείτε την ταχύτητα του κινητού πατήστε ένα (1)/n Για να βρείτε το διάστημα που διένυσε δύο (2)/n Τον χρόνο που έκανε τρίτα (3)/n");
scanf("%c", ceok);

switch(ceok)
{
case "1":
printf("Γράψτε το διάστημα και την χρονική στιγμή: ");
scanf("%d %d", &x1, &t1);
u1 = (x1/t1);
printf("Η ταχύτητα του κινητού την χρονική στιμή %d s είναι %d m/s", t1, u1);
break;

case "2":
printf("Γράψτε την ταχύτητα και την χρονική στιγμή: ");
scanf("%d %d", &u1, &t1);
x1 = (u1*t1);
printf("Το κινητό την χρονική στιμή %d s έχει διανύσει %d m", t1, x1);
break;

case "3":
printf("Γράψτε την ταχύτητα και το διάστημα: ");
scanf("%d %d", &u1, &x1);
t1 = (x1/u1);
printf("Η χρονική στιμή που ψάχνετε είναι %d s", t1);
break;
}
}


λείπουν πολλά πράγματα ακόμα αλλά πήγα να κάνω compile για να δω αν τρέχει μέχρι εδώ και χτύπησε κόκκινο :P

Κώδικας: Επιλογή όλων

gcc -Wall -o "physic" "physic.c" (στο φάκελο: /home/chris/C)
physic.c:32:2: warning: return type defaults to ‘int’
physic.c: In function ‘kinhseis’:
physic.c:41:4: error: case label does not reduce to an integer constant
physic.c:42:5: warning: implicit declaration of function ‘eok’
physic.c:45:4: error: case label does not reduce to an integer constant
physic.c:46:5: warning: implicit declaration of function ‘eoept’
physic.c:49:4: error: case label does not reduce to an integer constant
physic.c:50:5: warning: implicit declaration of function ‘eoepv’
physic.c: At top level:
physic.c:55:2: warning: return type defaults to ‘int’
physic.c: In function ‘eok’:
physic.c:61:3: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int’
physic.c:65:4: error: case label does not reduce to an integer constant
physic.c:72:4: error: case label does not reduce to an integer constant
physic.c:79:4: error: case label does not reduce to an integer constant
Αποτυχία μεταγλώτισης.
physic.c:86:4: warning: control reaches end of non-void function
physic.c: In function ‘kinhseis’:
physic.c:53:5: warning: control reaches end of non-void function
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό Qdata » 24 Ιουν 2011, 09:26

clepto έγραψε:άρχισα να φτιάχνω ένα πρόγραμμα με τύπους της φυσικής της 1ης λυκείου για υπολογισμούς (Qdata σου κλέβω την ιδέα )


Να ρωτήσω: Η C δίνει το συνημίτονο, ημίτονο, εφαπτομένη σε rads;Αν ναι ήταν αυτό που με "έσκασε" και στη python.(Βρήκα λύση, και αν χρειαστείς πες μου)! :)
Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 24 Ιουν 2011, 12:14

Το βασικό που λείπει είναι η συνάρτηση main() πάντως :lol:
Βασικά, σου χτυπάνε τα ονόματα των συναρτήσεων τα οποία τα χρησιμοποιείς αλλά δεν έχεις ορίσει κώδικα ακόμα για αυτές, καθώς επίσης και το γεγονός πως στα case του switch μπορείς να βάζεις μονάχα int, ενώ εσύ βάζεις strings (τα διπλά εισαγωγικά στα "1", "2", "3" δηλώνουν τιμές για strings ). Πρέπει να τα αλλάξεις σε μονά εισαγωγικά ('1', '2', 3') ώστε να δηλώνουν τιμές τύπου char, που στη C ισοδυναμεί με int.

Επίσης, για να αποφεύγεις πιθανά προβλήματα, προσπάθησε στις συναρτήσεις να ορίζεις τι τύπο θέλεις να επιστρέφουν και στο τέλος του κώδικά τους να δηλώνεις με return αυτό που θες να σου επιστρέφει η συνάρτηση. Αν δεν θες να σου επιστρέφει κάτι, όριζέ την τύπου void και στο τέλος της γράφε ένα σκέτο return (δες πως το έκανα στο κώδικά σου).

Κώδικας: Επιλογή όλων

#include<stdio.h>
#include<math.h>
#include<stdlib.h>

// ----------------------------------------------------------------------------------
void kinhseis( void )
{

char kin;

printf("Αν το κινητό εκτελεί Ευθύγραμμη Ομαλή Κίνηση (Ε.Ο.Κ.) πατήστε ένα (1)/n Αν εκτελεί Ευθύγραμμη Ομαλά Επιταχυνόμενη πατήστε δύο (2)/n Αν εκτελεί Ευθύγραμμη Ομαλά Επιβραδυνόμενη πατήστε τρία (3)/n");
scanf("%c", &kin);

switch( kin )
{
case '1':
eok();
break;

case '2':
eoept();
break;

case '3':
eoepv();
break;
}

return;
}

// ----------------------------------------------------------------------------------
void eok( void )
{
int u1, x1, t1;
char ceok;

printf("Για να βρείτε την ταχύτητα του κινητού πατήστε ένα (1)/n Για να βρείτε το διάστημα που διένυσε δύο (2)/n Τον χρόνο που έκανε τρίτα (3)/n");
scanf("%c", ceok);

switch( ceok )
{
case '1':
printf("Γράψτε το διάστημα και την χρονική στιγμή: ");
scanf("%d %d", &x1, &t1);
u1 = (x1/t1);
printf("Η ταχύτητα του κινητού την χρονική στιμή %d s είναι %d m/s", t1, u1);
break;

case '2':
printf("Γράψτε την ταχύτητα και την χρονική στιγμή: ");
scanf("%d %d", &u1, &t1);
x1 = (u1*t1);
printf("Το κινητό την χρονική στιμή %d s έχει διανύσει %d m", t1, x1);
break;

case '3':
printf("Γράψτε την ταχύτητα και το διάστημα: ");
scanf("%d %d", &u1, &x1);
t1 = (x1/u1);
printf("Η χρονική στιμή που ψάχνετε είναι %d s", t1);
break;
}

return;
}



ΥΓ. Φίλε Qdata, δεν ξέρω αν χρησιμοποιούν rad οι έτοιμες τριγονωμετρικές συναρτήσεις... το Google τι λέει;

clepto έγραψε:έχω άλλο πρόβλημα τώρα...
άρχισα να φτιάχνω ένα πρόγραμμα με τύπους της φυσικής της 1ης λυκείου για υπολογισμούς (Qdata σου κλέβω την ιδέα :mrgreen: :P :oops: )
ο κώδικας είναι αυτός:
[snip]

λείπουν πολλά πράγματα ακόμα αλλά πήγα να κάνω compile για να δω αν τρέχει μέχρι εδώ και χτύπησε κόκκινο :P

Κώδικας: Επιλογή όλων

gcc -Wall -o "physic" "physic.c" (στο φάκελο: /home/chris/C)
physic.c:32:2: warning: return type defaults to ‘int’
physic.c: In function ‘kinhseis’:
physic.c:41:4: error: case label does not reduce to an integer constant
physic.c:42:5: warning: implicit declaration of function ‘eok’
physic.c:45:4: error: case label does not reduce to an integer constant
physic.c:46:5: warning: implicit declaration of function ‘eoept’
physic.c:49:4: error: case label does not reduce to an integer constant
physic.c:50:5: warning: implicit declaration of function ‘eoepv’
physic.c: At top level:
physic.c:55:2: warning: return type defaults to ‘int’
physic.c: In function ‘eok’:
physic.c:61:3: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int’
physic.c:65:4: error: case label does not reduce to an integer constant
physic.c:72:4: error: case label does not reduce to an integer constant
physic.c:79:4: error: case label does not reduce to an integer constant
Αποτυχία μεταγλώτισης.
physic.c:86:4: warning: control reaches end of non-void function
physic.c: In function ‘kinhseis’:
physic.c:53:5: warning: control reaches end of non-void function
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 24 Ιουν 2011, 12:25

Α, επίσης... για τις συναρτήσεις και eoepv() και eoept() που τις αναφέρεις χωρίς να έχεις ορίσει ακόμα κώδικα για αυτές, για να μη σου παραπονιέται ο compiler, βάλε τον κώδικά τους κενό.... π.χ.

Κώδικας: Επιλογή όλων

// -----------------------------------------
void eoepv( void )
{
return;
}
// -----------------------------------------
void eoept( void )
{
return;
}


Ακόμα, στην συνάρτηση kinhseis() χρησιμοποιείς τη συνάρτηση eok(), τον κώδικά της οποίας όμως τον έχεις κάτω από την kinhseis(). Πρέπει να τον ανεβάσεις πάνω από τη συνάρτηση kinhseis().

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

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

Δημοσίευσηαπό clepto » 24 Ιουν 2011, 12:43

ωραία ευχαριστώ....
Qdata δεν το έχω ψάξει ακόμα...είναι στο επόμενο κεφάλαιο, κάτσε να γράψω αυτό :P
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

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