Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak uprościć program?

Ostatnio zmodyfikowano 2010-10-17 17:50
Autor Wiadomość
grolak
Temat założony przez niniejszego użytkownika
Jak uprościć program?
» 2010-10-16 14:17:12
Mam za zadane napisać program z użyciem pętli for, który będzie wyświetlał coś takiego:

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

czyli pole 4x4 gwiazdek. Zrobiłem ten program, jednak jestem prawie 100procentowo pewien że da się go uprościć, sam program wydaje mi się też troche pokraczny. Oto on:


#include <iostream>
using namespace std;

int main()
{ char a='*';

for ( int i=1; i <= 16; i++ )
{
cout <<a;
if (i % 4 == 0) endl(cout);
}

return 0;
}

Lepiej by było na pewno, gdyby na początku użytkownik podawał wymiary tego pola z gwiazdek, ale do tego mam nadzieję jeszcze dojdę.
Moja prośba to uproszczenie tego skryptu (żeby był bardziej profesjonalny).

_________________________

Dobra, zrobiłem program w którym user podaje wymiary prostokąta i taki prostokąt z gwiazdek robi program. Jednak ciągle proszę o uproszczenie / podanie innego sposobu (chociaż znając życie będzie troche ponad moją dotychczasową wiedzę).


#include <iostream>
using namespace std;

int main()
{ char b='*';
  int i,k;
cout<<"Podaj wymiary";
cin>>i;
cin>>k;

for ( int a=1; a <= i*k; a++ )
{
cout <<b;
if (a % i == 0) endl(cout);
}

return 0;
}
P-22839
ison
» 2010-10-16 14:27:47
program gdzie użytkownik podaje wielkość kwadratu:
C/C++
#include <cstdio>

const char gChrDisplay = '*';
unsigned int gSqrSize;

int main()
{
    scanf( "%u", & gSqrSize );
    for( int i = 0; i < gSqrSize; ++i ) {
        for( int j = 0; j < gSqrSize; ++j )
             printf( "%c", gChrDisplay );
       
        printf( "\r\n" );
    }
}
P-22840
Elaine
» 2010-10-16 14:42:36
Dlaczego \r\n, a nie \n? Dlaczego printf, a nie putchar? Dlaczego zmienna globalna?
P-22843
ison
» 2010-10-16 14:51:17
@up sorki, w sumie masz racje, da się prościej i lepiej to napisać:
podajesz najpierw wysokość potem szerokość:

C/C++
#include <cstdio>

class cChr
{
public:
    inline void Display( const char C );
};

inline void cChr::Display( const char C ) {
    putchar( C );
}

class cSqr
{
private:
    cChr ** Chr;
    char CharDisp;
    unsigned int Width, Height;
    void Init( const int W, const int H ) {
        Chr = new cChr *[ H ];
        for( int i = 0; i < W; i++ ) {
            Chr[ i ] = new cChr[ H ];
        }
    }
public:
    cSqr( const char NewChar )
        : CharDisp( NewChar )
    {
    }
    ~cSqr() {
        for( int i = 0; i < Width; i++ )
             delete[] Chr[ i ];
       
        delete[] Chr;
    }
    void GetVariables();
    void DisplayAll();
};

void cSqr::GetVariables() {
    scanf( "%u %u", & Width, & Height );
    Init( Width, Height );
}

void cSqr::DisplayAll() {
    for( int i = 0; i < Height; ++i ) {
        for( int j = 0; j < Width; ++j )
             Chr[ i ][ j ].Display( CharDisp );
       
        putchar( 10 );
    }
}

int main()
{
    cSqr * mainSqr = new cSqr( '*' );
    mainSqr->GetVariables();
    mainSqr->DisplayAll();
    while( 1 );
   
}

może być? ;P
P-22845
Elaine
» 2010-10-16 14:53:22
Nie, nie może być, w temacie jest o upraszczaniu, nie o komplikowaniu.
P-22846
ison
» 2010-10-16 14:55:45
@up
cytat Grolak:
(żeby był bardziej profesjonalny)

tak poza tym od kiedy to definiuje się uproszczenie zawsze jako skrócenie kodu?
wg Ciebie używanie klas to komplikowanie?... Wg mnie to bardzo dobre wyjście
no tak, cokolwiek by człowiek nie zrobił to zawsze się ktoś taki znajdzie kto skrytykuje xd

tak się zastanawiam, jeśli krytykujesz mnie za zmienne globalne to z jakiej racji wtedy mówisz że źle robię używając klas? Szczerze mówiąc trochę dziwne podejście
P-22847
grolak
Temat założony przez niniejszego użytkownika
» 2010-10-16 15:08:00
OK, dzięki - myślę, że wrócę do tych wyjaśnień kiedy się trochę poduczę, na razie wystarczy mi to co zrobiłem u góry.

Mam za to inne pytanie:
czy w tym skrypcie jest coś źle?


#include <iostream>
using namespace std;

int main()  //program oblicza pole koła
{
  float r;
cout<<"Podaj długość promienia:"<<endl;
cin>>r;
cout<<"Pole koła o promieniu "<<r" wynosi "<<r*r*3.14 <<endl;
return 0;
}

bo ciągle wywala mi błąd

polekola.cpp: In function ‘int main()’:
polekola.cpp:9: error: expected `;' before string constant
, a nie wydaje mi się żeby tam brakowało przecinka.
P-22848
michalp
» 2010-10-16 15:08:12
@ison: To może powiedz czemu kod który napisałeś jest uważasz za prostszy?
P-22849
« 1 » 2 3 4 5
  Strona 1 z 5 Następna strona