Skocz do zawartości

Sprawdzenie zadania i pytanie


Rekomendowane odpowiedzi

Mógłby mi ktoś powiedzieć czemu ten program nie zlicza sumy cyfr podanej liczby?

 

http://pastebin.com/ChG8ZDg1

 

I mam też pytanie, jak napisać program który sprawdzi czy liczba jest pierwsza z użyciem pętli while

 

@Edit

 

Gdy zamieniłem pętle while na do while wszytko działa poprawnie, ale potrzebuje w pętli while.

2a0c2mq.png

Odnośnik do komentarza
Udostępnij na innych stronach

#include <iostream>

using namespace std;

int main()
{
    int liczba, x=0, suma=0;
    cout << "Dane: " << endl;
    cin >> liczba;

    while(liczba!=liczba/10)
    {
        x=liczba%10;
        suma+=x;
        liczba = liczba/10;
    }
    cout << suma;

    return 0;
}

I o takie coś chodzi?

#include <iostream>

using namespace std;

int main()
{

    int liczba;

    while(true)
    {
        cin >> liczba;
        for (int i=2; i<=liczba; i++){
            if (liczba%i==0){
                if (i==liczba) cout<<"Pierwsza"<<endl;
                else cout<<"Nie"<<endl;
                break;
            }
        }
    }
    return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

W pierwszym zadaniu pętla działa dopóki nie zostanie zliczona te wszystkie liczby w podanej przez ciebie liczbie.

 

 

W drugim - pierwsza pętla zapewnia stałe działanie programu, czyli możemy w jednym uruchomieniu programu sprawdzić tyle liczb ile chcemy.

Druga petla sprawdza reszta z dzielenia z kazdej liczby wiekszej od 2 do naszej podanej. Potem sprawdza czy liczba z reszta 0 jest nasza liczba. Jeśli jest to znaczy ze liczba pierwsza, jesli nie to nie.

 

Troche masło maślane, ale tłumaczyć to zbytnio nie potrafie xD

Odnośnik do komentarza
Udostępnij na innych stronach

W pierwszym zadaniu pętla działa dopóki nie zostanie zliczona te wszystkie liczby w podanej przez ciebie liczbie.

 

 

W drugim - pierwsza pętla zapewnia stałe działanie programu, czyli możemy w jednym uruchomieniu programu sprawdzić tyle liczb ile chcemy.

Druga petla sprawdza reszta z dzielenia z kazdej liczby wiekszej od 2 do naszej podanej. Potem sprawdza czy liczba z reszta 0 jest nasza liczba. Jeśli jest to znaczy ze liczba pierwsza, jesli nie to nie.

 

Troche masło maślane, ale tłumaczyć to zbytnio nie potrafie xD

 

No dobra a da radę tą petle for w środku podmienić na while? Jest dla mnie bardziej czytelna

2a0c2mq.png

Odnośnik do komentarza
Udostępnij na innych stronach

#include <iostream>

using namespace std;

int main()
{

    int liczba, i;

    while(true)
    {
        i = 2;
        cin >> liczba;
        while(i<=liczba){
            if (liczba%i==0){
                if (i==liczba) cout<<"Pierwsza"<<endl;
                else cout<<"Nie"<<endl;
                break;
            }
            i++;
        }
    }
    return 0;
}

No dać się da. Tylko to nie jest rozwiązanie, bez poznania pętli FOR nie pojdziesz dalej w nauce. Poznanie kązdej pętli jest istotne jak też jej zrozumienie.

Odnośnik do komentarza
Udostępnij na innych stronach

O______________O wut ?...

nie chce mi się sprawdzać czy podaliście mu poprawne odpowiedzi ale widziałem że coś o działaniu pętli for ugh...

 

 

for( wartości startowe ; warunki działania ; instrukcje do wykonania po każdym ponowieniu )

 

przy czym nie ma żadnego problemu w wpisaniu np. czegoś takiego for(int a=0,   int b=2;b<20;b+=((a*20)/100)),   a++)

 

wartości startowe to po prostu deklarowanie zmiennych które będą istnieć do czasu istnienia pętli..

warunki działania to tak samo jak IF ( if( a == 5 ) dosmt )

to są... ugh jak sama nazwa mówi to co ma się wykonać po każdym odświeżeniu pętli...

 

przy czym możesz też zapisać BEZ WARUNKÓW

 

for(int a=0;;a++)

albo

for(;;) // Nieskończony for

nieskończony ponieważ zapisaliśmy tutaj zwykłego for bez warunków jego działania

ofc. taką pętlę też da się przerwać ale cóż... mniej więcej tak ona działa jak to pierwsze co ci napisałem ^_^

 

 

//Edit:

PGS for nie jest potrzebne do wszystkiego :)...

nieco więcej starań i roboty "głupiego" ale while może symulować z palcem w dupie prace for...

problem w tym że aby symulować prace for w while cóż... wymagane byłoby posiadanie świadomości jak działą for...

 

 

dlatego swoich uczniów najpierw wole nauczyć plików wsadowych...

bez forów itp. czyste goto if echo a to tylko dlatego aby sami stworzyli swoje pętle i zobaczyli

od podstaw jak działa ... oo mam pomysł patrz ( o ile wiesz co robi break )

int a=0;          ::for(int a=0;a<20;a++)
while(true)       ::{
{                 ::cout<<"hello";
 cout<<"hello";   ::}
if(a<20)break;    ::
a++;              ::
}                 ::


Przeanalizuj ten kod a na 100% zrozumiesz działanie for ....
kod wykonuje to samo ale na prawo z while a na lewo z for
Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający forum Sprawdzenie zadania i pytanie   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...