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

[C++] Pętla for wzorst znacznika

Ostatnio zmodyfikowano 2015-03-26 18:54
Autor Wiadomość
blazej6
Temat założony przez niniejszego użytkownika
[C++] Pętla for wzorst znacznika
» 2015-03-26 14:16:14
Witajcie mam mega problem z pętlą
C/C++
for( F = 1; F <= 20; F++ )
{
    for( I = 1; I <= 8; I++ )
    {
       
        T[ 0 ][ F ] = 37.5;
        T[ I ][ F ] =( T[ I - 1 ][ F - 1 ] + T[ I + 1 ][ F - 1 ] ) / 2;
        T[ 8 ][ F ] = 32;
       
       
    }
   
}

I - liczba tych kropek, F=delta T na rysunku

i potrzebuje żeby działało na takiej zasadzie jak na rysunku

http://postimg.org/image/4fkgr1kun/
http://postimg.org/image/4fkgr1kun/
Głównie chodzi o to zeby brał o te dwa punkty zawsze mniej i pobierał sobie ich temperature z obliczeń poprzednich

tutaj cały prog:
C/C++
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

int main()
{
    //**** Stale ****
    double lambda = 0.75;
    double c = 3000000;
    double cb = 3996200;
    double Gb = 0.00125;
    double Tb = 37;
    double k = 4995.25;
    double Qmet = 245;
    double L = 0.035;
    double delT = 5;
    int n = 10;
    double Q;
    //**** Obliczenie warunku stabilności ****
    double WS;
    double a, h;
    Q = k * Tb + Qmet;
    a = lambda / c;
    h = L / n;
    WS = 1 -(( 2 * a * delT ) /( h * h ) ) -(( k * delT ) / c );
    if( WS >= 0 )
         cout << "Warunek stabilnosci zostal spelniony" << endl;
   
    else
         cout << "Nie spelniono warunku" << endl;
    //**** Fourier ****
    long double const1 = 1 -(( 2 * a * delT ) /( h * h ) ) -(( k * delT ) / c );
    long double const2 =( a * delT ) /( h * h );
    long double const3 =( Q * delT ) / c;
    long double T[ 9 ][ 21 ];
    int I, F; // z capslockiem zeby sie odroznialy od licznikow dla ciepla
   
    for( I = 1; I <= 7; I++ ) // warunek poczatkowy - w kazdym wezle (I) dla zerowej chwili czasu (F=0) -> T=36,6
   
    {
        T[ 0 ][ 0 ] = 37.5;
        T[ 8 ][ 0 ] = 32;
        T[ I ][ 0 ] = 36.6;
    }
   
   
    for( F = 1; F <= 20; F++ )
    {
        for( I = 1; I <= 8; I++ )
        {
           
            T[ 0 ][ F ] = 37.5;
            T[ I ][ F ] =( T[ I - 1 ][ F - 1 ] + T[ I + 1 ][ F - 1 ] ) / 2;
            T[ 8 ][ F ] = 32;
           
           
        }
       
    }
   
    for( F = 0; F <= 5; F++ )
    {
        cout << "Rozklad temperatur F[" << F << "] " << endl;
        for( I = 0; I <= 8; I++ )
        {
            cout << T[ I ][ F ] << endl;
        }
       
    }
    system( "pause" );
    return 0;
}
P-129192
Wronski
» 2015-03-26 14:36:21
kod wrzuc w [.cpp][./cpp]
bez kropek oczywiscie, tak az oczy bola
P-129194
blazej6
Temat założony przez niniejszego użytkownika
» 2015-03-26 14:43:37
http://www.speedyshare.com/fTF4N/PP1.cpp
P-129195
Wronski
» 2015-03-26 15:00:46
Wydaje mi sie ze dobrze by to dzialalo, o ile dobrze rozumiem rysunek :P gdybys zmienil po prostu to :

C/C++
for( I = 1; I <= 7; I++ ) // warunek poczatkowy - w kazdym wezle (I) dla zerowej chwili czasu (F=0) -> T=36,6

{
    T[ 0 ][ 0 ] = 37;
    T[ 8 ][ 0 ] = 32.5;
    T[ I ][ 0 ] = 36.6;
}


for( F = 1; F <= 20; F++ )
{
    for( I = 1; I <= 8; I++ )
    {
       
        T[ 0 ][ F ] = 37;
        T[ I ][ F ] =( T[ I - 1 ][ F - 1 ] + T[ I + 1 ][ F - 1 ] ) / 2;
        T[ 8 ][ F ] = 32.5;
       
       
    }
   
}
 w taki sposob
P-129197
blazej6
Temat założony przez niniejszego użytkownika
» 2015-03-26 15:10:27
nie nie, chodzi o to żeby wyniki prezntowały sie w następujacy sposób
Temperatura wg prawa Fouriera w danym wezle i danej chwili czasu w [C]:

1.37.5000
2.36.6000
3.36.6000
4.36.6000
5.36.6000
6.36.6000
7.36.6000
8.36.6000
9.32.0000

1.37.5000
2.37.0500
3.36.6000
4.36.6000
5.36.6000
6.36.6000
7.36.6000
8.34.6000
9.32.0000

1.37.5000
2.37.0500
3.36.8300
4.36.6000
5.36.6000
6.36.6000
7.35.4500
8.34.6000
9.32.0000

...

itd
P-129198
Wronski
» 2015-03-26 15:32:22
C/C++
for( F = 0; F <= 5; F++ )
{
    cout << "Rozklad temperatur F[" << F << "] " << endl;
    for( I = 0; I <= 8; I++ )
    {
        cout << setprecision( 4 ) << setiosflags( ios::fixed ) << T[ I ][ F ] << endl;
    }
   
}

o to chodzi ?
P-129199
blazej6
Temat założony przez niniejszego użytkownika
» 2015-03-26 15:41:09
Nie nie.

1.37.5000
2.36.6000
3.36.6000
4.36.6000
5.36.6000
6.36.6000
7.36.6000
8.36.6000
9.32.0000

1.37.5000
2.37.0500
3.36.6000
4.36.6000
5.36.6000
6.36.6000
7.36.6000
8.34.6000
9.32.0000

chodzi aby w tej 3 pętli brał wartość 1 i 2 oraz 8 i 9 z pętli 2, w 4 pętli wartość 1, 2, 3 i 7, 8, 9 z petli  3

1.37.5000
2.37.0500
3.36.8300
4.36.6000
5.36.6000
6.36.6000
7.35.4500
8.34.6000
9.32.0000

...
P-129200
Brunon3
» 2015-03-26 15:43:47
Daj kod w pierwszym poście w znaczniki [cpp] kod [/cpp].

//EDYTOWANE

-BD.
P-129201
« 1 » 2
  Strona 1 z 2 Następna strona