Προγραμματισμός σε C - Λύνουμε ασκήσεις

...ασύγχρονα μαθήματα γλώσσας C

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό elefher » 08 Ιουν 2010, 20:37

καλησπέρα παιδιά θα ήθελα να κάνω μία ερώτησει στο παρακάτω πρόγραμμα που είναι για τον υπολογισμό μέσης τιμής ενός πίνακα.
Κώδικας: Επιλογή όλων
//ipologismoi metriseon
#include<stdio.h>

#define N 8

float meso_mikos(float* x);

int main()
{
float metrisis[N]={10.3,10.7,9.6,11.1,10.9,9.7,10.1,9.9};

printf("To meso mikos tou antikimmenou inai : %.4f cm\n",meso_mikos(metrisis));
return 0;
}
//sinartisi gia ipologismo mesou mikous
float meso_mikos(float* x)
{
float meso=0;
int i;
for(i=0;i<N;i++)
{
meso+=*x++; //prossthesi ton stixion tou pinaka
}
return meso/N;
}

Το πρόγραμμα τρέχει κανονικά.Αυτο που θα ήθελα να μάθω είναι αφού διοχετεύω στη συνάρτησει έναν πίνακα και θέλω να χρησημοποιήσω δείκτες δεν θα έπρεπε να διοχετεύσω τι διεύθυνση του πίνακα (δηλ.στην printf(" xxxx%f ",meso_mikos(&metrisis));).Για ποιό λόγο όμως αυτό είναι λάθος όταν το κάνω?
⇛ Linux: Αρχάριος ┃ Προγραμματισμός:C/C++ ┃ Αγγλικά: χάλια
⇛ ubuntu 10.10 LTS 32-bit
⇛ Intel(R) core(TM)2 Duo CPU E4600@2.4GHz ┃ RAM:2GB DDR2 ┃ ATI SAPPHIRE HD 2400 PRO 250MB
⇛ Netbook ACER ASPIRE ONE D250 με ubuntu 10.10 LTS 32-bit
⇛ Turbo-X με ubuntu 12.04 LTS 32-bit Intel® Core™2 Duo CPU T8100 @ 2.10GHz × 2 VESA: M74
Άβαταρ μέλους
elefher
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 566
Εγγραφή: 03 Μάιος 2009, 03:15
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό elefher » 08 Ιουν 2010, 20:58

Νομίζω κατάλαβα γιατί.
Έτσι όπως το έχω βάλει το "meso_mikos(metrisis)" το "metrisis" είναι ο δείκτης και βλέπει στο πρώτο στοιχείο του πίνακα "metrisis[0]". Άρα είναι είδει δείκτης,είναι σα να μεταβιβάζω τη διεύθυνση ενός δείκτη.Οπότε για να εισάγω τη διεύθυνση του πίνακα πρέπει να γράψω "meso_mikos(&*metrisis)"που σημένει η διεύθυνση τον περιεχωμένων του δείκτη που είναι το πρώτο στοιχείο του πίνακα.
Σωστά???????
Περιμένω τις απαντήσεις σας.
⇛ Linux: Αρχάριος ┃ Προγραμματισμός:C/C++ ┃ Αγγλικά: χάλια
⇛ ubuntu 10.10 LTS 32-bit
⇛ Intel(R) core(TM)2 Duo CPU E4600@2.4GHz ┃ RAM:2GB DDR2 ┃ ATI SAPPHIRE HD 2400 PRO 250MB
⇛ Netbook ACER ASPIRE ONE D250 με ubuntu 10.10 LTS 32-bit
⇛ Turbo-X με ubuntu 12.04 LTS 32-bit Intel® Core™2 Duo CPU T8100 @ 2.10GHz × 2 VESA: M74
Άβαταρ μέλους
elefher
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 566
Εγγραφή: 03 Μάιος 2009, 03:15
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό M.Jackson » 09 Ιουν 2010, 13:46

καπιος καλός ελληνικός οδηγός δημιουργίας προγραμμάτων με γραφικό περιβάλλον ξέρετε με κώδικα να κάνεις πρόγραμμα με γραφικών περιβάλλον,,,
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό idomeneas » 09 Ιουν 2010, 21:21

elefher έγραψε:καλησπέρα παιδιά θα ήθελα να κάνω μία ερώτησει στο παρακάτω πρόγραμμα που είναι για τον υπολογισμό μέσης τιμής ενός πίνακα.
Κώδικας: Επιλογή όλων
//ipologismoi metriseon
#include<stdio.h>

#define N 8

float meso_mikos(float* x);

int main()
{
float metrisis[N]={10.3,10.7,9.6,11.1,10.9,9.7,10.1,9.9};

printf("To meso mikos tou antikimmenou inai : %.4f cm\n",meso_mikos(metrisis));
return 0;
}
//sinartisi gia ipologismo mesou mikous
float meso_mikos(float* x)
{
float meso=0;
int i;
for(i=0;i<N;i++)
{
meso+=*x++; //prossthesi ton stixion tou pinaka
}
return meso/N;
}

Το πρόγραμμα τρέχει κανονικά.Αυτο που θα ήθελα να μάθω είναι αφού διοχετεύω στη συνάρτησει έναν πίνακα και θέλω να χρησημοποιήσω δείκτες δεν θα έπρεπε να διοχετεύσω τι διεύθυνση του πίνακα (δηλ.στην printf(" xxxx%f ",meso_mikos(&metrisis));).Για ποιό λόγο όμως αυτό είναι λάθος όταν το κάνω?

Η διεύθυνση ενός πίνακα a[5] είναι η
Κώδικας: Επιλογή όλων
a ή &a[0]
Το πρόβλημα δεν είναι εκεί, αλλά στην προτεραιότητα τελεστών. Έχεις βάλει
Κώδικας: Επιλογή όλων
for(i=0;i<N;i++)
{
meso+=*x++; //prossthesi ton stixion tou pinaka
}
ενώ θα έπρεπε να βάλεις
Κώδικας: Επιλογή όλων
for(i=0;i<N;i++)
{
meso+=*(x+i); //prossthesi ton stixion tou pinaka
}
ή
Κώδικας: Επιλογή όλων
meso += x[i]
Πρώτα να αυξήσει και μετά να αθροίσει στην τιμή που θες να πάρεις (meso).
Λειτουργικό ⇛ Ubuntu 10.04 64 bit σε HP Pavilion dv7-3110ev
Προδιαγραφές φορητού ⇛ Core i3 2.13 GHz │ 3 GB │ nVidia G105M │ Broadcom 4357 │ Bluetooth ? │ Realtek HD Audio │ 17.3"
Λειτουργικό ⇛ Ubuntu 10.04 32 bit/Win XP σε desktop
Προδιαγραφές desktop ⇛ Pentium 4 3 GHz │ 2 GB DDR │ Sapphire ATi Radeon HD3450 512MB AGP │ Μητρική: Asus P5V800-MX
idomeneas
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 738
Εγγραφή: 09 Απρ 2010, 15:47
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό M.Jackson » 20 Ιουν 2010, 15:11

Να φτιάξετε ένα πρόγραμμα το οποίο αρχικά θα ζητάει από το χρήστη έναν ακέραιο
n . Στη συνέχεια ο χρήστης θα εισάγει ακέραιους αριθμούς από το
πληκτρολόγιο και το πρόγραμμα θα βρίσκει τον μέγιστο και τον ελάχιστο από αυτούς
τους αριθμούς και θα τους εκτυπώνει (τον μέγιστο και τον ελάχιστο) στην οθόνη.


Κώδικας: Επιλογή όλων
#include <stdio.h>
int main()
{
int n;
printf("Δώσε αριθμό n\n");
scanf("%d", &n);
int i;
int x;
int max=-10;
int min=10;
for (i=1; i<=n; i++) {
printf("Δώσε αριθμό x\n");
scanf("%d", &x);
if (x>max){
max=x;}
if (x<min){
min=x;}
}
printf ("Ο μέγιστος αριθμός είναι ο %d και ο ελάχιστος αριθμός είναι ο %d\n", max, min);

return 0;}
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό M.Jackson » 20 Ιουν 2010, 15:43

Να γράψετε ένα πρόγραμμα σε C που θα ζητάει από το χρήστη το έτος που γεννήθηκε, θα υπολογίζει τη σημερινή ηλικία του και θα την εμφανίζει στην οθόνη με κατάλληλο μήνυμα.
Κώδικας: Επιλογή όλων
#include <stdio.h>
int main()
{
printf("Δώσε έτος γέννησης σου\t");
int x;
scanf("%d", &x);
printf("Δώσε έτος που έχουμε σήμερα\t");
int y;
scanf("%d", &y);
int r=y-x;
printf ("Είσαι %d χρονών\n", r);
return 0;}
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό M.Jackson » 20 Ιουν 2010, 16:05

Να γράψετε ένα πρόγραμμα σε C που θα ζητάει από το χρήστη την ποσότητα (κιλά ) ενός προϊόντος που αγόρασε, την τιμή ανά μονάδα ( τιμή ανά κιλό), θα υπολογίζει το ποσό πληρωμής και θα το εμφανίζει στην οθόνη με κατάλληλο μήνυμα.
Κώδικας: Επιλογή όλων
#include <stdio.h>
int main()
{
printf("Δώσε κιλά προϊόντος:\t");
int x;
scanf("%d", &x);
printf("Δώσε τιμή ανά κιλό:\t");
int y;
scanf("%d", &y);
int e=x*y;
printf("Tο ποσό που πρέπει να πληρώσεις είναι: %d ευρώ\n", e);
return 0;}
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό M.Jackson » 20 Ιουν 2010, 18:33

Να γράψετε ένα πρόγραμμα σε C που θα υπολογίζει το εμβαδόν ενός τριγώνου.
Κώδικας: Επιλογή όλων
#include <stdio.h>
int main()
{
double vasi;
double ipsos;
printf ("Δώσε βάση: ");
scanf("%lf", &vasi);
printf ("Δώσε ύψος: ");
scanf("%lf", &ipsos);
double emvado=(vasi*ipsos)/2;
printf("To εμβαδό του τριγώνου είναι %g\n", emvado);
return 0;}
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό vaizard_kwstas » 08 Ιούλ 2010, 13:32

Να γραφεί πρόγραμμα που εισάγει ημερομηνία ως 2-2-4 νούμερα, δηλαδή, 03062010 (για 3 Ιουνίου 2010) και θα το μετατρέπει σε μέρα του έτους (π.χ 154η μέρα). Τα δίσεκτα έτη είναι αυτά που διαιρούνται με το 4 αλλά δεν είναι πολλαπλάσια του 100 εκτός αν είναι πολλαπλάσια του 400. Πχ. Το 2000 ήταν δίσεκτο (υπήρχε 29 Φεβρουαρίου) ενώ το 1900 δεν ήταν. Τελικά, θα εμφανίζει την απάντηση στην οθόνη.

Το πρόγραμμα θα τελειώνει όταν δοθούν 8 μηδενικά.

Εναλλακτικά, η είσοδος μπορεί να γίνει διαβάζοντας ένα αρχείο κειμένου, το οποίο ας υποθέσουμε ότι ονομάζεται input_file.txt
θα μπορούσε κάποιος να με βοηθήσει??? για εργασία σε c την 8έλω.ευχαριστώ
vaizard_kwstas
babeTUX
babeTUX
 
Δημοσιεύσεις: 1
Εγγραφή: 08 Ιούλ 2010, 13:12
Εκτύπωση

Re: Προγραμματισμός σε C - Λύνουμε ασκήσεις

Δημοσίευσηαπό elefher » 08 Ιούλ 2010, 18:06

Κώδικας: Επιλογή όλων
//sto programma dinoume mia imerominia kai vriski poses meres exoun perasi apo tin arxi tis xronias
#include<stdio.h>

#define N 12
//domi gia tin imerominia
struct date
{
int day,month,year;
}d1;

int main()
{
int i,sum;
char ch;
int monthday[N]={ 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31}; //apodosi timon se kathe mina
do
{
printf("Date: ");
scanf("%d%d%d",&d1.day,&d1.month,&d1.year);
//elenxos ean inai disektos xronos na ginoun 29 oi meres sto deftero mina
if(d1.year%4==0)
{
monthday[1]=29; //apodosi timis sto deftero stixio tou pinaka
printf("To etos inai disekto kai o 2os mhnas exi %d meres\n",monthday[1]);
}
sum=0; //midenisma metriti
//prosthesi imeron kathe mina
for(i=0;i<d1.month-1;i++)
{
sum+=monthday[i];
}

printf("%d mera\n",sum+d1.day); //ejodos apotelesmatos

printf("Thelete na sinexisete (y/n)???");
scanf("%s",&ch);
}
while(ch=='y');
return 0;
}


Θές να τα αποθυκεύεις και σε αρχείω;
Εάν έχεις κάποια απορία ρώτα.
⇛ Linux: Αρχάριος ┃ Προγραμματισμός:C/C++ ┃ Αγγλικά: χάλια
⇛ ubuntu 10.10 LTS 32-bit
⇛ Intel(R) core(TM)2 Duo CPU E4600@2.4GHz ┃ RAM:2GB DDR2 ┃ ATI SAPPHIRE HD 2400 PRO 250MB
⇛ Netbook ACER ASPIRE ONE D250 με ubuntu 10.10 LTS 32-bit
⇛ Turbo-X με ubuntu 12.04 LTS 32-bit Intel® Core™2 Duo CPU T8100 @ 2.10GHz × 2 VESA: M74
Άβαταρ μέλους
elefher
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 566
Εγγραφή: 03 Μάιος 2009, 03:15
Εκτύπωση

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

Επιστροφή στο Μαθήματα C