MyTetra Share
Делитесь знаниями!
Рамка вокруг произвольного текста
Время создания: 26.01.2017 12:53
Раздел: Computer - Programming - C++ - Lessons

/*

Напишите программу, запрашивающую имя, фамилия, отчество и номер группы студента и выводящую введённые данные в следующем виде:

********************************

* Лабораторная работа № 1 *

* Выполнил(а): ст. гр. ЗИ-123 *

* Иванов Андрей Петрович *

********************************

Необходимо, чтобы программа сама определяла нужную длину рамки.

Сама же длина рамки зависит от длины наибольшей строки внутри рамки.

*/


#include <stdio.h>

//#include <time.h>


#define SIZE 8

#define BUFF 4

#define WORD 25


unsigned int outstr(unsigned int current, const unsigned char * const string);

void prline(const unsigned int len);


int main ()

{

// LAB WORK -->

// unsigned char banner[16] = "LABORATORY WORK";

unsigned char name[WORD] = "\0";

unsigned char surname[WORD] = "\0";

unsigned char secname[WORD] = "\0";

unsigned int len = 0;

unsigned int curr_len = 0;


printf("Enter your name: ");

scanf("%[^\n]s", name);

getchar();

printf("Enter your surname: ");

scanf("%[^\n]s", surname);

getchar();

printf("Enter your name: ");

scanf("%[^\n]s", secname);

getchar();


//--------+++++++++++++++++++++++++++++++++

// int t = clock();

//--------+++++++++++++++++++++++++++++++++


for(int i = 0; name[i] != '\0'; ++i)

++len;

for(int i = 0; surname[i] != '\0'; ++i)

++len;

for(int i = 0; secname[i] != '\0'; ++i)

++len;


len += 2; //add 2 spaces between NAME, SURNAME and SECONDNAME

if(len < SIZE) len = SIZE; //

curr_len = len;

//Printing first string after top border:

//*************

//* LAB WORK *

prline(len);

//============

printf("\n* LAB WORK");

for(int i = 0; i < len - SIZE + 1; ++i)

printf(" ");

printf("*\n* ");

//print NAME

curr_len = outstr(curr_len, name);

printf(" ");

//print SURNAME

curr_len = outstr(curr_len, surname);

printf(" ");

//print SECNAME

curr_len = outstr(curr_len, secname);


for(int i = 0; i < curr_len-1; ++i)

printf(" ");

printf("*\n");

//============

prline(len);

//============

printf("\n");


//--------+++++++++++++++++++++++++++++++++

// printf("\nTime: %d\n", clock()-t);

//--------+++++++++++++++++++++++++++++++++


getchar();

return 0;

}


//print right side of border

unsigned int outstr(unsigned int current, const unsigned char * const string)

{

for(int i = 0; string[i] != '\0'; ++i)

{

printf("%c", string[i]);

--current;

}

return current;

}


//print maximal length line (top and bottom of border)

void prline(const unsigned int len)

{

for(int i = 0; i < len + BUFF; ++i)

printf("*");

}

 
MyTetra Share v.0.53
Яндекс индекс цитирования