[ alias_s @ 20.12.2006. 12:51 ] @
Kako bi se mogao napraviti program koristenjem funkcija da za bilo koji uneseni text crta pravougaonik.
Ja sam napravila program koji crta pravougaonik,ali ne znam kako da unesem text u njega.



#include <stdio.h>
int main () {
int i,j,k,a,b;
printf("\na=");
scanf("%d",&a);
printf("\nb=");
scanf("%d",&b);

for(i=1;i<=a;i++)
if ((i==1) || (i==a))
{
printf("+");
}
else{printf("-");
}

printf("\n");

for(j=3;j<=b;j++)
{
for (k=0;k<=a;k++)
if ((k==0) || (k==(a-1)))
{
printf("|");
}
else{printf (" ");
}
printf("\n");
}
for(i=1;i<=a;i++)
if((i==1) || (i==a))
{
printf("+");
}
else
{
printf("-");
}
getch ();
return 0;
}
[ SuPeR_MaSteR @ 21.12.2006. 02:12 ] @
Nisam bas sasvim razumeo sta je potrebno uraditi, ali mozda ovo pomogne (ako radis u windows-u):
Code:

#include<stdio.h>
#include<conio.h>
#include<string.h>
void pravougaonik(const int* x,const int* y);
void crtaj(const int* kraj,char*);
int main()
{
    int a,b,i;
    char tekst[100];
    clrscr();
    puts("Tekst:");
    gets(tekst);
    a = strlen(tekst)+1;
    b = 3;
    clrscr();
    pravougaonik(&a,&b);
    gotoxy(3,2);
    puts(tekst);
    getche();
    return 0;
}
void pravougaonik(const int* x,const int* y)
{
    clrscr();
    gotoxy(1,1);    crtaj(x,"-");
    gotoxy(1,*y);    crtaj(x,"-");
    gotoxy(1,1);    crtaj(y,"|\n\b");
    gotoxy(*x+2,1);    crtaj(y,"|\n\b");
}
void crtaj(const int* kraj,char* linije)
{
    int i;
    for (i = 1; i <= *kraj; i++)
        if ((i == 1 || i == *kraj) && linije[0] == '|')
        {
            char temp = linije[0];
            linije[0] = '*';
            cprintf("%s",linije);
            linije[0] = temp;
        }
        else
            cprintf("%s",linije);
}






btw ovaj kod obradjuje samo jednu liniju teksta, ako treba vise onda deklarisi matricu a varijablu b inicijalizuj na broj redova.
[ SuPeR_MaSteR @ 21.12.2006. 20:50 ] @
EDIT:
Evo kompletan program, obradjuje niske znakova proizvoljne duzine, na izlazu ih ispisuje unutar pravougaonika.
Code:

#include<iostream>
#include<string>
using namespace std;
void okvir(const int & x);
int main()
{
    cout << "Broj linija? ";
    int n;
    cin >> n;
    string tekst[n+1];
    cout << "\nTekst:" << endl;
    int a,b = n;
    for (int i = 0; i <= n; i++)
    {
        getline(cin,tekst[i]);
        if (i == 0)
            a = tekst[i].size();
        if (tekst[i].size() > a)
           a = tekst[i].size();
    }
    cout.put('\n');
    okvir(a);
    for (int i = 1; i <= b; i++)
    {
        for (int j = -1; j <= a; j++)
        {
            if (j == -1 or j == a)
               cout.put('|');
            else if (tekst[i][j] >= 'a' and tekst[i][j] <= 'z')
               cout.put(tekst[i][j]);
            else
               cout.put(' ');
        }
        cout.put('\n');
    }
    okvir(a);
    fflush(stdin);
    cin.get();
    return 0;
}
void okvir(const int & x)
{
   for (int i = -1; i <= x; i++)
        if (i == -1 or i == x)
           cout.put('*');
        else
            cout << "-";
    cout.put('\n');
}

testirano u Dev C++
[ alias_s @ 21.12.2006. 22:37 ] @
Hvala vam od srca