Προς το περιεχόμενο

εργασια C


jmallen3

Προτεινόμενες αναρτήσεις

Δημοσ.

παιδια θελω αμεση βοηθεια γιατι πρεπει να παραδωσω μια εργασια μεχρι μεθαυριο και εχω κολλησει.

οι αποριες που εχω και θελω βοηθεια ειναι οι εξης:

1)"Ο πίνακας χαρακτήρων char leksi[10] μπορεί να αποθηκεύσει ένα string μεγέθους το πολύ 9 χαρακτήρων". Αυτο ειναι σωστο η λαθος?

2)"h. Ένας δείκτης καταλαμβάνει περισσότερο χώρο στη μνήμη όσο μεγαλύτερη είναι η μεταβλητή στην οποία δείχνει" σωστο η λαθος και αυτο?

και τωρα εχω να φτιαξψ ενα προγραμμα οπως περιγραφεται εδω:

Γράψτε ένα πρόγραμμα το οποίο θα ορίζει μία συνάρτηση με την ονομασία max, που θα παίρνει ορίσματα δύο ακέραιους αριθμούς και θα επιστρέφει τον μεγαλύτερο από αυτούς. Ορίστε επίσης μία δομή (struct) με την ονομασία omada που θα αντιπροσωπεύει μία αθλητική ομάδα και θα αποτελείται από το όνομά της (πίνακας 20 χαρακτήρων), τον αριθμό των πρωταθλημάτων της (ακέραιος), τις μέσες εισπράξεις της ανά αγώνα (δεκαδικός), και την τρέχουσα βαθμολογία της στο πρωτάθλημα (ακέραιος). Στο κυρίως πρόγραμμα ορίστε 2 μεταβλητές του τύπου struct omada, αρχικοποιήστε τις με τιμές από τον χρήστη και στο τέλος χρησιμοποιήστε τη συνάρτηση max για να εκτυπώσετε την ομάδα που έχει τα περισσότερα πρωταθλήματα, και την ομάδα με τους περισσότερους βαθμούς.

 

αυτο που εχω κανει ειναι αυτο:

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

int max(int a, int 
{
 int m;
 if (a >  {
   m = a;
 }
 else {
   m = b;
 }
 return m;
}

struct omada
{
 char onoma[20];
  int AP;
 float ME;
 int B;
};

int main(int argc, char *argv[])
{
 struct omada A = {"0", 0, 0, 0, 0};
 struct omada B = {"0", 0, 0, 0, 0};
 
   scanf("%c %d %f %d", &A.onoma,&A.AP,&A.ME,&A.;
   scanf("%c %d %f %d", &B.onoma,&B.AP,&B.ME,&B.;
   
 int prwt,vathmoi;
 prwt = max(A.AP,B.AP);
 vathmoi = max(A.B,B.;
 printf("Ta perissotera prwtathlimata exei h omada %c", ??);
 printf("Tous perissoterous vathmous exei h omada %c", ??);
}


 return 0;
}

 

μπορειτε να με βοηθησετε να βγει σωστο το προγραμμα?

Δημοσ.

1)με επιφυλαξη,σωστο.

2)λαθος,το μεγεθος του δεικτη εχει να κανει με το ειδος του λογισμικου (32μπιτο,64μπιτο,κλπ)

 

τωρα σχετικα με τον κωδικα:

 

1)καθαρα για λογους ταχυτητας,αντικατεστησε την if-else στη συναρτηση max με τον τελεστη "?"

2)με τη scanf θες να διαβαζεις string αρα %s και οχι %c που ειναι για χαρακτηρα

3)εαν θυμαμαι καλα,η c δεν επιτρεπει τη δηλωση μεταβλητων οπουδηποτε μεσα στον κωδικα,συνεπως τη δηλωση για prwt,vathmoi βαλτη στην αρχη

4)εσυ με τη max επιστρεφεις την τιμη μιας μεταβλητης που περιεχεται σε struct.δεν γνωριζω εαν υπαρχει ετοιμη συναρτηση που να σου λεει που ανηκει,συνεπως με μια if-else ή ενα τελεστη ? νομιζω θα λυσεις και το προβλημα της εκτυπωσης

Δημοσ.

ετσι ειναι πιο σωστο τωρα??

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

int max(int a, int 
{
 int m;
 if (a >  {
   m = a;
 }
 else {
   m = b;
 }
 return m;
}

struct omada
{
 char onoma[20];
  int AP;
 float ME;
 int B;
};

int main(int argc, char *argv[])
{
int prwt,vathmoi;
 struct omada A = {"0", 0, 0, 0, 0};
 struct omada B = {"0", 0, 0, 0, 0};
 
   scanf("%s %d %f %d", &A.onoma,&A.AP,&A.ME,&A.;
   scanf("%s %d %f %d", &B.onoma,&B.AP,&B.ME,&B.;
   
 prwt = max(A.AP,B.AP);
 vathmoi = max(A.B,B.;
 if (prwt==A.AP) {
printf("Ta perissotera prwtathlimata exei h omada %s", A.onoma);
} else {
   printf("Ta perissotera prwtathlimata exei h omada %s", B.onoma);
}
if (vathmoi==A. {
printf("Tous perissoterous vathmous exei h omada %s", A.onoma);
} else {
   printf("Tous perissoterous vathmous exei h omada %s", B.onoma);
}
 
}


 return 0;
}

αλλα μου βγαζει σφαλμα οταν το κανω compile στην πρωτη γραμμη :

int max(int a, int B)
που λεει:

>syntax error before "int"  

Δημοσ.

παιδια θελω αμεση βοηθεια γιατι πρεπει να παραδωσω μια εργασια μεχρι μεθαυριο και εχω κολλησει.

οι αποριες που εχω και θελω βοηθεια ειναι οι εξης:

1)"Ο πίνακας χαρακτήρων char leksi[10] μπορεί να αποθηκεύσει ένα string μεγέθους το πολύ 9 χαρακτήρων". Αυτο ειναι σωστο η λαθος?

Το leksi[10] χωραει 10 χαρακτηρες αλλα επειδη ο τελευταιο πρεπει να ειναι ο χαρακτηρας τερματισμου \0, πρακτικα χωραει 9 εκτυπωσημους.

 

2)"h. Ένας δείκτης καταλαμβάνει περισσότερο χώρο στη μνήμη όσο μεγαλύτερη είναι η μεταβλητή στην οποία δείχνει" σωστο η λαθος και αυτο?

Λαθος η καθε μεταβλητη στο ιδιο μηχανημα πιανει συγκερκιμενη μνημη. Αν θες να την δεις κανε:

>int *var; ή char *var; /* ειτε οποιο αλλο τυπο θες */
printf("%d \n", sizeof( var ) );

 

Σου το διωρθωσα, το τελος καντο μονο σου... Αν εχεις απορεια κανε reply

>
#include <windows.h> /* δεν χρειαζεται */
#include <stdio.h>
#include <stdlib.h>

int max(int a, int 
{
 int m; /* δεν χρειαζεται */
/* διορθωμενο */
 if (a >  { 
   return a;
 }
 else {
   return b;
 }
/* τελος διορθωμενο */
}

struct omada
{
 char onoma[20];
 int protathimata; /* καλυτερο ονομα */
 double eisprakseis; /* καλυτερα double */
 int vathmoi; /* καλυτερο ονομα */
};

int main(int argc, char *argv[])
{
 struct omada A, Β; /* δεν χρειζονται αρχικοποιηση, αφου κανεις scanf */
 int maxprwt, maxvathm;

 prtinf("Dwse <onoma> <protathlimata> <eispakseis> <vathmoi> gia tin proti omoda\n");
 scanf("%19s %d %f %d", &A.onoma, &A.protathimata, &A.eisprakseis, &A.vathmoi); /* διορθωμενο */

 prtinf("Dwse <onoma> <protathlimata> <eispakseis> <vathmoi> gia tin deyteri omoda\n");
 scanf("%19s %d %f %d", &B.onoma, &B.protathimata, &B.eisprakseis, &B.vathmoi); /* διορθωμενο */
   
 
 maxprwt = max(A.protathimata, B.protathimata);
 maxvathm = max(A.vathmoi, B.vathmoi);

 printf("Ta perissotera prwtathlimata exei h omada ");

 if (prwt == A.protathimata) {
   printf("%s", A.onoma);
 }
 else {
   printf("%s", B.onoma);
 }
 printf("\n");

 printf("Tous perissoterous vathmous exei h omada");
 /* καντο εσυ */

 return 0;
}

Δημοσ.

αφου εκανα τις διορθωσεις που μου επεδειξες και διορθωσα καποια σφαλματα που εβγαζε βγηκε ετσι το προγραμμα:

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

int max(int a, int 
{
 int m; 
 if (a >  { 
   return a;
 }
 else {
   return B;
 }

}


struct omada
{
 char onoma[20];
 int protathimata;
 double eisprakseis;
 int B;
};

int main(int argc, char *argv[])
{
 struct omada A, B;
 int maxprwt, maxvathm;
 prtinf("Dwse <onoma> <protathlimata> <eispakseis> <vathmoi> gia tin proti omada\n");
 scanf("%19s %d %f %d", &A.onoma, &A.protathimata, &A.eisprakseis, &A.;

 prtinf("Dwse <onoma> <protathlimata> <eispakseis> <vathmoi> gia tin deyteri omada\n");
 scanf("%19s %d %f %d", &B.onoma, &B.protathimata, &B.eisprakseis, &B.;
   
 
 maxprwt = max(A.protathimata, B.protathimata);
 maxvathm = max(A.B, B.;

 printf("Ta perissotera prwtathlimata exei h omada ");

 if (maxprwt == A.protathimata) {
   printf("%s", A.onoma);
 }
 else {
   printf("%s", B.onoma);
 }
 printf("\n");

 printf("Tous perissoterous vathmous exei h omada");
 if (maxvathm == A. {
   printf("%s", A.;
 }
 else {
   printf("%s", B.;

 return 0;
}

 

αλλα το μονο σφαλμα που βγαζει τωρα ειναι στην τελευταια γραμμη(}) και ειναι αυτο:

> syntax error at end of input 

Δημοσ.

καταρχας ευχαριστω ολους για την καθοριστικη σας βοηθεια!! τελικα μια αγγυλη ελειπε και το προγραμμα λειτουργει αψογα!

ευχαριστω πολυ παιδια!

Δημοσ.

Μιας κι ο φίλος nilosgr ουσιαστικά σου έδωσε σχεδόν όλο τον κώδικα, ορίστε και μια πιο συμπτυγμένη του έκδοση (μην την παραδώσεις όμως αυτή γιατί θα σε πάρει χαμπάρι ο καθηγητής σου :rolleyes:) Την παραθέτω εγκυκλοπαιδικά...

 

>
#include <stdio.h>

struct omada {
char	onoma[19+1];
int	titloi;
float	eisprajeis;
int	bathmoi;
};

int max(const int n1, const int n2)
{
return (n1>n2) ? n1 : n2;
}

int main(int argc, char *argv[])
{
struct omada A, B;
  
printf("Dwste stoixeia 1hs omadas (onoma, titloi, eisprajeis, bathmoi)\n");
scanf("%19s %d %f %d", A.onoma, &A.titloi, &A.eisprajeis, &A.bathmoi);

printf("\nDwste stoixeia 2hs omadas (onoma, titloi, eisprajeis, bathmoi)\n");
scanf("%19s %d %f %d", B.onoma, &B.titloi, &B.eisprajeis, &B.bathmoi);

printf(
	"\nToys psrissoteroys titloys toys exei h omada: %s\n",
	max(A.titloi, B.titloi) == A.titloi ? A.onoma : B.onoma
);

printf(
	"Toys psrissoteroys bathmoys toys exei h omada: %s\n",
	max(A.bathmoi, B.bathmoi) == A.bathmoi ? A.onoma : B.onoma
);

return 0;
}

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...