Programy w C

s3ba
Użytkownik
Użytkownik
Posty: 63
Rejestracja: 18 sty 2009, o 21:53
Płeć: Mężczyzna
Podziękował: 37 razy
Pomógł: 5 razy

Programy w C

Post autor: s3ba »

Program. Wczytaj parametr a - długość boku kwadratu oraz c - znak, którym wykreślisz kwadrat:

Kod: Zaznacz cały

4, #
####
####
####
####
Program. Wczytaj parametr a - długość boku rombu oraz x - oznaczający przesunięcie kolejnych wierszy w lewo/prawo licząc w dół; wykreśl tak określony romb:

Kod: Zaznacz cały

        4, 0         4, +2                    4, -1
        ****          ****                    ****
        ****            ****                 ****
        ****              ****              ****
        ****                ****           ****

Nie moge sobie poradzic z ulozeniem petli for do obu zadan, w pierszym rowniez nie wiem jak wykorzystac wczytany znak # do kreslenia kwadratu.
Z gory dziekuje za wszelka pomoc.
Awatar użytkownika
jarzabek89
Użytkownik
Użytkownik
Posty: 1337
Rejestracja: 11 lis 2007, o 21:36
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 4 razy
Pomógł: 181 razy

Programy w C

Post autor: jarzabek89 »

Dla pierwszego:
for ( i=1; i <= n*n; i=i+1 ) {
printf( "*" );
if ( i % n == 0 )
printf( "
" );
}
Dla drugiego będzie podobnie, tylko pętelka for dodatkowa dla spacji.
Co do znaku. Wczytasz na początku jakąś zmienna nazwijmy ją c. i zamiast printf( "*" ); będzie printf("%c",c), jeśli zmienna będzie typu char.
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

Programy w C

Post autor: matshadow »

można się pozbyć pętli dla spacji (co spowoduje lepszą złożoność), w ten sposób:

Kod: Zaznacz cały

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;

int main()
{
    int n,x;
    char c;
    scanf("%c%d%d",&c,&n,&x);
    string s="";
    if(x>0)
        for(int i=0;i<n;i++)
        {
            printf("%s",s.c_str());
            s.append(x,);
            for(int j=0;j<n;j++)
                printf("%c",c);
            printf("
");
        }
    else
    {
        x=-x;
        s.append((n-1)*x,);
        for(int i=0;i<n;i++)
        {
            printf("%s",s.c_str());
            s.erase(0,x);
            for(int j=0;j<n;j++)
                printf("%c",c);
            printf("
");
        }
    }
    system("pause");
    return(0);
}
ODPOWIEDZ