Eruyomo
Πολύ δραστήριο μέλος


Chara3 ευχαρίστως. Απλά να ξέρεις οτι το μόνο που μπορούμε να κάνουμε είναι να βοηθήσουμε/επεξηγήσουμε κάτι. Το να δώσουμε έτοιμες λύσεις δεν βοηθάει.
nefi, μην το πάρεις προσωπικά αλλα απο τα λάθη που έκανες στον πρώτο κώδικα έδειξες οτι δεν είχες ασχοληθεί σχεδόν καθόλου και δεν είναι δυνατόν να τα κατανοήσεις όλα μέσα σε μια βραδιά. Με την παπαγαλία δεν βγαίνει τίποτα. Ξεκίνα ξανά ωστε να κατανοήσεις τα βασικά. Απλά θα λιώσεις λίγο.
Η γλώσσα C και γενικά οι γλώσσες προγραμματισμού θέλουν μελέτη και διαίσθηση που αποκτάται με την ενασχόληση, όχι την παπαγαλία.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Chara3
Νεοφερμένο μέλος


να γραφεί πρόγραμμα που θα διαβάζει έναν ακέραιο n και δύο χαρακτήρες a και b από το χρήστη.στη συνέχεια να τυπώνει n γραμμές στην οθόνη σύμφωνα με τα παρακάτω:
στην πρώτη γραμμή να τυπώνει μόνο τον χαρακτήρα a.στη δεύτερη γραμμή να τυπώνει πρώτα το χαρακτήρα b και μετά τον χαρακτήρα a.στην τρίτη γραμμή να τυπώνει πρώτα τον χαρακτήρα a μετά τον χαρακτήρα b και μετά τον χαρακτήρα a.κ.ο.κ.........
έδινε και το ακόλουθο παράδειγμα εκτύπωσης:
δώσε ακέραιο n: 5
δώσε χαρακτήρα a: k
δώσε χαρακτήρα b: m
k
mk
kmk
mkmk
kmkmk
-----------------------------------------
εγώ κόλλησα μέσα στις for.
για την ακρίβεια έκανα την πρώτη for η οποία ανάλογα με τον ακέραιο εκτύπωνε τις ανάλογες γραμμές αλλα μετα στην αλλη μπερδευτηκα με τους μετρητες που ελεγχουν τους αρτιους και μονους για τις γραμμες.
μήπως μπορεί κάποιος να μου το εξηγήσει;
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
akikos
Επιφανές μέλος


1) δημιουργία κώδικα για να εισάγει ο χρήστης από το πληκτρολόγιο ο χρήστη τα a,b τα οποία είναι τύπου char. Δεν υπάρχει καμιά δυσκολία εδώ
2) αντικατάσταση του printf("*") με άλλον κώδικα, έτσι ώστε να τυπώνονται διαδοχικά τα a,b. Δημιούργησε μια μεταβλητή (κατά προτίμηση τύπου boolean) που ανάλογα με την τiμής της θα τυπώνεται ο αντίστοιχος χαρακτήρας. Κάθε φορά που τυπωνεται ένας χαρακτήρας η boolean μεταβλητή θα αλλάζει τιμή έτσι ώστε την επόνη φορά να τυπωθεί ο άλλος χαρακτήρας. Αυτό μπορεί να πραγματοποιηθεί με μια if....else
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος


εγώ κόλλησα μέσα στις for.
για την ακρίβεια έκανα την πρώτη for η οποία ανάλογα με τον ακέραιο εκτύπωνε τις ανάλογες γραμμές αλλα μετα στην αλλη μπερδευτηκα με τους μετρητες που ελεγχουν τους αρτιους και μονους για τις γραμμες.
μήπως μπορεί κάποιος να μου το εξηγήσει;
Αυτό που φαντάζομαι οτι θα σε μπέρδεψε είναι οτι στο loop μέσα συνήθως το ξεκινάμε απο το 0 που είναι ζυγός και όχι απο το 1 που είναι μονός. Δεν είναι απαραίτητο αυτό. Βορεί κάλλιστα τα όρια να ναι 1 και N+1
Πάντως για να αποφύγεις αυτήν την σύγχηση μπορείς να κρατάς μια μεταβλητή σγια κάθε βρόχο (εσωτερικό, εξωτερικό αν και αρκεί μόνο ο εσωτερικός) που να εναλλάσει μεταξύ a και b σε κάθε βήμα.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Chara3
Νεοφερμένο μέλος


-----------------------------------------
δωστε μου ενα παραδειγμα για να το καταλαβω!
-----------------------------------------
/*File:prog-askisi 1oy eksetazomenoy ergasthrioy*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int N,i,j,met=1;
char a,b;
printf("Dwse enan akeraio N:");
scanf("%d",&N);
fflush(stdin);
printf("Dwse xarakthra a:");
scanf("%c",&a);
fflush(stdin);
printf("Dwse xarakthra b:");
scanf("%c",&b);
fflush(stdin);
for(i=1;i<=N;i++)
{
for(j=1;j<=met;j++)
{
printf("%c%c",a,b);
}
met=met+1;
printf("\n");
}
getchar();
getchar();
return 0;
}
-----------------------------------------
το προβλημα στον παραπανω κωδικα ειναι στο τι τυπωνει η δευτερη for!
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
nefi
Πολύ δραστήριο μέλος


η άσκηση που μας έβαλε στο εργαστήριο ήταν η εξής:
να γραφεί πρόγραμμα που θα διαβάζει έναν ακέραιο n και δύο χαρακτήρες a και b από το χρήστη.στη συνέχεια να τυπώνει n γραμμές στην οθόνη σύμφωνα με τα παρακάτω:
στην πρώτη γραμμή να τυπώνει μόνο τον χαρακτήρα a.στη δεύτερη γραμμή να τυπώνει πρώτα το χαρακτήρα b και μετά τον χαρακτήρα a.στην τρίτη γραμμή να τυπώνει πρώτα τον χαρακτήρα a μετά τον χαρακτήρα b και μετά τον χαρακτήρα a.κ.ο.κ.........
έδινε και το ακόλουθο παράδειγμα εκτύπωσης:
δώσε ακέραιο n: 5
δώσε χαρακτήρα a: k
δώσε χαρακτήρα b: m
k
mk
kmk
mkmk
kmkmk
-----------------------------------------
εγώ κόλλησα μέσα στις for.
για την ακρίβεια έκανα την πρώτη for η οποία ανάλογα με τον ακέραιο εκτύπωνε τις ανάλογες γραμμές αλλα μετα στην αλλη μπερδευτηκα με τους μετρητες που ελεγχουν τους αρτιους και μονους για τις γραμμες.
μήπως μπορεί κάποιος να μου το εξηγήσει;

Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
akikos
Επιφανές μέλος


typedef enum {false, true} bool;
bool flag=false;
if (flag==false)
{ printf("%c",a); flag=true;}
else
{ printf("%c",b); flag=false;}
δωσε το Ν= 10
δωσε το a= a
δωσε το b= b
a
ba
bab
abab
ababa
bababa
bababab
abababab
ababababa
bababababa
hint: Oi ζυγές (ι%2==0) γραμμές ξεκινούν με a και οι μονές (ι/2 !=0) με b
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Chara3
Νεοφερμένο μέλος


Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
nefi
Πολύ δραστήριο μέλος


nefi εσας τι ασκηση σας εβαλε;πληροφορικη στο απθ δεν εισαι;
ναι ποια εισαι?


διαβαζες θερμοκρασιες κ εμφανιζες αναλογα αν εχει κρυο ζεστη η παγετο κ επρεπε καθε φορα να βγαζει ενα μηνυμα αν θελει να συνεχισει ο χρηστης και πατωντας ναι να ζητουσε ξανα θερμοκρασια ενω αν πατουσε οχι να τερματιζε
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος


πχ, μέσα στο βρόχο προσθέτεις.
for(...) // Εξωτερικός - Ακριβώς όπως και τα αστεράκια.
for(...) // Εσωτερικός - Το ίδιο.
if (var == 0) c = 'a';
else c = 'b';
var = !var;
print("%c", c);
printf("\n");
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος


Δεν χρειάζεται boolean μεταβλητή. Μπορείς με μια integer που εναλλάσεται μεταξυ 0 και 1 έστω η var.
πχ, μέσα στο βρόχο προσθέτεις.
Code:for(...) // Εξωτερικός - Ακριβώς όπως και τα αστεράκια. for(...) // Εσωτερικός - Το ίδιο. if (!var) c = 'a'; else c = 'b'; var = !var; print("%c", c); printf("n");
Εννοείται οτι την αρχικοποιείς κατάλληλα (με 1 ή 0)
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Chara3
Νεοφερμένο μέλος


-----------------------------------------
/*File:prog-askisi 1oy eksetazomenoy ergasthrioy*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int N,i,j,met=1;
char a,b,c,var=0;
printf("Dwse enan akeraio N:");
scanf("%d",&N);
fflush(stdin);
printf("Dwse xarakthra a:");
scanf("%c",&a);
fflush(stdin);
printf("Dwse xarakthra b:");
scanf("%c",&b);
fflush(stdin);
for(i=1;i<=N;i++)
{
for(j=1;j<=met;j++)
{
if(!var)c=a;
else c=b;
var=!var;\
printf("%c",c);
}
met=met+1;
printf("\n");
}
getchar();
getchar();
return 0;
}
-----------------------------------------
thanks eruyomo. βεβαια ειναι c=a και c=b και οχι c='a' c='b' για να παιρνει η μεταβλητη τις τιμες α και β που δινει ο χρηστης!αλλα υπαρχει και ενα ακομη προβληματακι στον παραπανω κωδικα:τρεχει ετσι:
δωσε Ν: 4
δωσε α: ο
δωσε β: μ
ο
μο
μομ
ομομ
ενω εμεις θελουμε να τρεχει ετσι:
ο
μο
ομο
μομο
αυτο γιατι γινεται????εξηγησε το μου αν θελεις για να καταλαβω τον κωδικα!
-----------------------------------------
καταλαβα γιατι γινεται αυτο.γιατι καθε φορα που η var τυπωνει α αλλαζει τιμη και μετα τυπωνει β με αποτελεσμα οταν π.χ στο τελος της δευτερης γραμμης τυπωθει α στην αρχη της τριτης γραμμης τυπωνεται πρωτα β!το θεμα ειναι πως θα το διορθωσω αυτο γιατι ειναι το ιδιο προβλημα και με τον τροπο που μου ειπε ο akikos με την boolean!
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος


καταλαβα γιατι γινεται αυτο.γιατι καθε φορα που η var τυπωνει α αλλαζει τιμη και μετα τυπωνει β με αποτελεσμα οταν π.χ στο τελος της δευτερης γραμμης τυπωθει α στην αρχη της τριτης γραμμης τυπωνεται πρωτα β!το θεμα ειναι πως θα το διορθωσω αυτο γιατι ειναι το ιδιο προβλημα και με τον τροπο που μου ειπε ο akikos με την boolean!
Δοκίμασε να κρατάς άλλη μια μεταβλητή που θα εναλλάσεται το ίδιο στον εξωτερικό βρόχο. Η αρχική τιμή της var θα ναι η τιμή της μεταβλητής αυτής.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
akikos
Επιφανές μέλος


καταλαβα γιατι γινεται αυτο.γιατι καθε φορα που η var τυπωνει α αλλαζει τιμη και μετα τυπωνει β με αποτελεσμα οταν π.χ στο τελος της δευτερης γραμμης τυπωθει α στην αρχη της τριτης γραμμης τυπωνεται πρωτα β!το θεμα ειναι πως θα το διορθωσω αυτο γιατι ειναι το ιδιο προβλημα και με τον τροπο που μου ειπε ο akikos με την boolean!
Με το παραπάνω κώδικα η άσκηση λύνεται προσθέτoντας ακόμα μια γραμμή και συγκεκριμμένα ένα if... else... και δεν είναι απαραίτητο να δημιουργήσεις καινούρια μεταβλητή
for(i=1;i<=N;i++)
{ // σημείο 1
// ακριβώς εδώ
for(j=1;j<=met;j++)
...
....
Σημείωση: Αρχικoποιώντας την var έχεις var==0, όταν θέτεις var!= var τότε var== 1.
Σκέψου το λίγο και στη συνέχεία αν δεν το βρεις θα ποστάρω την γραμμή που λείπει. Αν η άσκηση έχει προθεσμία μέχρι αύριο πεσ το, μην χάσεις τσάμπα μόρια
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Chara3
Νεοφερμένο μέλος


1. εμφανιζει τον αρχικο πινακα εκτυπωμενο ανα γραμμες.
2. αθροιζει τα στοιχεια της πρωτης και δευτερης στηλης στα αντιστοιχα στοιχεια της τριτης.
3. αυξανει τα στοιχεια της πρωτης στηλης κατα ενα.
4. εμφανιζει τον τελικο πινακα εκτυπωμενο ανα γραμμες.
-----------------------------------------
δυσκολευομαι στο να αντικαταστησω τα στοιχεια της τριτης στηλης με τα αθροισματα και να εφανισω τον τελικο πινακα. εχω κανει αυτα αλλα μονο το πρωτο ερωτημα ειναι σωστο.
#include<stdio.h>
void add(int a[3],int b[3],int c[3])
{
int i;
for(i=0;i<3;i++)
c[i]=a[i]+b[i];
}
int main(void)
{
int pinakas[3][4];
int i=0;
int j=0;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("Dwse to stoixeio pinakas[%d][%d]:",i,j);
scanf("%d",& pinakas[i][j]);
}
}
printf("O pinakas einai:n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%dt",pinakas[i][j]);
}
printf("n");
}
int c[3];
int a[3]={pinakas[0][0],pinakas[1][0],pinakas[2][0]};
int b[3]={pinakas[0][1],pinakas[1][1],pinakas[2][1]};
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(j==2)
{
add(a,b,c);
for(i=0;i<3;i++)
{
printf("%dn",c[i]);
}
}
else printf("%dn%dn%dn",pinakas[i][j]);
}
printf("n");
}
system("pause");
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Zed
Διάσημο μέλος


Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Chara3
Νεοφερμένο μέλος


Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Zed
Διάσημο μέλος


Πόσταρε τον κώδικα που έχεις γράψει μέχρι στιγμής.
Ωραία, τώρα ας ξεκινήσουμε από τα βασικά. Στοίχιση ώστε το πρόγραμμα να είναι ευανάγνωστο.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Chara3
Νεοφερμένο μέλος


Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Zed
Διάσημο μέλος


Δουλεύει κανονικά και απλά δεν κατανοείς τι κάνει? Σε ποιο σημείο κολλάς?
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Χρήστες Βρείτε παρόμοια
-
Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:Tα παρακάτω 2 μέλη διάβασαν αυτό το θέμα:
-
Φορτώνει...
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.