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

απορία στη C


saavedra29

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

Δημοσ.

Παιδιά διαβάζω ένα βιβλίο για C και λύνοντας τις ασκήσεις έχω συναντήσει ένα πρόβλημα (σε 2-3) που δε μπορώ να το λύσω.

Θέλω κατά τη διάρκεια εκτέλεσης μίας printf να παρεμβάλω μία άλλη.

Συγγεκριμένα:

πρέπει να γράψω ένα πρόγραμμα που να διαβάζει την πλευρά ενώς τετραγώνου και να το προβάλει με αστερίσκους.Θα πρέπει να λειτουργεί για πλευρές από 1 έως 20 αστερίσκους.

Ιδού τί έγραψα:

#include <stdio.h>

 

> int main()
{

	int num , side , c , c1;
	char star;
	

	c = 1;
  c1 = 1;
	

	printf ( "enter side (1-20)\n" );
	scanf ( "%d" , &side );
	while ( c <= side )
	{
		while ( c1 < side )
	
		{	printf ( "*" );
			c1++;	}
	
			printf ( "*\n" );	
			c++;
	}
	

	return 0;
}

 

όταν εισάγω π.χ 6 αντί για τετράγωνο με 6 πλευρές μου βγάζει:

>enter side (1-20)
6
******
*
*
*
*
*

 

Δε μπορώ να συμπεριλάβω τη 1η printf στην 2η. Πώς γίνεται αυτό ρε παιδιά;

Αν λύσω αυτό το πρόβλημα θα με βοηθήσει και σε κάτι άλλες ασκήσεις που χρησιμοποιούν το ίδιο μοτίβο.

ευχαριστώ!

Δημοσ.

Καλησπέρα.

Κοίταξε αυτόν τον κώδικα. Δυστυχώς δεν είμαι στο σπίτι μου ώστε να ελέγξω εαν λύνει το πρόβλημά σου.

 

>
#include <stdio.h>
main ()
{
int c,d, side;
printf ("Eisagete megethos pleyras: ");
scanf ("%d", &side);
for (c=1 ; c==side ; c++)
{
for (d=1 ; d=side ; d++)
{
printf ("*");
}
}
}

 

Ελπίζω να βοήθησα.

Δημοσ.
Παιδιά διαβάζω ένα βιβλίο για C και λύνοντας τις ασκήσεις έχω συναντήσει ένα πρόβλημα (σε 2-3) που δε μπορώ να το λύσω.

Θέλω κατά τη διάρκεια εκτέλεσης μίας printf να παρεμβάλω μία άλλη.

Συγγεκριμένα:

πρέπει να γράψω ένα πρόγραμμα που να διαβάζει την πλευρά ενώς τετραγώνου και να το προβάλει με αστερίσκους.Θα πρέπει να λειτουργεί για πλευρές από 1 έως 20 αστερίσκους.

Ιδού τί έγραψα:

#include <stdio.h>

 

> int main()
{

	int num , side , c , c1;
	char star;
	

	c = 1;
  c1 = 1;
	

	printf ( "enter side (1-20)\n" );
	scanf ( "%d" , &side );
	while ( c <= side )
	{
		while ( c1 < side )
	
		{	printf ( "*" );
			c1++;	}
	
			printf ( "*\n" );	
			c++;
	}
	

	return 0;
}

 

όταν εισάγω π.χ 6 αντί για τετράγωνο με 6 πλευρές μου βγάζει:

>enter side (1-20)
6
******
*
*
*
*
*

 

Δε μπορώ να συμπεριλάβω τη 1η printf στην 2η. Πώς γίνεται αυτό ρε παιδιά;

Αν λύσω αυτό το πρόβλημα θα με βοηθήσει και σε κάτι άλλες ασκήσεις που χρησιμοποιούν το ίδιο μοτίβο.

ευχαριστώ!

 

Μήπως να αρχικοποιούσες το c1; :-)

good luck

Δημοσ.

Αυτό που πρέπει να κάνεις είναι να κάνεις ίσο με 1 το c1 επειδή στο εμφωλευμένο while δεν μπαίνει μέσα στο loop μετά το πρώτη φορά γι αυτό και εκτυπώνει μόνο τη πρώτη σειρά...

 

τι εννοώ....

 

>#include <stdio.h>

int main()
{

	int num , side , c , c1;
	char star;
	

	c = 1;
  c1 = 1;
	

	printf ( "enter side (1-20)\n" );
	scanf ( "%d" , &side );
	while ( c <= side )
	{
		while ( c1 < side )
	
		{	printf ( "*" );
			c1++;	}
	
			printf ( "*\n" );	
			c++;
                      [color="Red"][b] c1=1;[/b][/color]
	}
	

	return 0;
 }

Δημοσ.

παιδιά τελικά με την προσθήκη του C1=1 όντως λύθηκε το πρόβλημα.

Ήταν λάθος ο τρόπος σκέψης μου να θέλω να οπωσδήποτε να εισάγω τη μία printf στην άλλη.Την αρχικοποίηση ούτε που την είχα σκεφτεί!

King diamond ο κώδικάς σου δεν έδωσε τίποτα, αν και πρόσθεσα

>return 0;

στο τέλος.Αλλά ούτως ή άλλως δεν έχω μάθει ακόμα τη "for" και το πρόγραμμα "έπρεπε" να γίνει με "while".

Παιδιά σας ευχαριστώ όλους για τη βοήθεια!

Αρχειοθετημένο

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

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