Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: Alex_01 στις 17 Μαΐου 2022, 04:12:04 ΜΜ

Τίτλος: Ασκήσεις με συναρτήσεις στην C
Αποστολή από: Alex_01 στις 17 Μαΐου 2022, 04:12:04 ΜΜ

Άσκηση 1.
Δημιουργήστε μία συνάρτηση που να δέχεται σαν παραμέτρους τρείς τιμές και να
επιστρέφει την μικρότερή τους.
Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει τους βαθμούς τριών φοιτητών και να
εμφανίζει τον μικρότερο τους με χρήση της συνάρτησης.


Άσκηση 2.
Δημιουργήστε μία συνάρτηση που να δέχεται σαν παραμέτρους δύο δείκτες σε
πραγματικούς και να αντιμεταθέτει τα περιεχόμενά τους.
Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει δύο πραγματικούς αριθμούς και να
τους αντιμεταθέτει με χρήση της συνάρτησης.
Τίτλος: Απ: Ασκήσεις με συναρτήσεις στην C
Αποστολή από: tdrivas στις 17 Μαΐου 2022, 05:26:25 ΜΜ
#include <stdio.h>

float min(float x,float y, float z)
{
    if (x<=y  && x<=z)
        return x;
    else if (y<=x && y<=z)
        return y;
    return z;
}

int main() {
  int student;
  for(student=1;student<=3;student++)
  {
      printf("\nEnter 3 grades of student %d:",student);
      float g1,g2,g3;
      scanf("%f %f %f",&g1,&g2,&g3);
      printf("Minimum grade:%f\n",min(g1,g2,g3));
  }
return 0;
}
Τίτλος: Απ: Ασκήσεις με συναρτήσεις στην C
Αποστολή από: tdrivas στις 17 Μαΐου 2022, 05:29:59 ΜΜ
#include <stdio.h>

void swap(float *p1,float *p2)
{
    float tmp = *p1;
    *p1 = *p2;
    *p2 = tmp;
}
int main()
{
  float x, y;

  printf("Enter the value of x and y\n");
  scanf("%f%f", &x, &y);

  printf("Before Swapping\nx = %f\ny = %f\n", x, y);

  swap(&x,&y);

  printf("After Swapping\nx = %f\ny = %f\n", x, y);

  return 0;
}
Τίτλος: Απ: Ασκήσεις με συναρτήσεις στην C
Αποστολή από: dimitrios67 στις 18 Μαΐου 2022, 12:44:55 ΜΜ
Find min of 3 grades( float) in C.
Είναι μια λίγο διαφορετική προσέγγιση, με temp variables και χωρίς χρήση του else,
έτσι ώστε ο κώδικας να γίνει πιο απλός (με "τρίπλα" βεβαία στο find min, το παραδέχομαι,
με if-else etc είναι πιο απαιτητικό, πιο δύσκολο προγραμματιστικά)
Κώδικας [Επιλογή]
/*find min of 3 floats
Some thoughts...
I used clean code principles
I used function prototype
In main I read the variables one line each.
I thing reading all together is a bit error prone.
I used temporary variables in main, and in the function,
so function code (especially) is more readable and "clean".
Also I didn't use "else" (code become difficult to understand).
Also it's better to have only one "return" in functions, except in some cases.
Thank you ....
*/
#include <stdio.h>
float min3(float x, float y, float z);
int main(){
float a,b,c,min;

printf("give the 3 grades a,b,c to find min...\n");
printf("a: ");scanf("%f",&a);
printf("b: ");scanf("%f",&b);
printf("c: ");scanf("%f",&c);
min=min3(a,b,c);
//epeidh einai bathmoi, dinoyme 2 dekadika
printf("min(%.2f,%.2f,%.2f) = %.2f",a,b,c,min);

return 0;

}
float min3(float x, float y, float z){
float min;
min=x;
if (y<min) min=y;
if (z<min) min=z;

return min;
}
Τίτλος: Απ: Ασκήσεις με συναρτήσεις στην C
Αποστολή από: dimitrios67 στις 18 Μαΐου 2022, 01:11:28 ΜΜ
Παράθεση από: Alex_01 στις 17 Μαΐου 2022, 04:12:04 ΜΜΆσκηση 2.
>>Δημιουργήστε μία συνάρτηση που να δέχεται σαν παραμέτρους δύο δείκτες σε
πραγματικούς

>>και να αντιμεταθέτει τα περιεχόμενά τους.
>>Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει δύο πραγματικούς αριθμούς και να
>>τους αντιμεταθέτει με χρήση της συνάρτησης.

Η εκφωνηση ειναι λιγο περιεργη. "Δεχεται σαν παραμετρους 2 δεικτες σε πραγματικους"??
Η εκφωνηση θα μπορουσε να ηταν: γραψτε μια συναρτηση που κανει swap δυο πραγματικους
(κι εδω προβλημα, float or double?, δεν γραφουμε Pascal...), και γραψτε και μια main που καλει αυτη τη συναρτηση
και να ελεγξετε την σωστη λειτουργία της.
Μπορουμε να κανουμε στη C swap χωρις call-by-reference? (Εκτος από τις περιπτωσεις με "κολπα" π.χ. πίνακας 2 στοιχείων, με  struct δυο στοιχείων κλπ)