warunek w pętli while
Ostatnio zmodyfikowano 2016-06-02 09:31
pawellgawell Temat założony przez niniejszego użytkownika |
warunek w pętli while » 2016-05-31 17:55:04 Witam, stworzyłem sobie taki prosty program liczący iteracyjne temperaturę w płytce. wszystko działa ok, ale chciałbym, żeby ilość przebiegów pętli z ilością iteracji nie była narzucona odgórnie, tylko zależała od np dwóch poprzednich wartości w środkowym punkcie płyty. byłby wdzięczny za sugestie lub podopowiedzi jak to zrobić. #include <iostream>
using namespace std;
int main() { int wymiar = 11; int T = 100; int sr; sr = wymiar / 2; double spr; spr = 0; double ** tab = new double *[ wymiar ]; for( int i = 0; i < wymiar; ++i ) { tab[ i ] = new double[ wymiar ]; for( int j = 0; j < wymiar; ++j ) { tab[ i ][ j ] = 0; } } for( int k = 0; k < wymiar; k++ ) { tab[ 0 ][ k ] = T; } for( int z = 0; z < 50; z++ ) { for( int k = 1; k < wymiar - 1; k++ ) { for( int l = 1; l < wymiar - 1; l++ ) { tab[ k ][ l ] = 0.25 *( tab[ k + 1 ][ l ] + tab[ k - 1 ][ l ] + tab[ k ][ l + 1 ] + tab[ k ][ l - 1 ] ); } } spr = tab[ wymiar - sr ][ wymiar - sr ]; } for( int k = 0; k < wymiar; k++ ) { for( int l = 0; l < wymiar; l++ ) { cout << tab[ k ][ l ] << " "; } cout << endl; } for( int i( 0 ); i < wymiar; ++i ) delete[] tab[ i ]; delete[] tab; tab = NULL; cout << "temp w srodku: " << spr << endl; system( "PAUSE" ); return 0; }
|
|
darko202 |
» 2016-06-02 08:02:21 1. mylisz się że pętla FOR {} ściśle określa ilość przebiegów tej pętli bo : ilość przebiegów określa sprawdzany warunek (i tak jest dla każdej pętli) np. czy_kontynuowac = true; for(; czy_kontynuowac; ) { ... czy_kontynuowac = false; ... }
ile będzie przebiegów tej pętli ? 2. jak mamy Ci doradzić, gdy nie wiemy co jest Ci potrzebne ! najważniejszy jest warunek pętle różnią się od siebie, ale tych różnic wcale nie tak wiele :-) |
|
mateczek |
» 2016-06-02 09:31:58 np taka sugestia while( true ) { for( int k = 1; k < wymiar - 1; k++ ) { for( int l = 1; l < wymiar - 1; l++ ) { tab[ k ][ l ] = 0.25 *( tab[ k + 1 ][ l ] + tab[ k - 1 ][ l ] + tab[ k ][ l + 1 ] + tab[ k ][ l - 1 ] ); } } if(( tab[ wymiar - sr ][ wymiar - sr ] - spr ) < 0.01 ) break; spr = tab[ wymiar - sr ][ wymiar - sr ]; } |
|
« 1 » |