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

Ερωτήσεις για C


capoelo

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

@imithee ευχαριστω για την μακροσκελη εξηγηση !

 

Κοιτα ισως δεν το διατυπωσα και εγω καλα εξαρχης.

 

Αλλα εφοσον ο αλλαγης γραμμης ειναι ισοδυναμος με τον κενο....

 

δεν θα επρεπε και οταν δινω πχ το ΕΝΤΕΡ να μην βγαινει απο το loop?

 

Επειδη στo format string της scanf αυτο γινοταν... δηλαδη απο την στιγμη που ειχες αφησει ενα κενο

μεσα στο format string της μπορουσες να δωσεις οσα εντερ ηθελες.

 

Το ρωταω επειδη θελω να φτιαξω ενα while οπως το παραπανω που να αγνοει και τους κενους και τους αλλαγης γραμμης για να δω καποιες ασκησεις που θελω μετα με πινακες και χαρακτηρες ;)

 

p.s Δεν εχω καμια σχεση με διπλωματικες !!! Ενα πτυχιο πηρα και αυτο ειναι αρκετο !!!!!!! Προς το παρον

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 1,6k
  • Δημ.
  • Τελ. απάντηση

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

Αλλα εφοσον ο αλλαγης γραμμης ειναι ισοδυναμος με τον κενο....

Δεν το κατάλαβα αυτό. Γιατί ο '\n' είναι ισοδύναμος με τον ' ' ?

 

δεν θα επρεπε και οταν δινω πχ το ΕΝΤΕΡ να μην βγαινει απο το loop?

Αν όπου "loop" εννοείς το while, τότε όχι. Το while έχει ένα ερωτηματικό οπότε το σώμα του είναι κενό. Όσο η getchar επιστρέφει space ' ', τόσο εκτελείται το while δηλαδή καλείται ο επόμενος χαρακτήρας. Για να αγνοεί και το newline θα έπρεπε να το έχεις και αυτό ως συνθήκη (μια χαζή υλοποίηση θα μπορούσε να ήταν "while ((ch = getchar()) == ' ' || ch == '\n')" ).

 

Επειδη στo format string της scanf αυτο γινοταν... δηλαδη απο την στιγμη που ειχες αφησει ενα κενο

μεσα στο format string της μπορουσες να δωσεις οσα εντερ ηθελες.

 

Ναι γιατί η σύνταξη της scanf λέει ότι βάζοντας το κενό αγνοείς όλες τις εμφανίσεις των "white-space" χαρακτήρων οπότε εκτός από το κενό αυτό καθεαυτό, αγνοείς και το tab και το newline.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν καταλαβα καλα, δες κατι τετοιο

>int main(int argc, char *argv[])
{
char buf[1024] ;
char *it;
scanf("%[^\x1a]",buf);
for(it = buf; *it != 0; ++it)
{
	switch(*it)
	{
	case '\n':
	case '\t':
	case ' ':
	case '\r':
		break;
	default:
		putchar(*it);
	}
}


   return 0;
}

 

1a ειναι το ctrl+z

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν το κατάλαβα αυτό. Γιατί ο '\n' είναι ισοδύναμος με τον ' ' ?

 

 

Αν όπου "loop" εννοείς το while, τότε όχι. Το while έχει ένα ερωτηματικό οπότε το σώμα του είναι κενό. Όσο η getchar επιστρέφει space ' ', τόσο εκτελείται το while δηλαδή καλείται ο επόμενος χαρακτήρας. Για να αγνοεί και το newline θα έπρεπε να το έχεις και αυτό ως συνθήκη (μια χαζή υλοποίηση θα μπορούσε να ήταν "while ((ch = getchar()) == ' ' || ch == '\n')" ).

 

 

 

Ναι γιατί η σύνταξη της scanf λέει ότι βάζοντας το κενό αγνοείς όλες τις εμφανίσεις των "white-space" χαρακτήρων οπότε εκτός από το κενό αυτό καθεαυτό, αγνοείς και το tab και το newline.

 

Για το loop δεν διαφωνουμε καπου. Οσο η συνθηκη του ισχυει συνεχιζει να τρεχει χωρις να κανει τιποτα

αγνοει δηλαδη οκ.

 

Λοιπον.... ξανακοιταξα τα κητάπια μου και σε συνδυασμο με αυτα που μου εγραψες κατεληξα στο εξης :

 

Καταρχην ενας χαρακτηρας αλλαγης γραμμης ειναι ενας απο αυτους που κατηγοριοποιουνται σαν whitespace character ενω το αντιστροφο δεν ισχυει φυσικα. Για αυτο και το κενο μεσα στο format string της scanf θα αγνοησει και το ΕΝΤΕΡ . Αυτο πουεγραψα οτι ειναι ισοδυναμοι ειναι χαζομαρα γιατι και τα ASCII codes τους αν κοιταξεις ειναι διαφορετικα... ο μεν new line έχει 10 ο δε Space εχει 32.

 

Η getchar σαν την scanf ΔΕΝ αγνοει τους space characters (φυσικα εξαιρεση αποτελει αυτο που εγραψα πιο πριν) επομενως εφοσον δεν υπαρχει καποιο format string εκει να κανουμε παρομοιο κολπο και δεδομενου οτι ο δεν υπαρχει ισοδυναμια μεταξυ '\n' και ' ' υπάρχει το προβλημα που αντιμετωπισα πιο πανω.

 

Οκ? ή να το δωσω απο το παράθυρο? :D

 

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η getchar() δεν αγνοεί τίποτα, ότι της δώσεις στην κύρια είσοδο στο επιστρέφει ατόφιο (αλλιώς τι σόι "διάβασε χαρακτήρα" συνάρτηση θα ήταν).

 

Το πρόβλημα ποιο είναι; Δεν έχω καταλάβει!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η getchar() δεν αγνοεί τίποτα, ότι της δώσεις στην κύρια είσοδο στο επιστρέφει ατόφιο (αλλιώς τι σόι "διάβασε χαρακτήρα" συνάρτηση θα ήταν).

 

Το πρόβλημα ποιο είναι; Δεν έχω καταλάβει!

 

Αφου με ξερεις. Τι ρωτας? :D

 

Προεκυψε πιο πανω ενα θεματακι....

και υπεπεσα σε λουμπα επειδη νομιζα οτι επειδη κατηγοριοποιουνται

ειναι και ισοδυναμοι σαν να λεμε οτι το 2 ειναι ισοδυναμο με 4 επειδη θα ανηκουν

στο συνολο των θετικων αρτιων ακεραιων πχ ...

 

p.s Δεν ειπαμε οτι αγνοει κατι η getchar εκτος και αν την αναγκασεις εσυ να το κανει. Σε αντιδιαστολη με την scanf την ειδα επειδη κατι ειχα παρανοησει εκει ;)

 

p.s2 Ωραιο αυτο που εδωσες ρε συ imithee για το skip των whitespace γιατι χαζη υλοποιηση?

 

 

>

/* Αναγνωση ενος χαρακτήρα απο το stdin 
* Αγνοώντας τoυς whitespace characters 
* */
#include<stdio.h>

int main(void)

{
char ch;


for(;
{
	printf(" Give a char: ");
	while((ch=getchar()) == ' ' || (ch=='\n'))
	;
	
	if( ch == 'q')
	break;
	else
	printf(" You gave : %c " , ch);
	
}


return 0;
}

 

Έφυγα. Τα λεμε τυπόνια.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ρωτάω γιατί δεν έχω καταλάβει που και ποιο είναι το πρόβλημα.

 

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

και επεσα πανω σε μια παρανοηση. Αυτο τιποτα αλλο!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για όποιον έχει το βιβλιο του King και ασχολειται και απο εκει. Έλυσα την 7 Σελ.179

 

 

 

>
/* Yπολογισμος αθροίσματος γραμμής και στήλης
* ενος πίνακα 5 x 5 
* */

#include<stdio.h>
#define len 5

int main(void)
{
int array[len][len]={{0}};
int i,j=0 ,sum;

for(i=0; i<len; i++)
{
	printf("\nEnter row %d : " , i+1);
	for(j=0; j<len; j++)
	{
	scanf("%d" , &array[i][j]);
}
}
	
printf("\n Row totals: ");
for(i=0; i<len; i++)
{
	sum= 0;
	
	for(j=0; j<len; j++)
	{
		sum += array[i][j];	
	}
	printf("%3d" , sum );
	
}

printf("\n Column totals: ");
for(j=0; j<len; j++)
{
	sum=0;
	 
	for(i=0; i<len; i++)
	{
		sum += array[i][j];
	}
	printf("%3d" , sum);
}
	
return 0;
}

 

 

 

Καμια ιδεα για την 14 στην σελ.180? μακαρι να ειχε καμια λυση να δω επειδη θα παιδεψει λιγο εχω την εντυπωση :/

btw καλημέρα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...

Καμια ιδεα για την 14 στην σελ.180? μακαρι να ειχε καμια λυση να δω επειδη θα παιδεψει λιγο εχω την εντυπωση :/

Αφού σου εξηγεί λεπτομερώς πως να το κάνεις, στο Hint, ακριβώς κάτω από την εκφώνηση (καλύτερα που δεν έχει λύσεις σε όλες τις ασκήσεις)..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αφού σου εξηγεί λεπτομερώς πως να το κάνεις, στο Hint, ακριβώς κάτω από την εκφώνηση (καλύτερα που δεν έχει λύσεις σε όλες τις ασκήσεις)..

 

Σωστα. Διοτι αν καποιος κολλησει

μπορει να έχει και τα νύχια του διαθεσιμα... :D

 

Αμα καποιος μπορει να λυσει τις ασκησεις που εχει το βιβλιο

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

διοτι δεν εχει να του μαθει τιποτε παραπανω απο αυτα που ηδη γνωριζει.

Αυτη ειναι η γνωμη μου. Για ολους τους υπολοιπους ομως... που δεν ειναι στο λεβελ του πρωτου

το να μην υπαρχουν λυσεις αποτελει σοβαρη παραλειψη.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Star_light

 

Sorry κιόλας, αλλά σπας μπάλες.

 

 

Και άλλοι πρωτοείδανε C αλλά δεν κάνανε έτσι... και άλλοι βρήκανε βιβλία για C αλλά πάλι δεν κάνανε έτσι.

 

 

Και στο finale, το thread είναι "Ερωτήσεις για C" και όχι "Ελάτε να λύσουμε ασκήσεις από βιβλία" ή "Ελάτε να γίνουμε φίλοι με τον star_light μιλώντας για ασκήσεις από ένα βιβλίο για C".

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Star_light

 

Sorry κιόλας, αλλά σπας μπάλες.

 

 

Και άλλοι πρωτοείδανε C αλλά δεν κάνανε έτσι... και άλλοι βρήκανε βιβλία για C αλλά πάλι δεν κάνανε έτσι.

 

 

Και στο finale, το thread είναι "Ερωτήσεις για C" και όχι "Ελάτε να λύσουμε ασκήσεις από βιβλία" ή "Ελάτε να γίνουμε φίλοι με τον star_light μιλώντας για ασκήσεις από ένα βιβλίο για C".

 

Ναι λεβέντη μου. εχεις δικιο :D

 

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

απανταμε σε θρεντ ή ατομακια που δεν γουσταρουμε... σε αφηνω και καποια

στιγμη θα σου ερθει μονο του.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σωστα. Διοτι αν καποιος κολλησει

μπορει να έχει και τα νύχια του διαθεσιμα... :D

Αυτό εδώ...

post-38307-0-24292000-1334780831_thumb.jpg

χρειάζεται διαθέσιμα νύχια;;;;;;;

 

3 γραμμές η εκφώνηση, 6 το Hint πού μόνο τον κώδικα δεν σου έχει γράψει!

 

Αμα καποιος μπορει να λυσει τις ασκησεις που εχει το βιβλιο

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

διοτι δεν εχει να του μαθει τιποτε παραπανω απο αυτα που ηδη γνωριζει.

Αυτη ειναι η γνωμη μου. Για ολους τους υπολοιπους ομως... που δεν ειναι στο λεβελ του πρωτου

το να μην υπαρχουν λυσεις αποτελει σοβαρη παραλειψη.

Μάλιστα, δηλαδή εμείς που μάθαμε C από το Kerninghan Richie και λύναμε τις ασκήσεις χωρίς λυσάρια χάσαμε το χρόνο μας να υποθέσω.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό εδώ...

post-38307-0-24292000-1334780831_thumb.jpg

χρειάζεται διαθέσιμα νύχια;;;;;;;

 

3 γραμμές η εκφώνηση, 6 το Hint πού μόνο τον κώδικα δεν σου έχει γράψει!

 

 

Μάλιστα, δηλαδή εμείς που μάθαμε C από το Kerninghan Richie και λύναμε τις ασκήσεις χωρίς λυσάρια χάσαμε το χρόνο μας να υποθέσω.

 

 

Εγω μπορει να ειμαι χαζος και να μην μπορω να το λυσω.

Αυτο σημαινει πως το βιβλιο δεν θα επρεπε να διαθετει λυσεις?

 

Εσυ θα σκεφτοσουν μια δικη σου ασκηση σαν καθηγητης και θα την εδινες

στους μαθητες χωρις να την εχεις λυσει πρωτα? ή να έχεις καπου την λυση της

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

αλλους με δικιες του αποριες?(πχ ο Τιμον κουραστηκε ο ανθρωπος)

 

Πως θα μαθει καποιος τελειως αρχαριος προγραμματισμο αμα δεν βλεπει

απο κωδικες αλλων? Τεσπα νταξει εχετε δικιο και παμε παρακατω.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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