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

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

Δημοσ.

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

Οι θερμοκρασίες τριών πόλεων στις 12 το μεσημέρι για όλες τις

ημέρες μιας εβδομάδας αποθηκεύονται σε πίνακα δύο διαστάσεων.

Κάθε γραμμή του πίνακα αντιστοιχεί στις θερμοκρασίες μιας πόλης (η

πρώτη γραμμή για την Αθήνα, η δεύτερη για τη Θεσσαλονίκη και η

τρίτη για την Πάτρα), ενώ κάθε στήλη αντιστοιχεί σε μια ημέρα της

εβδομάδας (η πρώτη στήλη για την Κυριακή, η δεύτερη για τη

Δευτέρα, κ.ο.κ.).

Γράψτε πρόγραμμα σε γλώσσα C, το οποίο:

.. Να διαβάζει από το πληκτρολόγιο τις θερμοκρασίες κάθε

πόλης για κάθε μέρα της εβδομάδας (με κατάλληλα μηνύματα

πριν την ανάγνωση κάθε στοιχείου) και να τις αποθηκεύει στον πινακα ΤΕΜΡ.

ΕΓΩ ΤΗΝ ΞΕΚΙΝΑΩ ΚΑΠΩΣ ΕΤΣΙ,ΑΛΛΑ ΠΡΟΦΑΝΩΣ ΚΑΝΩ ΚΑΠΟΙΟ ΛΑΘΟΣ

#include <stdio.h>

main()

{

char chararray[30]="TEMP";

int temp[3][7];

int i,j;

for(i=0;i<3;i++)

for(j=0;j<7;j++)

μηπως καποιοσ μπορει να με βοηθησει και να μου πει αν εχω καποιο λαθος... :rolleyes:

  • Απαντ. 34
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσ.

Η λύση βρίσκεται κρυμμένη στις σελίδες του βιβλίου σου, άνοιξέ το και δεν θα χάσεις. Επίσης κάτι τρέχει με την εκφώνηση... φιάχτην.

 

Επιπλέον στο πρόγραμμα λείπουν πολλά ακόμα. Ξεκίνα διαβάζοντας πάλι την εκφώνηση.

Δημοσ.

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

Δημοσ.

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

 

ΟΧΙ δεν θα περνάς ημέρες και πόλεις, κάθε κουτάκι αντιστοιχεί σε μία θερμοκρασία.

3 σειρές(πόλεις) επί 7 στήλες(ημέρες) = 21 κουτάκια με αριθμούς. Οι πόλεις και οι μέρες είναι θεωρητικά, δηλαδή μόνο για σένα στην εκφώνηση. Εσύ θέλεις μέσα στην εμφωλευμένη for δηλαδή την δεύτερη for να αυξάνεις κατά ένα και να έχει ένα μήνυμα συν μια scanf για να αποθηκεύεις την είσοδο από το πληκτρολόγιο.

Δημοσ.

μηπως αυτος ο τροπος ειναι σωστοτερος απο τον προηγουμενο?

#include <stdio.h>

main()

{

char chararray[30]="TEMP";

const int polis=3;

const int imeres=7;

int temp[polis][imeres];

for(int i=0;i<polis;i++)

{

cout<<"dwse thn termokrasia tis"<<i<<"polis:";

for(int j=0;j<imeres;j++)

{

cout<<"imera"<<j<<":";

cin>>temp[j];

}

cout<<endl;

Δημοσ.

μηπως αυτος ο τροπος ειναι σωστοτερος απο τον προηγουμενο?

#include <stdio.h>

main()

{

char chararray[30]="TEMP"; <----ΣΒΗΣΤΟ!

const int polis=3;

const int imeres=7;

int temp[polis][imeres]; <-- Είτε γράψεις temp[3][7] είτε αυτό που έγραψες το ίδιο είναι

for(i=0;i<polis;i++) αλλά το temp[3][7] συνηθίζεται

{

printf("dwse thn termokrasia tis"<<i<<"polis:");

for(j=0;j<imeres;j++)

{

printf("imera"<<j<<":");

printf(>>temp[j]);

}

 

}

 

Μέσα στις for είναι το κυρίως μέρος. Δεν βλέπω scanf όμως και συγχύζομαι. Σβήσε το μήνυμα στην

πρώτη for δεν χρειάζεται. Αφού θέλεις μηνύματα με μέρα τότε με μία ΙF μέσα στην δεύτερη for

θα ελέγχεις αν πχ το j είναι 0 τότε είναι κυριακή, αν είναι 1 τότε Δευτέρα και έτσι θα έχει το ανάλογο μήνυμα. Συνέχισε...

 

Btw νομίζω το cout και cin ανήκουν στην c++ και όχι στην C ακόμα και αν ο compiler δεν βγάζει σφάλμα.

Δημοσ.

εννοέις να σβήσω το πρώτο for τελείως?

και να βαλω scanf("%f"\n"); κατω απο το τελευταιο printf?

δεν καταλαβα,μεσα στο if πως θα γραψω τισ ημερες?

 

Μέσα στις for είναι το κυρίως μέρος. Δεν βλέπω scanf όμως και συγχύζομαι. Σβήσε το μήνυμα στην

πρώτη for δεν χρειάζεται. Αφού θέλεις μηνύματα με μέρα τότε με μία ΙF μέσα στην δεύτερη for

θα ελέγχεις αν πχ το j είναι 0 τότε είναι κυριακή, αν είναι 1 τότε Δευτέρα και έτσι θα έχει το ανάλογο μήνυμα. Συνέχισε...

 

Btw νομίζω το cout και cin ανήκουν στην c++ και όχι στην C ακόμα και αν ο compiler δεν βγάζει σφάλμα.

ευχαριστω γιατι τα εχω μπερδεψει ολα μεταξυ τους...

Δημοσ.

εννοέις να σβήσω το πρώτο for τελείως?

και να βαλω scanf("%f"\n"); κατω απο το τελευταιο printf?

δεν καταλαβα,μεσα στο if πως θα γραψω τισ ημερες?

 

Οι δύο for χρειάζονται, μην την σβήσεις. Ο κώδικας μέσα στην for θα είναι κάπως έτσι:

 

for(int j = 0; j<7; j++){

if (j == 0){

cout << "Δώστε θερμοκρασία για την Κυριακή." << endl;

cin >> temp[j];

}

 

if (j == 1){

cout << "Δώστε θερμοκρασία για την Δευτέρα." << endl;

cin >> temp[j];

}

.

.

.

.

}

 

Μόλις η μεταβλητή j φτάσει στην τιμή 6 και η δεύτερη for τερματιστεί τότε η πρώτη for θα πάρει τιμή +1 και πάλι απ την αρχή στην δεύτερη for για την δεύτερη πόλη και μετά για την τρίτη.

Δημοσ.

σε ευχαριστω πολυ!πολυτιμη η βοηθεια σου...θα συνεχισω με τον τροπο που μου εδειξες...

 

μου φαινεται βιαστηκα να χαρω...να κοιτα το κανω ετσι και συνεχεια μου βρισκει λαθος στην πρωτη for

 

#include <stdio.h>

main()

{

const int polis=3;

const int imeres=7;

int temp[3][7];

for(i=0;i<3;i++){

if(i==0){

printf("dwse thermokrasia gia tin athina",n);

}

else if (j==1){

printf("dwse thermokrasia gia tin thessaloniki",n);

}

else if (j==2){

printf("dwse thermokrasia gia tin patra",n);

}

}

{

printf("dwse thn termokrasia tis"<<i<<"polis:");

for(intj=0;j<7;j++){

if(j==0){

printf("dwse thermokrasia gia tin kiriaki",n);

}

else if (j==1){

printf("dwse thermokrasia gia tin deutera",n);

}

else if (j==2){

printf("dwse thermokrasia gia tin trith",n);

}

else if (j==3){

printf("dwse thermokrasia gia tin tetarti",n);

}

else if (j==4){

printf("dwse thermokrasia gia tin pempti",n);

}

else if (j==5){

printf("dwse thermokrasia gia tin paraskeui",n);

}

else if (j==6){

printf("dwse thermokrasia gia to savvato",n);

}

}

}

{

printf("imera"<<j<<":");

printf(>>temp[j]);

scanf("%f"\n");

 

}

 

 

παλι λαθος το εχω κανει,ε?

Δημοσ.

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

Δημοσ.

Συνέχισέ το από εδώ...

 

>
#include <stdio.h>

#define POLEIS	3
#define MERES	7

int main( void )
{
int i,j, thermo[ POLEIS ][ MERES ] = {0};

for (i=0; i < POLEIS; i++)
{
	for (j=0; j < MERES; j++)
	{
		printf("Δώστε %dη θερμοκρασία για την %dη πόλη: ", j+1, i+1 );
		scanf("%d", &thermo[ i ][ j ] );
	}
	putchar('\n');
}

return 0;
}

 

Νομίζω είναι αρκετά καθαρός ο κώδικας ώστε να σε βοηθήσει να συνεχίσεις.

Δημοσ.

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

 

H for. :mrgreen: Πάλι με τον ίδιο τρόπο σκανάρεις τον πίνακα και εμφανίζεις τα περιεχόμενα.

Στο παράδειγμα κάπως τα μπέρδεψες πάλι... Τι την θες την else if?? Δες το παράδειγμά μου, απλά κάντο αντιγραφή μέσα στην δεύτερη for και άλλαξε τους αριθμούς.

Δημοσ.

δηλαδή να σβήσω τελείως τον κώδικα που έχω φτιάξει ή να το κάνω έτσι?

 

#include <stdio.h>

 

#define POLEIS 3

#define MERES 7

 

int main( void )

{

int i,j, thermo[ POLEIS ][ MERES ] = {0};

 

for (i=0; i < POLEIS; i++)

{

if(i==0){

printf("dwse thermokrasia gia tin athina",n);

}

else if (j==1){

printf("dwse thermokrasia gia tin thessaloniki",n);

}

else if (j==2){

printf("dwse thermokrasia gia tin patra",n);

}

}

{

printf("dwse thn termokrasia tis"<<i<<"polis:");

for(intj=0;j<7;j++){

 

 

 

for (j=0; j < MERES; j++)

{

printf("dwse thn &n thermokrasia gia thn &n poli: ", j+1, i+1 );

scanf("%d", &thermo[ i ][ j ] );

}

putchar('\n');

}

 

return 0;

}

Δημοσ.

Το πως θα το υλοποιήσεις είναι καθαρή δικιά σου υπόθεση, εμείς απλώς προτάσεις κάνουμε ;)

 

Βάζε το κώδικά σου μέσα σε [ code] κώδικας εδώ[/ code] (χωρίς κενά στις αγκύλες) ώστε να εμφανίζεται όμορφος εδώ στο φόρουμ, να μπορούμε να τον διαβάζουμε. Επίσης, για το input/output η C (που γράφεις στον τίτλο) δεν έχει << και >> ... αυτά είναι C++

 

Αν το input/output το κάνεις the C way (συναρτήσεις scanf(), fgets(), getachar(), printf(), puts(), κλπ) θα δουλεύει και σε C++, το ανάποδο όχι!

 

Όσο για τα if μέσα στον κώδικα για να βγαίνουν οι πόλεις και οι μέρες με ονόματα και όχι με αριθμούς, προσωπικά θα έφτιαχνα 2 πίνακες από c-strings με τα ονόματα των πόλεων και των ημερών, τους οποίους κατόπιν θα τους έκανα indexing απευθείας με τους μετρητές των loops...

 

>
#include <stdio.h>

#define POLEIS  3
#define MERES   7

int main( void )
{
       char *days[ MERES ]   = {"Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"};
       char *cities[ POLEIS ] = {"Αθήνα", "Θεσσαλονίκη", "Πάτρα"};
       int i,j, thermo[ POLEIS ][ MERES ] = {0};

       for (i=0; i < POLEIS; i++)
       {
           	printf("Θερμοκρασίες για %s...\n", cities[ i ] );
           	for (j=0; j < MERES; j++)
               {
                       printf("\tτην %s: ", days[ j ] );
                       scanf("%d", &thermo[ i ][ j ] );
               }
               putchar('\n');
       }

       return 0;
}

Πιστεύω πολύ πιο ευανάγνωστο και κυρίως πολύ πιο καθαρό, δομημένο και γρήγορο. Πιθανότατα όμως μεταγενέστερο στην ύλη σας.

 

EDIT: Διόρθωσα κάτι λάθη βιασύνης στον κώδικα.

Δημοσ.

και με ποιον τροπο μπορω να τα κανω να εμφανιζονται σε μορφη,

Κυριακή Δευτέρα Τρίτη Τετάρτη Πέμπτη Παρασκευή Σάββατο

Αθήνα 25 26 28 31 34 29 28

Θεσσαλονίκη 22 24 26 29 30 31 28

Πάτρα 26 27 29 30 30 31 29

ωστε σε καθε σειρα να εμφανιζονται οι θερμοκρασιες της ιδιας πολης,πρεπει να τα γραψω με καποιο τροπο ή να χρησιμοποιήσω κάποια εντολή?

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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