Ασκήσεις με συναρτήσεις στην C

Ξεκίνησε από Alex_01, 17 Μαΐου 2022, 04:12:04 ΜΜ

« προηγούμενο - επόμενο »

Alex_01


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


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

tdrivas

#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;
}
Thanassis Drivas
BSc in Computer Science
MSc in Space Science Applications and Technologies
https://github.com/tdrivas

tdrivas

#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;
}
Thanassis Drivas
BSc in Computer Science
MSc in Space Science Applications and Technologies
https://github.com/tdrivas

dimitrios67

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;
}

dimitrios67

Παράθεση από: Alex_01 στις 17 Μαΐου 2022, 04:12:04 ΜΜΆσκηση 2.
>>Δημιουργήστε μία συνάρτηση που να δέχεται σαν παραμέτρους δύο δείκτες σε
πραγματικούς

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

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