Page 1 of 1
Πως θα φτιάξουμε ενα Τετράγωνο με αστερίσκους στηνγλώσσα C ?
Posted: Thu Oct 26, 2006 9:57 am
by ARCHON
Θα ήθελα κάποιους να μου εξηγήσει πως μπορούμε να φτιάξουμε ένα
τετράγωνο με αστερίσκους στην
γλώσσα C , όχι όμως με τον τρόπου του να γράφουμε printf * κτλ αλλά με τη χρήση κάποιων κύκλων for π.χ .
Σε κάθε περίπτωση περιμένω τη βοήθεια σας !!

Posted: Thu Oct 26, 2006 10:11 am
by Tomahawk
Πως σου ακουγεται αυτο:
1) Φτιαξε το string με x stars
2) Print it x times
?
Btw πως γινεται να κανεις printf χωρις printf αλλα με for?
Posted: Thu Oct 26, 2006 10:30 am
by Sreak
Φαντάζομαι εννοεί πως δεν θέλει στατικά να τυπώσει ένα τετράγωνο (X*X πίνακα) αλλά να χρησιμοποιήσει for.
Code: Select all
for (i=0;i<9;i++){
for (j=0;i<9;i++){
printf * ;
}
printf "allagi grammis";
}
To παραπάνω θα σου
γεμίσει έναν τετράγωνο πίνακα με αστεράκια. Αν θέλεις να κρατήσεις μόνο το τετράγωνο (δηλαδή το το "περίγραμμα" του πίνακα) κάνε το παρακάτω:
Code: Select all
for (i=0;i<9;i++){
for (j=0;i<9;i++){
if(i==0 || i==8 || j==0 || j==8){
printf * ;
}
else printf " ";
}
printf "allagi grammis";
}
To παραπάνω θα σου τυπώσει έναν πίνακα 9Χ9, αν θέλεις κάτι άλλο το παραμετροποιείς.
Για c δεν ξέρω αν θα παίζει

αλλά αλγοριθμικά αν κατάλαβα τι θέλεις κάπως έτσι γίνεται.[/quote]
Posted: Thu Oct 26, 2006 10:36 am
by Tomahawk
Kαι ο algo που εδωσα δεν ειναι στατικος.Το x ειναι param.
Posted: Thu Oct 26, 2006 12:02 pm
by ARCHON
Γράφω το ακόλουθο αλλά μοθ εμφανίζει μόνο μια οριζόντια γραμμη με 9 * ! Γιατί ? Τι είναι λάθος>??
Code: Select all
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, j;
for (i=0; i<9; i++){
for (j=0; i<9; i++){
printf ("*\n") ;
}
printf ("");
}
system("PAUSE");
return 0;
}
Posted: Thu Oct 26, 2006 12:12 pm
by nap
1) Στο δεύτερο for χρησιμοποιείς πάλι το i αντί για j.
2) Δεν χρειάζεται αλλαγή γραμμής μετά από κάθε αστερίσκο, αλλά μετά από κάθε 9 αστερίσκους.
Posted: Thu Oct 26, 2006 12:16 pm
by AmmarkoV
nap++
for (i=0; i<9; i++){
for (j=0; i<9; i++){
for (i=0; i<9; i++){
for (j=0; j<9; j++){
θύμα του Copy Paste..

[/quote]
Posted: Thu Oct 26, 2006 12:17 pm
by ARCHON
nap,
έκανα τις αλλαγές που μου είπες
όμως μου εμφανίζει ένα ατελείωτο γέμισμα με ατελείωτα * που δεν έχουν τελειωμό, είσαι σίγουρος πως είναι σωστό αυτό που είπες το δοκίμασες ?
Εδώ όπως το δοκίμασα υπό τις οδηγίες σου :
Code: Select all
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, j;
for (i=0; i<9; i++){
for (j=0; j<9; j++){
printf ("*") ;
}
printf ("");
}
system("PAUSE");
return 0;
}
Posted: Thu Oct 26, 2006 12:18 pm
by AmmarkoV
for (j=0; j<9; i++){
Είναι infinite loop
for (j=0; j<9; J ++){
Posted: Thu Oct 26, 2006 12:19 pm
by ARCHON
οπότε θέλει και το \n
Code: Select all
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, j;
for (i=0; i<9; i++){
for (j=0; j<9; j++){
printf ("*") ;
}
printf ("\n");
}
system("PAUSE");
return 0;
}
Ok works
thanks so much σ'όλους που συνέβαλαν

Posted: Thu Oct 26, 2006 12:22 pm
by nap
Ναι, θέλει και το "\n" ακριβώς εκεί που το έβαλες τώρα, όχι εκεί που το είχες την προηγούμενη φορά...
Posted: Thu Oct 26, 2006 12:49 pm
by ARCHON
Παραθέτω και τη δεύτερη λύση (εσωτερικά κενό τετράγωνο) που ειπώθηκε παραπάνω implemented for C

για όποιον μελλοντικά τυχόν ενδιαφερόμενο :
Code: Select all
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, j;
for (i=0;i<9;i++){
for (j=0;j<9;j++){
if(i==0 || i==8 || j==0 || j==8){
printf ("*") ;
}
else printf (" ");
}
printf ("\n");
}
system("PAUSE");
return 0;
}