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

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

Δημοσ.

Έχω να παραδώσω μια εργασία στήν C. 

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

Τήν άσκηση τήν πηγαίνω κομμάτι-κομμάτι καθώς δέν έχω απόλυτη εμπειρία στην C.

Έχω χρησιμοποιήσει εντολές επανάληψης ( For) 

Δέν ήθελα το κώδικα εννοείται έτοιμο αλλά ένα μέρος της μεθοδολογίας.

Η εκφώνηση είναι η εξής:

 

 

image.png.f1d631c267100c5e1cfc394cbf8b37db.png

ασκηση - εκφωνηση.PNG

Δημοσ.
21 λεπτά πριν, pmav99 είπε

Ο κώδικάς σου που είναι;

#include<stdio.h>
int main (void)
{
	int i,j;
	for(i=0;i<5;i++)
	{
		for(j=0; j<=i; j++)
		printf("*");
		printf("\n");
	}
return 0;
}
  

Έχω σκεφτεί ένα μέρος για το πώς θα αρχίσω και για αυτό ψάχνω και στο βιβλίο για παράδειγμα

Σίγουρα θα χρειαστεί for , αλλά μάλλον και την εντολή if για το ενδεχόμενο εάν τεθεί τιμή εκτός ορίων.

Δημοσ. (επεξεργασμένο)

Ωραία ασκησούλα. Όπως το σκέφτομαι αρχικά θέλεις δύο λούπες μία για το πλάτος και μία για το ύψος, η μία θα είναι μέσα στην άλλη και στην εσωτερική λούπα με if θα κάνεις ότι κάνεις.

Στα for εννοείται θα έχεις αυτά που έχει δώσει ο χρήστης, αυτό ζητάει μεταξύ άλλων η άσκηση. Το δεύτερο for είναι λάθος. Μέσα στο δεύτερο for θα κάνεις τις εκτυπώσεις.

24 λεπτά πριν, meletis_m είπε

#include<stdio.h>
int main (void)
{
	int i,j;
	for(i=0;i<5;i++)
	{
		for(j=0; j<=i; j++)
		printf("*");
		printf("\n");
	}
return 0;
}
  

Έχω σκεφτεί ένα μέρος για το πώς θα αρχίσω και για αυτό ψάχνω και στο βιβλίο για παράδειγμα

Σίγουρα θα χρειαστεί for , αλλά μάλλον και την εντολή if για το ενδεχόμενο εάν τεθεί τιμή εκτός ορίων.

πχ για i<length και μετά μέσα στο for με δεύτερο for για j<height. Μετά με if αναλόγως που βρίσκεσαι θα εκτυπώνεις ότι θέλεις.

Επεξ/σία από antbyron
Δημοσ.

Κάθισα και το έκανα για το 23 x 5 σχήμα στο παραδειγμα

for(int i = 0; i < 5; i++)
{
    for(int j = 0; j < 23; j++)
    {
        if(i == 0)
            Console.Write("*");
        else if(i == 1 || i == 2)
        {
            if(j < 3)
                Console.Write("*");
            else if(j == 22)
                Console.Write("|");
            else
                Console.Write("_");
        }
        else if(i == 3)
        {
            if(j == 9 || j == 10 || j == 20 || j == 21)
                Console.Write("_");
            else
                Console.Write("*");
        }

        else if(i == 4)
        {
            if(j == 4 || j == 17)
                Console.Write("(");
            else if(j == 5 || j == 18)
                Console.Write(")");
            else if(j == 9 || j == 10 || j == 20 || j == 21)
                Console.Write("_");
            else
                Console.Write("*");
        }
        else Console.Write(" ");
    }
    Console.WriteLine();
}

Εσυ πρεπει να αντικαταστησεις τα νούμερα στον κώδικα (1, 2, 4, 5, 9,20 κλπ) με τις υπολογισμενες μεταβλητες σε σχεση με τα L και W.

 

 

  • Like 2
Δημοσ. (επεξεργασμένο)

Δεν έχεις κάνει τίποτα από αυτά που σου λέει η άσκηση πού είναι το L που είναι το Η πού είναι το μήκος της πόρτας το πλάτος το υλικό (lamarina giali porta roda). Τι περιμένεις να ζωγραφιστεί μόνο του. Έκανες google draw a bus with C 😡 σίγουρα πάντως.

 

Επεξ/σία από k33theod
Δημοσ.

Ο τρόπος που σου πρότεινε ο albNik είναι ο πιο εύκολος. Υλοποιείς το παράδειγμα που σου δίνει ώστε να μπορείς να δεις πώς πρέπει να βγει. Είδες ότι ο albNik το έγραψε με απλά νούμερα. Αφού το κάνεις να βγάζει το ίδιο σχήμα με αυτό που βλέπεις, το επόμενο βήμα είναι να μετατρέψεις τα νούμερα σε σχέση με τα 5 και 23.  Για παράδειγμα το j == 17 που έγραψε ο albNik πώς μπορεί να γραφτεί σε σχέση με το 23; Άλλαξε τα όλα ώστε να είναι γραμμένα με τέτοιες σχέσεις. Από εκεί και πέρα όπου βλέπεις τα 23 και 5 θα τα αλλάξεις με L και H.

Επίσης, αν έχετε μάθει πίνακες, μπορείς να ευκολύνεις τον εαυτό σου και άλλο. Αντί να τα εμφανίσεις κατευθείαν στην οθόνη όπως κάνει ο albNik οπότε να πρέπει να τηρήσεις μια σειρά, μπορείς να γράψεις όλες τις "τιμές" στον πίνακα με όποια σειρά τις σκέφτεσαι και στο τέλος εμφανίζεις όλο τον πίνακα με την μία.

Δημοσ.
1 λεπτό πριν, imitheos είπε

Ο τρόπος που σου πρότεινε ο albNik είναι ο πιο εύκολος. Υλοποιείς το παράδειγμα που σου δίνει ώστε να μπορείς να δεις πώς πρέπει να βγει. Είδες ότι ο albNik το έγραψε με απλά νούμερα. Αφού το κάνεις να βγάζει το ίδιο σχήμα με αυτό που βλέπεις, το επόμενο βήμα είναι να μετατρέψεις τα νούμερα σε σχέση με τα 5 και 23.  Για παράδειγμα το j == 17 που έγραψε ο albNik πώς μπορεί να γραφτεί σε σχέση με το 23; Άλλαξε τα όλα ώστε να είναι γραμμένα με τέτοιες σχέσεις. Από εκεί και πέρα όπου βλέπεις τα 23 και 5 θα τα αλλάξεις με L και H.

Επίσης, αν έχετε μάθει πίνακες, μπορείς να ευκολύνεις τον εαυτό σου και άλλο. Αντί να τα εμφανίσεις κατευθείαν στην οθόνη όπως κάνει ο albNik οπότε να πρέπει να τηρήσεις μια σειρά, μπορείς να γράψεις όλες τις "τιμές" στον πίνακα με όποια σειρά τις σκέφτεσαι και στο τέλος εμφανίζεις όλο τον πίνακα με την μία.

Πίνακες δέν έχουμε κάνει ακόμη , αλλά εγώ  το χρωστάω από πέρσι το συγκεκριμένο μάθημα. 

Θα το δώ για να καταλάβω πώς λειτουργεί γιατί θα χρειαστεί και να το εξηγήσω.

Γιατί η άσκηση έχει και 2ο ερώτημα με τη κατασκευή 1 αμαξοστοιχίας που έχει παραμέτρους (πλήθος.βαγονιών , ύψος βαγονιού , μήκος βαγονιού αλλά και μήκος συνδέσμου ένωσης 

 

 

Δημοσ.

Δεν έχω φτιάξει ποτέ σχήματα με C, όμως αν το έβλεπα ως άσκηση θα ξεκινούσα ως εξής:

-Αρχικά το εύκολο κομμάτι που είναι η είσοδος. Η είσοδος πρέπει να δίνεται με τις παραμέτρους ( τα argc και τα argv που έχει στην main ... θυμάσαι; ) κάπως έτσι για παράδειγμα απ το terminal ή το cmd:

printbus -L 13 -H 12

-Τώρα θα προσπαθήσω να τα δω όλα ως αντικείμενα και να προσδιορίσω τις θέσεις τους. Τα γράφει λίγο ανακατεμένα, αλλά προσπάθησε να περιορίσεις τις πληροφορίες για το κάθε αντικείμενο (πόρτα, ρόδα, μπαμπρίζ, παράθυρα, οροφοφή κτλ κτλ )

  • Ρόδες: Η πίσω θα είναι στην θέση 4 ενώ η μπροστινή στην L-4
  • Μπαπρίζ: Θα έχει ύψος H-3. Βλέποντας το σχήμα θα έλεγα ότι αυτό το 3 κρύβει τα εξής. Το πάνω-πάνω μέρος θα γίνει οροφή, ενώ τα δύο τελευταία θα αποτελούν τις ρόδες και τις πόρτες. Τα υπόλοιπα στην μέση θα είναι Μπαπριζ και παράθυρα
  • Παράθυρα: Βάση του παραπάνω σε όποια γραμμή εκτυπώνουμε παπρίζ, εκτυπώνουμε και παράθυρα. Επίσης ξεκάθαρα αναγράφει ότι στο πίσω μέρος κάθε γραμμής που θα έχει παράθυρα θα έχει 3 αστέρια ( '* ') και στην μπροστινή μεριά ένα μπαμπρίζ. Ενδιάμεσα απ τα αστέρια και την κάθετο ( '|' ) του παμπρίζ θα υπάρχουν παύλες ( '-' ) που θα απεικονίζουν τα παράθυρα
  • Πόρτες: Θέλουμε μια μεσαία και μπροστινή πόρτα 2χ2 η κάθε μια, και να μπουν σε "λογική" θέση. Εύκολο θα ήταν να βάλεις την μεσαία στην μέση ακριβώς δηλ L/2-1 ή αλλιώς μπορεί να εκτυπωθεί δύο θέσεις μετά την πίσω ρόδα. Γνωρίζοντας την θέση της ρόδας 4 αλλά και το μήκος της απ το σχήμα 2 μπορούμε να πούμε να πούμε ότι οι ρόδα καλύπτει τα σημεία 4 και 5 της τελευταίας γραμμής . Αν τοποθετήσουμε την πόρτα 2 θέσεις μετά  σημαίνει ότι στην θέση 6 και 7 θα βάλουμε αστέρι κα στην 8,9 την πόρτα. Όσον αφορά την μπροστινή μάλλον πρόκειται περί τυπογραφικού λάθους και έτσι θέλει να πει ότι θα είναι αμέσως πριν το μπαπρίζ στις θέσεις L-1 και L-2

Εδώ βέβαια έχω την εξής απορία. Το ελάχιστο Μήκος και Ύψος θα το δώσεις εσύ; Με το παραπάνω σκεπτικό ένα εμφανίσιμο λεωφορείο δεν πρέπει να έχε μήκος (L) κάτω από 12 και Ύψος (Η)  κάτω από 6. Κάνε μια ερώτηση στον καθηγητή σου αναλύοντας το σκεπτικό μου .... σου ήθελα να πω :P

Όσον αφορά την κατανόηση του παραπάνω σκεπτικού δεν μου φαίνεται περίεργο να σου φανεί βουνό, ειδικά αν δεν έχεις λίγη εμπειρία με την εκτύπωση στο terminal. Για την καλύτερη κατανόηση Φτιάξε μερικούς πίνακες διαφορετικού LxH, είτε στο word, είτε σε χαρτί και ξεκίνα να τοποθετείς τις πόρτες, τις ρόδες κτλ βάση των παραπάνω

Όπως είπα δεν έχω εμπειρία με σχήματα οπότε το σκεπτικό μου μπορεί να σφάλει σε μερικά σημεία. Μην ξεχνάς ότι όλα τα παραπάνω είναι μια ιδέα για το πως θα διάβαζα εγώ μια τέτοια άσκηση. Στην υλοποίηση μπορεί να διαφέρει λίγο. Αν βρω χρόνο θα το υλοποιήσω, και θα σου γράψω και την απάντηση μου εδώ μιας και έχω πολύ καιρό να γράψω C και μάλλον θα έχω σκουριάσει :P .

Δημοσ.
7 λεπτά πριν, manolis940 είπε

Εδώ βέβαια έχω την εξής απορία. Το ελάχιστο Μήκος και Ύψος θα το δώσεις εσύ; Με το παραπάνω σκεπτικό ένα εμφανίσιμο λεωφορείο δεν πρέπει να έχε μήκος (L) κάτω από 12 και Ύψος (Η)  κάτω από 6. Κάνε μια ερώτηση στον καθηγητή σου αναλύοντας το σκεπτικό μου .... σου ήθελα να πω :P

Όχι 6 ύψος γιατί όπως βλέπεις το παράδειγμα έχει ύψος 5 :) Θέλεις 2 γραμμές για τις πόρτες και 1 για την οροφή οπότε το λιγότερο θα είναι ύψος 4 όπου θα έχουμε 1 γραμμή για παρμπρίζ - παράθυρο.

Ομοίως, μήκος θέλεις τουλάχιστον 14. Έχεις 4 + 4 = 8 για την απόσταση των ροδών, από 2 η κάθε ρόδα πάμε στα 12 και 2 για την μεσαία πόρτα πάμε στα 14.

  • Like 1
Δημοσ. (επεξεργασμένο)

Παρακάτω είναι το πρόγραμμα έτοιμο. Η λογική με την οποία το έφτιαξα είναι η εξής:

  1. Εκτυπώνω την οροφή
  2. Εκτυπώνω τα παράθυρα
  3. Εκτυπώνω το κάτω μέρος με τις πόρτες

Όλα τα παραπάνω τα έκανα ξεχωριστές συναρτήσεις. Το έτρεξα στο terminal των Linux αν και νομίζω ότι βιβλιοθήκη έχω καλέσει είναι συμβατή με windows.

$ ./printbus -L 15 -H 6
✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭
✭✭✭-----------❙
✭✭✭-----------❙
✭✭✭-----------❙
✭✭✭✭✭✭✭✭__✭✭__✭
✭✭✭✭❨❩✭✭__❨❩__✭
$ ./printbus -L 19 -H 6
✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭
✭✭✭---------------❙
✭✭✭---------------❙
✭✭✭---------------❙
✭✭✭✭✭✭✭✭__✭✭✭✭✭✭__✭
✭✭✭✭❨❩✭✭__✭✭✭✭❨❩__✭
$ ./printbus -L 35 -H 6
✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭
✭✭✭-------------------------------❙
✭✭✭-------------------------------❙
✭✭✭-------------------------------❙
✭✭✭✭✭✭✭✭__✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭__✭
✭✭✭✭❨❩✭✭__✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭❨❩__✭
$ ./printbus -L 35 -H 3
Warning: H value must be greater or equal to 4
✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭
✭✭✭-------------------------------❙
✭✭✭-------------------------------❙
✭✭✭✭✭✭✭✭__✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭__✭
✭✭✭✭❨❩✭✭__✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭✭❨❩__✭
 
Spoiler

#include <stdio.h>
#include <string.h> //strcmp()
#include <stdlib.h> //atoi()


//FUNCTIONS DECLARATION
void prtRoof(int L);
void printWindows(int H, int L);
void printDoorsWheels(int L);


//DRAW CHARACTERS
//Find more unicode characters at https://www.rapidtables.com/code/text/unicode-characters.html
#define BODYCHAR 	"\u272D"
#define WINDOW 		"-"
#define BAPRIZ 		"\u2759"
#define DOOR 		"_"
#define WHEELSTART 	"\u2768"
#define WHEELEND 	"\u2769"


//MAIN
int main(int argc, char const *argv[])
{
	int L;
	int H;

	//Read Paremeters 
	for (int i = 1; i < argc; ++i)
	{
		if(strcmp(argv[i],"-L") == 0)
		{
			int argvINT = atoi(argv[i+1]);	
			if (argvINT > 14)
			{
				L = argvINT;
				i++;
			}
			else
			{
				printf("Warning: L value must be greater than 14\n");
				L=15;
				i++;
			}	
		}
		else if(strcmp(argv[i],"-H") == 0)
		{
			int argvINT = atoi(argv[i+1]);	
			if (argvINT >= 4)
			{
				H = argvINT;
				i++;
			}
			else
			{
				printf("Warning: H value must be greater or equal to 4\n");
				H =	5;
				i++;
			}
		}
		else
		{
			printf("Paremeter %s is not recognizeable", argv[i]);
			return -1;
		}		
	}



//Print BUS
	prtRoof(L);
	printWindows(H,L);
	printDoorsWheels(L);


//Exit
	printf("\n");
	return 0;
}




//FUNCTIONS DEFINITION
void prtRoof(int L)
{
	for (int i = 0; i < L; ++i)
	{
		printf(BODYCHAR);
	}
}



void printWindows(int H, int L)
{
	for (int i = 0; i < H-3; ++i)
	{
		printf("\n%s%s%s",BODYCHAR,BODYCHAR,BODYCHAR);
		for (int j = 0; j < L-4; ++j)
		{
			printf(WINDOW);
		}
		printf(BAPRIZ);
	}
}



void printDoorsWheels(int L)
{
	//PRINT LINE ABOVE WHEELS
	printf("\n");
	for (int i = 0; i < L; ++i)
	{
		if(i == 8 || i == 9 || i==L-2 || i == L-3)
		{//Front and Rear Door
			printf(DOOR);
		}
		else
		{
			printf(BODYCHAR);
		} 
	}

	//PRINT WHEEL LINES
	printf("\n");
	for (int i = 0; i < L; ++i)
	{
		if(i == 4 || i == L-5)
		{//WHEEL START
			printf(WHEELSTART);
		}
		else if(i == 5 || i == L-4)
		{//WHEEL END
			printf(WHEELEND);
		}
		else if(i == 8 || i == 9 || i==L-2 || i == L-3)
		{//Front and Rear Door
			printf(DOOR);
		}
		else
		{
			printf(BODYCHAR);
		}
	}
}

 

Θα σου έλεγα να μην προσπαθήσεις να το πλασάρεις έτσι αλλά να το δουλέψεις μόνος σου κατανοώντας κάθε γραμμή. Στην περίπτωση που σε ρωτήσει ο καθηγητής σου να ξέρεις να του απαντήσεις. Αν δεν μπορείς στο google να λύσεις τις απορίες σου, εμείς εδώ είμαστε ;)
 

EDIT: Ανέλυσα σύντομα την λογική πίσω απ τον κώδικα

Επεξ/σία από manolis940
Δημοσ.
4 λεπτά πριν, manolis940 είπε

Παρακάτω είναι το πρόγραμμα έτοιμο

  Εμφάνιση κρυμμένου περιεχομένου


#include <stdio.h>
#include <string.h> //strcmp()
#include <stdlib.h> //atoi()


//FUNCTIONS DECLARATION
void prtRoof(int L);
void printWindows(int H, int L);
void printDoorsWheels(int L);


//DRAW CHARACTERS
//Find more unicode characters at https://www.rapidtables.com/code/text/unicode-characters.html
#define BODYCHAR 	"\u272D"
#define WINDOW 		"-"
#define BAPRIZ 		"\u2759"
#define DOOR 		"_"
#define WHEELSTART 	"\u2768"
#define WHEELEND 	"\u2769"


//MAIN
int main(int argc, char const *argv[])
{
	int L;
	int H;

	//Read Paremeters 
	for (int i = 1; i < argc; ++i)
	{
		if(strcmp(argv[i],"-L") == 0)
		{
			int argvINT = atoi(argv[i+1]);	
			if (argvINT > 14)
			{
				L = argvINT;
				i++;
			}
			else
			{
				printf("Warning: L value must be greater than 14\n");
				L=15;
				i++;
			}	
		}
		else if(strcmp(argv[i],"-H") == 0)
		{
			int argvINT = atoi(argv[i+1]);	
			if (argvINT >= 4)
			{
				H = argvINT;
				i++;
			}
			else
			{
				printf("Warning: H value must be greater or equal to 4\n");
				H =	5;
				i++;
			}
		}
		else
		{
			printf("Paremeter %s is not recognizeable", argv[i]);
			return -1;
		}		
	}



//Print BUS
	prtRoof(L);
	printWindows(H,L);
	printDoorsWheels(L);


//Exit
	printf("\n");
	return 0;
}




//FUNCTIONS DEFINITION
void prtRoof(int L)
{
	for (int i = 0; i < L; ++i)
	{
		printf(BODYCHAR);
	}
}



void printWindows(int H, int L)
{
	for (int i = 0; i < H-3; ++i)
	{
		printf("\n%s%s%s",BODYCHAR,BODYCHAR,BODYCHAR);
		for (int j = 0; j < L-4; ++j)
		{
			printf(WINDOW);
		}
		printf(BAPRIZ);
	}
}



void printDoorsWheels(int L)
{
	//PRINT LINE ABOVE WHEELS
	printf("\n");
	for (int i = 0; i < L; ++i)
	{
		if(i == 8 || i == 9 || i==L-2 || i == L-3)
		{//Front and Rear Door
			printf(DOOR);
		}
		else
		{
			printf(BODYCHAR);
		} 
	}

	//PRINT WHEEL LINES
	printf("\n");
	for (int i = 0; i < L; ++i)
	{
		if(i == 4 || i == L-5)
		{//WHEEL START
			printf(WHEELSTART);
		}
		else if(i == 5 || i == L-4)
		{//WHEEL END
			printf(WHEELEND);
		}
		else if(i == 8 || i == 9 || i==L-2 || i == L-3)
		{//Front and Rear Door
			printf(DOOR);
		}
		else
		{
			printf(BODYCHAR);
		}
	}
}

Θα σου έλεγα να μην προσπαθήσεις να το πλασάρεις έτσι αλλά να το δουλέψεις μόνος σου κατανοώντας κάθε γραμμή. Στην περίπτωση που σε ρωτήσει ο καθηγητής σου να ξέρεις να του απαντήσεις. Αν δεν μπορείς στο google να λύσεις τις απορίες σου, εμείς εδώ είμαστε ;)

Δεν είναι λίγο over-engineered; Επίσης, χωρίς βέβαια να ξέρω την ύλη τους, νομίζω πως αφού δεν έχουν διδαχθεί πίνακες, δύσκολα να έμαθαν command line arguments.

Δημοσ.
Μόλις τώρα, imitheos είπε

Δεν είναι λίγο over-engineered; Επίσης, χωρίς βέβαια να ξέρω την ύλη τους, νομίζω πως αφού δεν έχουν διδαχθεί πίνακες, δύσκολα να έμαθαν command line arguments.

Είναι η αλήθεια το πήρα για παιχνίδι :P. Η άσκηση λέει να παίρνει τις παραμέτρους L και H, όχι είσοδο απ το πληκτρολόγιο  🙃 . Εφόσον όμως ξέρουν παραμέτρους φαντάζομαι γνωρίζουν και pointers και τα define κτλ κτλ. Τέλος πάντων μια απλή έκδοση που περιέχει είσοδο από το πληκτρολόγιο, χωρίς define και συναρτήσεις. Τα unicode characters δεν τα βγάζω γιατί φαίνεται άσχημο. Εξάλλου και το παραπάνω σχήμα δεν χρησιμοποιεί * ούτε ( )
 

#include <stdio.h>

/*DRAW CHARACTERS
 * \u Just are unicode characters
 * Find more unicode characters at https://www.rapidtables.com/code/text/unicode-characters.html
*/


int main(int argc, char const *argv[])
{
	int L; 
	int H;
	printf("Type Height: ");
	scanf("%d",&H);
	printf("type Length: ");
	scanf("%d",&L);

//Check Input
	if (L <= 14)
	{		
		printf("Warning: L value must be greater than 14\n");
		L=15;
	}

	if(H <= 4)
	{
		printf("Warning: H value must be greater or equal to 4\n");
		H =	5;
	}


//Print BUS
	//roof
	for (int i = 0; i < L; ++i)
	{
		printf("\u272D");
	}
	//windows
	for (int i = 0; i < H-3; ++i)
	{
		printf("\n\u272D\u272D\u272D");
		for (int j = 0; j < L-4; ++j)
		{
			printf("-");
		}
		printf("\u2759");
	}
	//Doors & Wheels
	printf("\n");
	for (int i = 0; i < L; ++i)
	{
		if(i == 8 || i == 9 || i==L-2 || i == L-3)
		{//Front and Rear Door
			printf("_");
		}
		else
		{
			printf("\u272D");
		} 
	}

	printf("\n");
	for (int i = 0; i < L; ++i)
	{
		if(i == 4 || i == L-5)
		{//WHEEL START
			printf("\u2768");
		}
		else if(i == 5 || i == L-4)
		{//WHEEL END
			printf("\u2769");
		}
		else if(i == 8 || i == 9 || i==L-2 || i == L-3)
		{//Front and Rear Door
			printf("_");
		}
		else
		{
			printf("\u272D");
		}
	}


//Exit
	printf("\n");
	return 0;
}

 

Δημοσ. (επεξεργασμένο)

Και 'γω θεωρώ πως η δεύτερη λύση είναι μια χαρά για το σκοπό της άσκησης (γενική λύση). Και του albnik ήταν ανάλογα καλή για τα συγκεκριμένα inputs.

Να συμπληρώσω/διορθώσω μόνο τα παρακάτω στη δική σου: (γιατί αν δοθεί ύψος 6,7,8 κ.τ.λ τυπώνονται παράθυρα, αντί για "λαμαρίνα")

1. Η δεύτερη for που τυπώνει παράθυρα να αλλάξει σε:

for (int i = 0; i < 2; ++i) ή for (int i = 0; i < 3; ++i)   αναλόγως τι ύψος θέλει να έχουν τα παράθυρα, αν συμπεριλαμβάνεται ή όχι η οροφή.

2. Να προστεθεί ενδιάμεσα από κάτω μια άλλη for που να τυπώνει λαμαρίνα (αστεράκια)

    for (int i = 5; i < H; ++i)      // ή  for (int i = 6; i < H; ++i) αν δε συμπεριλαμβάνεται η οροφή στο ύψος των παραθύρων
    {
        printf("\n");
        for (int j = 0; j < L; ++j)
        {
           printf("*");
        }        
    }

 

 

Επεξ/σία από marios28
Δημοσ.

Δίνω ένα κομμάτι που τυπώνει πίσω μέρος παράθυρα παμπριζ

#include <stdio.h>

void print_bus2(int L, int H);
void print_ntimes(int n, char c);

int main(void)
{
    int L = 20;
    int H =12;
    print_bus2(L,H);
    return 0;
}
void print_ntimes(int n, char c)
{
    for (int i =0;i<n;i++)
        printf("%c", c);
}
      
void print_bus2(int L, int H)
  {
  	  int  ipsos_pubriz_parathiron=H-3;
      char pampriz='|';
      char parthira='_';
      char lamarina = '#';
      int mikos_lamarina_piso=3;
      int mikos_pampriz=1;
      int mikos_parathira=L-4;
  //Εδώ πρέπει να μπουν παρακάτω και όλα τα μήκη που αλλάζουν καθώς και όλα τα υλικά.
  //πχ char roda[] = "{()}" char porta = 'X'
   //Μετά τυπώνεις γραμμή γραμμή 
  //Επειδή το κομμάτι λαμαρινα παραθυρα παμπριζ δεν αλλάζει από γραμμή σε γραμμή το κάνεις έτσι πχ
      for (int i=0;i<ipsos_pubriz_parathiron ; i++)
      {
          print_ntimes(mikos_lamarina_piso,  lamarina); print_ntimes(mikos_parathira,parthira); print_ntimes(mikos_pampriz,pampriz); printf("\n");
      }
}
//και δίνει αυτό 
###________________|
###________________|
###________________|
###________________|
###________________|
###________________|
###________________|
###________________|
###________________|

 

 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...