Βοήθεια με πρόγραμμα σε C

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

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

Βοήθεια με πρόγραμμα σε C

Δημοσίευσηαπό seekerakos93 » 14 Ιαν 2012, 19:04

Κώδικας: Επιλογή όλων
#include "stdafx.h"
#define n 10


int _tmain(int argc, _TCHAR* argv[])
{
int pinakas[n],i,j;
int *p=pinakas;

for(i=0;i<n;i++)
{
pinakas[i]=i+1;
}
for (i=0;i<n;i++)
{
printf("%d\t", *p);
p++;
}
scanf("%d",&i);


}



μπορείτε να μου εξηγήσετε τι κάνει στο περίπου αυτό το πρόγραμμα ?
βασικά δεν μπορώ να καταλάβω λίγο στην αρχή με την δηλώσει του δείκτη και στην επανάληψη στο printf το "\t"

:(
Τελευταία επεξεργασία από evolgen και 14 Ιαν 2012, 19:35, έχει επεξεργασθεί 2 φορά/ες συνολικά
Αιτία: Αλλαγή του τίτλου από Greeklish σε ελληνικά
Linux: βασικά ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Μέτρια
Ubuntu 11.10 32bit dual boot Windows 7 Ultimate 32 bit
seekerakos93
babeTUX
babeTUX
 
Δημοσιεύσεις: 4
Εγγραφή: 14 Ιαν 2012, 19:01
Εκτύπωση

Re: Boitheia me programma se C

Δημοσίευσηαπό evolgen » 14 Ιαν 2012, 19:12

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



!

Μήνυμα συντονισμού πρός τον/την seekerakos93

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

Γνώσεις 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: Boitheia me programma se C

Δημοσίευσηαπό clepto » 14 Ιαν 2012, 19:28

to "/t" αντιστοιχεί σε ένα tab, το βάζει για να φαίνονται καλύτερα τα στοιχεία του πίνακα...
με τους δείκτες δεν έχω ασχοληθεί στην c οπότε η μόνο μαντεψιά που μπορώ να κάνω είναι ότι επειδή οι δείκτες "παίζουν" πάνω στην μνήμη κατευθείαν ίσως το κάνει για ταχύτητα, αλλά μου φαίνεται περίεργο, δεν θα μπορούσε να το κάνει και χωρίς τον δείκτη;
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: Boitheia me programma se C

Δημοσίευσηαπό seekerakos93 » 14 Ιαν 2012, 19:32

η ασκηση ειναι απο ενα pdf του καθηγητη μου στο τει
δεν ξερω για ποιον λογο το εκανα η ασκηση λεει να εξησουμε
τι κανει το προγραμμα και εγω πιστευω οτι δεν υπαρχει καποιος
λογος για να χρησιπομοιηθει δεικτης αλλα το κανει πιο δυσκολο
Linux: βασικά ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Μέτρια
Ubuntu 11.10 32bit dual boot Windows 7 Ultimate 32 bit
seekerakos93
babeTUX
babeTUX
 
Δημοσιεύσεις: 4
Εγγραφή: 14 Ιαν 2012, 19:01
Εκτύπωση

Re: Βοήθεια με πρόγραμμα σε C

Δημοσίευσηαπό Star_Light » 14 Ιαν 2012, 21:11

seekerakos93 έγραψε:
Κώδικας: Επιλογή όλων
#include "stdafx.h"
#define n 10


int _tmain(int argc, _TCHAR* argv[])
{
int pinakas[n],i,j;
int *p=pinakas;

for(i=0;i<n;i++)
{
pinakas[i]=i+1;
}
for (i=0;i<n;i++)
{
printf("%d\t", *p);
p++;
}
scanf("%d",&i);


}



μπορείτε να μου εξηγήσετε τι κάνει στο περίπου αυτό το πρόγραμμα ?
βασικά δεν μπορώ να καταλάβω λίγο στην αρχή με την δηλώσει του δείκτη και στην επανάληψη στο printf το "\t"

:(


Γιατι δεν το δίνεις σε έναν compiler να στο μεταγλωτίσει να δεις τι κάνει?
Τίποτα δεν κάνει αυτο το πρόγραμμα γιατι δεν έχει main!!!! Που ειναι η main()? Ειναι μια συνάρτηση μονο
που οριζει έναν πίνακα ακεραίων στον οποίο κάνει μια αρχικοποίηση , βάζει έναν δείκτη p να δειχνει σε
αυτόν και στην συνέχεια εκτυπώνει τα περιεχόμενα του πίνακα μέσω του τελεστή διακοπής αναφοράς *
τέλος δεν ξεχνά να βάλει τον δείκτη μέσω αριθμητικής δεικτών να δείχνει στο επόμενο στοιχείο του πίνακα...
νομιζω η εξοδος πρεπει να ειναι

Κώδικας: Επιλογή όλων
1 2 3 4 5 6 7 8 9 10


Υ.Γ Η συνάρτηση αυτη θα ειναι ορισμένη μεσα στο stdafx.h . Για αυτο και πρεπει να το κανει #include πριν το χρησιμοποιησει
αλλιως θα κτυπησει ο μεταγλωτιστης.

Y.Γ2 Η scanf στο τέλος θεωρείται περιττή εκτος του οτι δεν μπορεις να την έχεις μεσα άν δεν έχεις κάνει #include το βασικό stdio.h αν θυμαμαι καλα... μαζι με την printf θα περιέχει και την scanf
Τελευταία επεξεργασία από Star_Light και 14 Ιαν 2012, 21:22, έχει επεξεργασθεί 1 φορά/ες συνολικά
Γνώσεις ⇛ 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

Δημοσίευσηαπό konnn » 14 Ιαν 2012, 21:20

seekerakos93 έγραψε:int *p=pinakas;

Το όνομα ενός πίνακα μπορεί να θεωρηθεί σαν ένας δείκτης στην αρχή του.Οπότε θέτει ένα νέο δείκτη που δείχνει στην αρχή του πίνακα.
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Βοήθεια με πρόγραμμα σε C

Δημοσίευσηαπό seekerakos93 » 14 Ιαν 2012, 21:28

Star_Light έγραψε:
seekerakos93 έγραψε:
Κώδικας: Επιλογή όλων
#include "stdafx.h"
#define n 10


int _tmain(int argc, _TCHAR* argv[])
{
int pinakas[n],i,j;
int *p=pinakas;

for(i=0;i<n;i++)
{
pinakas[i]=i+1;
}
for (i=0;i<n;i++)
{
printf("%d\t", *p);
p++;
}
scanf("%d",&i);


}



μπορείτε να μου εξηγήσετε τι κάνει στο περίπου αυτό το πρόγραμμα ?
βασικά δεν μπορώ να καταλάβω λίγο στην αρχή με την δηλώσει του δείκτη και στην επανάληψη στο printf το "\t"

:(


Γιατι δεν το δίνεις σε έναν compiler να στο μεταγλωτίσει να δεις τι κάνει?
Τίποτα δεν κάνει αυτο το πρόγραμμα γιατι δεν έχει main!!!! Που ειναι η main()? Ειναι μια συνάρτηση μονο
που οριζει έναν πίνακα ακεραίων στον οποίο κάνει μια αρχικοποίηση , βάζει έναν δείκτη p να δειχνει σε
αυτόν και στην συνέχεια εκτυπώνει τα περιεχόμενα του πίνακα μέσω του τελεστή διακοπής αναφοράς *
τέλος δεν ξεχνά να βάλει τον δείκτη μέσω αριθμητικής δεικτών να δείχνει στο επόμενο στοιχείο του πίνακα...
νομιζω η εξοδος πρεπει να ειναι

Κώδικας: Επιλογή όλων
1 2 3 4 5 6 7 8 9 10


Υ.Γ Η συνάρτηση αυτη θα ειναι ορισμένη μεσα στο stdafx.h . Για αυτο και πρεπει να το κανει #include πριν το χρησιμοποιησει
αλλιως θα κτυπησει ο μεταγλωτιστης.

Y.Γ2 Η scanf στο τέλος θεωρείται περιττή εκτος του οτι δεν μπορεις να την έχεις μεσα άν δεν έχεις κάνει #include το βασικό stdio.h αν θυμαμαι καλα... μαζι με την printf θα περιέχει και την scanf



βασικα ειναι απο compiler (Visual studio express)
την scanf στο τελος την εβαλα για να μπορω να δω το αποτελεσμα
και κανει αυτο που ειπε ο χρηστης konnn δηλαδη "
Το όνομα ενός πίνακα μπορεί να θεωρηθεί σαν ένας δείκτης στην αρχή του.Οπότε θέτει ένα νέο δείκτη που δείχνει στην αρχή του πίνακα."
Linux: βασικά ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Μέτρια
Ubuntu 11.10 32bit dual boot Windows 7 Ultimate 32 bit
seekerakos93
babeTUX
babeTUX
 
Δημοσιεύσεις: 4
Εγγραφή: 14 Ιαν 2012, 19:01
Εκτύπωση

Re: Βοήθεια με πρόγραμμα σε C

Δημοσίευσηαπό Star_Light » 14 Ιαν 2012, 21:40

Δεν θέτει έναν νεο δείκτη. Θέτει τον δείκτη που μόλις έχει ορισει να δείχνει στον πίνακα των 10 ακεραίων.
Και ο δείκτης αυτος σε κάθε loop τοποθετείται να δείχνει στο επόμενο στοιχείο του πίνακα ο οποίος ειναι αποθηκευμένος
σειριακά στην μνήμη. Το ένα στοιχείο διπλα στο άλλο.... για να αποκτήσεις προσβαση στο αμέσως επομενο το μονο που θα χρειαστεί
να κάνεις επομένως θα είναι να κινήσεις τον δείκτη μια θέση μετα.

Δεν μπορεις να δεις κανενα αποτέλεσμα οπως σου ειπα και προηγουμένως γιατι αυτο το πρόγραμμα δεν προκειται να κανει τιποτα.
Δεν έχει την κεντρική συνάρτηση του προγράμματος η οποια θα καλέσει την συνάρτηση int _tmain(int argc, _TCHAR* argv[])
για να υλοποιησει αυτο που θες να το επιστρέψει στην main και αυτη να επιστρέψει μετα τον έλεγχο στο λειτουργικό σύστημα (return 0) .
Φτιαξε μια main πρωτα και βάλε εκει μεσα να καλεί την συναρτηση σου... βεβαια θα πρεπει να υπάρχει και το αρχείο που κάνεις include στο
συστημα σου και να ειναι μεταγλωτισμενο.
Γνώσεις ⇛ 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

Δημοσίευσηαπό konnn » 14 Ιαν 2012, 22:30

Star_Light έγραψε:Οπότε θέτει ένα νέο δείκτη που δείχνει στην αρχή του

Οκ, θέτει ένα δείκτη.
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Βοήθεια με πρόγραμμα σε C

Δημοσίευσηαπό Star_Light » 14 Ιαν 2012, 22:45

konnn έγραψε:
Οκ, θέτει ένα δείκτη.


Ναι γιατι μπορει να νομισει οτι καθε φορα το προγραμμα θετει
εναν νεο δεικτη !!!! :D
Γνώσεις ⇛ 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
Εκτύπωση

Επόμενο

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

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