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

liczby calkowite warunek

Ostatnio zmodyfikowano 2014-05-06 13:23
Autor Wiadomość
winio94
Temat założony przez niniejszego użytkownika
liczby calkowite warunek
» 2014-05-06 11:47:45
Czesc,chcę aby program bral pod uwage tylko liczby calkowite
Wymyslilem coś takiego:
C/C++
int ilosc;
cout << "Podaj wielkosc tablicy(liczba calkowita!!): ";
cin >> ilosc;
while( ilosc % 2 != 1 || ilosc % 2 != 0 )
{
   
    cout << "Wielkosc musi byc liczba calkowita!!\nSprobuj ponownie." << endl;
    cin >> ilosc;
}
cout << "Poprawna liczba" << endl;
Pytanie,co jest  źle w tym warunku?
Pozdrawiam
Tutaj caly kod gdyby ktos chcial:
http://ideone.com/g2GWcG
P-109357
stryku
» 2014-05-06 11:54:41
P-109358
winio94
Temat założony przez niniejszego użytkownika
» 2014-05-06 12:05:20
dzięki, ale chciałbym jeszcze wiedziec dlaczego mój warunek nie działa poprawnie :) Odpowie ktoś na to pytanie ?
P-109359
Monika90
» 2014-05-06 12:12:50
ilosc jest typu int, to znaczy zawsze zawiera liczbę całkowitą (jeżeli tylko było poprawnie zainicjalizowane). Twój warunek jest prawdziwy dla dowolnej wartości typu int, równie dobrze mógłbyś napisać while (true) { }
P-109360
winio94
Temat założony przez niniejszego użytkownika
» 2014-05-06 12:17:56
Dobrze, wklejam caly kod:
Chodzi mi o wlasnie przypadek podania liczby innej niz calkowita;
Chcę aby po podaniu np 4.5 pętla cofała mnie aż do momentu podania liczby calkowitej,a ona cofa mnie właśnie gdy podaje liczbe calkowitą(Wielkosc tablicy musi byc liczba calkowita), a pętelka cofa mnie gdy podam właśnie liczbe calkowitą

C/C++
#include <iostream>
#include <conio.h>
#include<string>
#include<cstdlib>
#include<time.h>
using namespace std;

float srednia( float * tab, int ile )
{
    float suma = 0;
    for( int i = 0; i < ile; i++ )
    {
        suma +=* tab;
        tab++;
    }
    return suma / ile;
}


int main()
{ //posylamy cala tablice jako oryginal
    int ilosc;
    cout << "Podaj wielkosc tablicy(liczba calkowita!!): ";
    cin >> ilosc;
    while( ilosc % 2 != 1 || ilosc % 2 != 0 )
    {
       
        cout << "Wielkosc musi byc liczba calkowita!!\nSprobuj ponownie." << endl;
        cin >> ilosc;
    }
    cout << "Poprawna liczba" << endl;
   
   
    float tablica[ ilosc ]; //do funkcji obliczajacej srednia
    for( int i = 0; i < ilosc; i++ )
    {
        cout << "Element: " << i << " = ";
        cin >> tablica[ i ];
    }
    cout << srednia( tablica, ilosc );
   
    getch();
    return 0;
   
}
Pozdrawiam
P-109361
alixir
» 2014-05-06 12:39:40
Chyba nie bardzo rozumiesz poprzednie wypowiedzi.
Po 1. Zmienna "ilosc" jest typu int (przechowuje liczby calkowite), więc nie możesz nawet zapamiętać w niej innej liczby jak tylko całkowitą
Po 2. Twój warunek jest zawsze prawidziwy (pętla wykona się niezależnie od tego co podasz)
 Załóżmy, że podałeś liczbę 4:
while( 4 % 2 != 1 || 4 % 2 != 0 )
=
while( 0 != 1 || 0 != 0 )
=
while( true || false )

Prawda lub fałsz daje zawsze prawdę !

Myślę, że twoim zamysłem było && zamiast ||
P-109362
winio94
Temat założony przez niniejszego użytkownika
» 2014-05-06 12:46:50
alixir dzięki, zapomniałem o tym. W takim razie jak rozwiązać problem podania za wielkosc tablicy liczby np 4.5?
edit. Sorry za glupie pytanie, jakie inaczej JA moglbym to zrobic?:)
P-109363
alixir
» 2014-05-06 12:57:19
Zgodnie z tym co napisałem wcześniej, nie da się wczytać liczby 4.5 do zmiennej "ilosc".
W przypadku podania takiej liczby, program wczyta do zmiennej wartość 4, a w buforze pozostawi ".5"
P-109364
« 1 » 2
  Strona 1 z 2 Następna strona