Wątek przeniesiony 2014-12-23 10:16 z przez ŁF. Powód: Wątek dotyczący podstaw

C++ program ktory pokazuje jak dluga jest liczba/slowo

Odpowiedz Nowy wątek
2014-12-22 00:27
0

skopiowalem z internetu programik ktory pokauzje mi jak dluga jest jakas liczba

            int liczba, i=1;
                cout<<"wpisz jakas liczbe:"<<endl;
                cin>>liczba;
 
                do
                {
                    i++;
 
                } while (liczba=liczba/10);
 
                cout<<"liczba ma "<<i<<" dlugosci"<<endl;

nie rozumiem co sie dzieje w do...while
dodawaj do zmiennej i jeden wtedy gdy liczba=liczba/10

czyli ze np. wpisujac 1234 bedzie:
dodaj do zmiennej i jeden wtedy gdy 1234=1234/10 (1234=123,4)

moglby mi ktos to wytlumaczyc? bede wdzieczny

Pozostało 580 znaków

2014-12-22 00:34
0
#include <iostream>
using namespace std;
 
int main()
  {
   for(int i=1;i<=20;++i)
     {
      cout<<i<<": "<<i/10<<endl;
     }
   return 0;
  }

http://ideone.com/zAmmZI


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-22 00:35
1

Jako iż liczba jest typu int (cakłowitego) po podzieleniu przez zero "ucinana" jest część po przecinku, tak więc 123/10 == 12, tak samo 199/10 == 19. Warunek pętli "usuwa" więc ostatnią cyferkę w liczbie i sprawdza, czy wynik jest różny od zera (fałsz). Kod można bardziej "rozpisać" i przedstawić w ten sposób:

 
                int liczba, i=1;
                cout<<"wpisz jakas liczbe:"<<endl;
                cin>>liczba;
 
                do
                {
                    i++;
                    liczba=liczba/10; 
                } while (liczba!=0);
 
                cout<<"liczba ma "<<i<<" dlugosci"<<endl;

Pozostało 580 znaków

2014-12-22 00:41
2
             unsigned liczba;
             cout<<"wpisz jakas liczbe:"<<endl;
             cin>>liczba;
             cout<<"liczba ma "<<(liczba?(unsigned)log10(liczba)+1:1)<<" dlugosci"<<endl;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon, 2014-12-22 00:42

Pozostało 580 znaków

2014-12-22 00:44
0

ach juz rozumiem, no przeciez 0 daje prawde a wieksze od 0 daje falsz, gzies o tym bylo na poczatku uczenia sie

Pozostało 580 znaków

2014-12-22 00:52
0

Właśnie na odwrót :). 0 to fałsz, a wszystko inne (lub tylko dodatnie, zależnie od kompilatora) daje prawdę ;). W kodzie, którzy Ci przesłałem jest negacja(jest różne od) - !=, czyli gdy po wykonaniu pętli liczba jest równa 0 - kończy ją, a gdy jest różna od 0 - kontynuuje.

edytowany 1x, ostatnio: Skyler, 2014-12-22 00:52

Pozostało 580 znaków

2014-12-22 00:53
0
Skyler napisał(a):

0 to fałsz, a wszystko inne (lub tylko dodatnie, zależnie od kompilatora) daje prawdę ...

Że co?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-22 01:05
0

Mam na uczelni dedykowany kompilator, który zwraca fałsz przy ujemnych, nie pytaj jakim cudem ;_;

Pozostało 580 znaków

2014-12-22 01:23
0

Nie rozumiem, czyli kompilator niezgody ze standardem podajesz jako przykład braku standardu?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-22 01:34
0

Zwracam tylko uwagę, że warto sprawdzić sobie samemu :). Lepiej tak, niż potem się przejechać na kolokwium (sądząc po zaawansowaniu programu raczej nie jest to żaden profesjonalny projekt .).

Pozostało 580 znaków

2014-12-22 01:40
0

No to trza w takim razie wszystko zacząć sprawdzać, np czy 1+1==2, 1+2==3 itd, na pełne sprawdzanie nie starczy życia,


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0