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

Instrukcja break

Ostatnio zmodyfikowano 2017-06-30 08:47
Autor Wiadomość
tomaszek321
Temat założony przez niniejszego użytkownika
Instrukcja break
» 2017-06-29 12:16:16
Witam,
to moj pierwszy post na forum, dlatego z gory prosze o wyrozumialosc:)
Czy moze mi ktos wyjasnic dlaczego w moim kodzie instrukcja break nie przerywa iteracji petli (licznik zawsze osiaga wartos iteracji).

C/C++
#include <iostream>
#include <cctype>

double datki[ 10 ];
double suma = 0;
double srednia = 0;
double licznik = 0;


int main()
{
    std::cout << "Prosze podaj sume darowizny: ";
    std::cout << std::endl;
   
    for( int i = 0; i < 10; i++ )
    {
        if( isalpha(( int ) datki ) )
             break;
        else
        {
            std::cin >> datki[ i ];
            suma += datki[ i ];
            licznik++;
        }
    }
    std::cout << "suma" << suma << std::endl;
    std::cout << "licznik" << licznik;
   
    srednia = suma / licznik;
   
    std::cout << std::endl;
    std::cout << srednia << std::endl;
   
   
   
    return 0;
}
 
P-162927
pekfos
» 2017-06-29 12:32:04
C/C++
if( isalpha(( int ) datki ) )
A to co ma robić?
P-162928
mateczek
» 2017-06-29 12:56:05
P-162929
mateczek
» 2017-06-29 12:59:53

C/C++
for( int i = 0; i < 10; i++ )
{
    if( warunek ) break; // warunek masz bez sensu.
   
    else //A "else" jest zbędne. Bo przecież przy prawidłowym warunku powinno wywalić Cię z pętli
    {
        std::cin >> datki[ i ];
        suma += datki[ i ];
        licznik++;
    }
}

// tak więc pętla mogła by wyglądać tak
for( int i = 0; i < 10; i++ )
{
    if( warunek )
         break;
   
    std::cin >> datki[ i ];
    suma += datki[ i ];
    licznik++;
}
// a jescze lepiej
for( int i = 0;( i < 10 ) &&( !warunek ); i++ )
{
    std::cin >> datki[ i ];
    suma += datki[ i ];
    licznik++;
}
P-162930
tomaszek321
Temat założony przez niniejszego użytkownika
» 2017-06-29 13:10:42
Dzieki za pomoc.
if( isalpha(( int ) datki ) ) a to mialo konczyc program gdy zostanie podana wartosc nieliczbowa:)

P-162931
tomaszek321
Temat założony przez niniejszego użytkownika
» 2017-06-29 13:15:18
I tak naprawde wywala z petli gdy wpisze wartosc nieliczbowa, ale wartos licznika osiaga zawsze wartosc iteracji. Postaram sie znalesc inny warunek.
P-162932
maly7
» 2017-06-29 14:30:49
if( isalpha(( int ) datki ) )

Nie możesz tak sprawdzać czy tablica jest wartością nieliczbową. datki to wskaźnik na tablicę, powinieneś sprawdzać konkretny element tablicy:
if( isalpha(( int ) datki[ element ] ) )

Poza tym nawet nie wiem jak ci się to skompilowało (rzutowanie double* na int)
P-162933
jankowalski25
» 2017-06-29 15:06:35
Poza tym nawet nie wiem jak ci się to skompilowało (rzutowanie double* na int)
Rzutowania w stylu C działają jak
reinterpret_cast
 w C++, czyli w zasadzie można rzutować wszystko na wszystko (dlatego się kompiluje). Poza tym,
isalpha()
 zwraca
int
, czyli dobrze byłoby dorzucić do warunku
!= 0
.
P-162936
« 1 » 2
  Strona 1 z 2 Następna strona