Page 1 of 1

Πως θα φτιάξουμε ενα Τετράγωνο με αστερίσκους στηνγλώσσα C ?

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

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 :oops: για όποιον μελλοντικά τυχόν ενδιαφερόμενο :

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;
}