Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Sprawdzenie zadania i pytanie


Rekomendowane odpowiedzi

Opublikowano

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

Specjalista
Opublikowano
#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;
}

Opublikowano

@up

 

Tak chodzi właśnie o to. Tylko mógłby mi ktoś wytłumaczyć tutaj zasadę działania tych pętli w tym programie bo kompletnie nie rozumiem jak one działają

2a0c2mq.png

Specjalista
Opublikowano

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

Opublikowano

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

Specjalista
Opublikowano
#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.

Opublikowano

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

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...