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

zadanie domowe lekcja 29

Ostatnio zmodyfikowano 2014-12-15 16:21
Autor Wiadomość
dafuck17
Temat założony przez niniejszego użytkownika
zadanie domowe lekcja 29
» 2014-12-14 00:43:48
Treść zadania:
2. Zmodyfikuj przykładowe programy z niniejszego rozdziału tak, aby nie używały słów kluczowych
continue
 oraz
break
. Zmodyfikowane programy muszą działać tak samo, tj. wykonywać te same obliczenia i wypisywać takie same wyniki na ekranie.

Moje kody:

Przykład 1:
C/C++
#include <iostream>

int main()
{
    int x = 0;
    do {
        x++;
        if( x == 7 )
        {
            std::cout << "Teraz 'x' wynosi " << x << "." << std::endl;
            std::cout << "Przerywam petle!" << std::endl;
        }
        else
             std::cout << "x = " << x << std::endl;
       
    } while( x < 10 && x != 7 );
   
    std::cout << "Teraz jestem tu :)" << std::endl;
    return 0;
}
Tutaj nie jestem pewien czy zrobiłem to zgodnie z treścią zadania...

Przykład 2:
C/C++
#include <iostream>

int main()
{
    for( int x = 0; x < 8; x++ )
    {
        std::cout << "x = " << x << std::endl;
        if( x == 2 || x == 3 || x == 5 )
        {
            std::cout << "Teraz 'x' wynosi " << x;
            std::cout << " nie wywoluje continue!" << std::endl;
        }
        if( x != 2 || x != 3 || x != 5 )
             std::cout << "KONIEC kroku x = " << x << std::endl;
       
    }
    return 0;
}

Przykład 3:
C/C++
#include<iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void wylosuj( int tablica[], int minimum, int maximum )
{
    cout << "Liczby z tablicy: " << endl;
    for( int licznik = 0; licznik < 10; licznik++ )
    {
        tablica[ licznik ] =( rand() % maximum ) + minimum;
        cout << tablica[ licznik ] << ", ";
    } //for
    cout << endl;
}

void wypiszLiczbyParzyste( int tablica[] )
{
    cout << "Wykonaj zadanie: " << endl;
    for( int licznik = 0; licznik < 10; licznik++ )
    {
        if( tablica[ licznik ] % 2 == 0 )
             cout << tablica[ licznik ] << ", ";
       
    }
    cout << endl;
}

int zsumujTablice( int tablica[], int suma )
{
    for( int licznik = 0; licznik < 10; licznik++ )
    {
        suma += tablica[ licznik ];
    }
    cout << "Suma wszystkich: " << suma << endl;
   
    return suma;
}

int zsumujLiczbyParzyste( int tablica[], int suma )
{
    for( int licznik = 0; licznik < 10; licznik++ )
    {
        suma += tablica[ licznik ] % 2 == 0;
    }
    cout << "Suma wypisanych: " << suma;
   
    return suma;
}


int main()
{
    srand( time( NULL ) );
    int tablica[ 10 ];
    int minimum = 1;
    int maximum = 100;
    int suma = 0;
   
    wylosuj( tablica, minimum, maximum );
    wypiszLiczbyParzyste( tablica );
    zsumujTablice( tablica, suma );
    zsumujLiczbyParzyste( tablica, suma );
    return 0;
}
 
W ostatnim przykładzie mam problem z linijką
suma += tablica[ licznik ] % 2 == 0;
. Program zamiast sumować wartość liczb parzystych, sumuje ich liczbę.
I jeszcze jedno pytanko... da się jakoś inaczej znajdować liczby parzyste a nie tak jak kest w kursie czyli:
tablica[ i ] % 2 != 0
? Troszkę nie rozumiem tego zapisu. Pozdrawiam :)[/code]
P-122839
Rashmistrz
» 2014-12-14 13:40:00
Przykład 1: Tutaj nie jestem pewien czy zrobiłem to zgodnie z treścią zadania...
wykonywać te same obliczenia i wypisywać takie same wyniki na ekranie.
Według mnie jest OK, ale ja bym skrócił to tak by
pętla wykonywała się do osiągnięcia "7" przez "x",
a dopiero po pętli zrobić wypisanie informacji o wyjściu.


Przykład 2:
Coś Ci nie stykło...
Nie wypisuje Ci on dokładnie tych
samych informacji co oryginał.
Najprościej jest zmieścić
tamten kawałek w
else
.


suma += tablica[ licznik ] % 2 == 0;
.
Program zamiast sumować wartość
liczb parzystych, sumuje ich liczbę.
==
 tworzy Ci zdanie logiczne. :F
Spróbuj to zrobić używając operatora
warunkowego:
?:

Oczywiście żeby nie dodawać zer...
Możesz zmienić warunek w IF'ie tak,
żeby zamiast
continue
,
było tam wykonywanie sumowania.
P-122851
dafuck17
Temat założony przez niniejszego użytkownika
» 2014-12-15 13:46:10
a jak działa ten operator
?:
 ? Chyba nie było go w kursie jeśli dobrze pamiętam :P
P-122892
darko202
» 2014-12-15 14:43:36
? jest operatorem warunkowym :

arg1 ? arg2 : arg3

arg1 - tu znajduje się warunek lub warunki

arg2 - tu znajduje się instrukcja, która wykona się, gdy warunek jest prawdziwy

arg3 - tu znajduje się instrukcja, która wykona się, gdy warunek będzie fałszywy.

http://www.algorytm.edu.pl​/wstp-do-c​/trojargumentowy-operator.html

P-122895
Rashmistrz
» 2014-12-15 16:21:36
a jak działa ten operator "?:"?
Chyba nie było go w kursie jeśli dobrze pamiętam :P
Nie ma i nie będzie go w dalszej części kursu.

Po prostu patrząc na to:
suma += tablica[ licznik ] % 2 == 0;

od razu widzi mi się to:
suma += tablica[ licznik ] % 2 ? 0: tablica[ licznik ];


ale i tak te późniejsze rozwiązanie
co dopowiedziałem jest lepsze.
P-122899
« 1 »
  Strona 1 z 1