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

Pytanie co do tworzenia złożonych pętli

Ostatnio zmodyfikowano 2008-10-29 19:31
Autor Wiadomość
Zniwiarz
Temat założony przez niniejszego użytkownika
Pytanie co do tworzenia złożonych pętli
» 2008-10-29 18:51:12
Kod do ktorego mam pytanie:

C/C++
#include <iostream>
#include <conio.h>

using namespace std;

main()
{
    int i, m;
    int dlugosc_linii = 3;
    for( i = 0; i < 4; i = i + 1 )
    {
        for( m = 0; m < 10; m = m + 1 )
        {
            cout << "*";
            if( m > dlugosc_linii ) break;
           
        }
        cout << "\nKontynuujemy zewnetrzna petle"
        << " for dla 1 = "
        << i << "\n";
       
    }
    getch();
    return( 0 );
}

A oto pytanie: dlaczego w ponizszym dzialaniu program wypisuje 5 gwiazdek a nie 10?

C/C++
int i, m;
int dlugosc_linii = 3;
for( i = 0; i < 4; i = i + 1 )
{
    for( m = 0; m < 10; m = m + 1 )
    {
        cout << "*";
        if( m > dlugosc_linii ) break;
       
    }
    cout << "\nKontynuujemy zewnetrzna petle"
    << " for dla 1 = "
    << i << "\n";
   
}
Wiem w tym poleceniu znajduje sie intrukcja ktora redukuje ilsc gwiazdek ale od czego zalezy to ze jest ich 5 a nie 10? Czy Ich liczba zawsze jest redukowana w tym kodzie o 2? Jesli tak to od czego to zalezy?

Chcialbym Dodac ze kompilacja przebiega poprawnie. Przepraszam za spam na forum.

Prosze o odpowiedz
Pozdrawiam
Żniwiarz
P-2355
grabon
» 2008-10-29 19:01:08
Od tej lini

if( m > dlugosc_linii ) break;

i tej
int dlugosc_linii = 3;

Jeżeli zamienisz ją na :
int dlugosc_linii = 8;
Będziesz miał 10 gwiazdek.

P-2356
Zniwiarz
Temat założony przez niniejszego użytkownika
» 2008-10-29 19:06:12
Aha dziekuje. A w jaki sposob program to przelicza? Chodzi mi o to, ze gdy wstawie dlugosc linii 3 to wychodzi mi 5 gwiazdek a jak 8 to 10, dlaczego tak sie dzieje? Czy moglbys mi to wyjasnic jak to sie oblicza? Najlepiej jakims wyrazeniem matematycznym.

A w tym przypadku? dlaczego na ekranie zostaje wyswietlony wynik:

Ab
Ab
AAAAAAAAAA

C/C++
#include <iostream>
#include <conio.h>

using namespace std;

main()
{
    int k;
    for( k = 0; k < 12; k = k + 1 )
    {
        cout << "A";
        if( k > 1 ) continue;
       
        cout << "b" << endl;
    }
    getch();
    return( 0 );
}

gdy zmienie "k < 12" na "k < 10" pokazuje mi sie wynik:
Ab
Ab
AAAAAAAA

Dlaczego tak sie dzieje?


Aha i jeszcze jedno:
 
C/C++
int k;
for( k = 0; k < 12; k = k + 1 )


Dlaczego wyniki z tego rownania to:
Kontynuujemy zewnetrzna petle for dla 1 = 0
Kontynuujemy zewnetrzna petle for dla 1 = 1
Kontynuujemy zewnetrzna petle for dla 1 = 2
Kontynuujemy zewnetrzna petle for dla 1 = 3

Bede bardzo wdzieczny za pomoc
P-2357
grabon
» 2008-10-29 19:11:54
Tu nie chodzi o żadne dzielenie, poczytaj więcej o pętlach i warunkach.
np. tu:
if( m > dlugosc_linii ) break;
Jeżeli m jest większe od zmiennej dlugosc_lini przerywa pętle.
P-2358
Zniwiarz
Temat założony przez niniejszego użytkownika
» 2008-10-29 19:19:47
A znasz moze jakas stronke na ktorej jest to dobrze objasnione? Lub jakas ksiazke? Obecnie korzystam z ksiazki "Symfonia C++" Jerzego Grębosza i własnie tam są przykłady do, których mam takie wątpliwości
P-2359
grabon
» 2008-10-29 19:28:58
Prześledź uważnie kurs C++ na tej stronie a, myślę że, bedziesz wiedział więcej do czego służy continue; break; itp. Pętle, warunki itd.
Poczytaj przerób lekcje a, dopiero jeżeli nie będziesz czegoś rozumiał to zadawaj pytania, bo nawet twój wcześniejszy wątek wskazuje na to że programować to chyba zacząłeś dzisiaj, ewentualnie wczoraj ;)
P-2360
Zniwiarz
Temat założony przez niniejszego użytkownika
» 2008-10-29 19:31:32
OK dzieki wielkie
P-2361
« 1 »
  Strona 1 z 1