• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pętla for. dlaczego się nie wykonuje

Object Storage Arubacloud
+1 głos
1,327 wizyt
pytanie zadane 13 grudnia 2015 w C i C++ przez Mateep Użytkownik (850 p.)

Dlaczego tylko w pierwszym obiegu wchodzi mi do pętli for a później  już nie chce?

#include <iostream>
#include <cmath>
 
using namespace::std;

int main()
{
	int n,a,p,i;

	cin>>n;
	
	while(n--)
	{
		cin>>a;
		
		p=sqrt(a);
		
		for(i=2;i<p;i++)
		{
			if(a%i==0)
			{
				cout<<"NIE"<<endl;
			}
			else
			{
				cout<<"TAK"<<endl;	
			}
		}			
	}

}

 

8 odpowiedzi

+1 głos
odpowiedź 13 grudnia 2015 przez jeremus Maniak (59,720 p.)
wg mnie wszystko działa. Chyba ze co innego miałesna myśli

n- to liczba badanych liczb ?

a to liczba do sprawdzenia czy jest piersza ?

 wszystkie odpowiedzi TAK - liczba piersza ?

jeśłi takie były założenia to program działa prawidłowo
+1 głos
odpowiedź 13 grudnia 2015 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)

Bo do zmiennej "a" przypisujesz wartość pomiędzy 9 a 16 (bez 16)

Wtedy masz "p"=3; a warunek sam pisałeś

for(i=2;i<p;i++)

 

0 głosów
odpowiedź 13 grudnia 2015 przez radek024 Szeryf (77,160 p.)
Waurnek w 12 linii jest dziwny - wpisz tam n==0, a w ciele pętli napisz n--; i może wtedy będzie ok.
komentarz 13 grudnia 2015 przez Mateep Użytkownik (850 p.)
tak jak napisałeś to nawet nigdy nie wejdzie do tego while jeżeli już to n!=0 ale to na to samo wychodzi.
komentarz 13 grudnia 2015 przez radek024 Szeryf (77,160 p.)
Racja, a możesz ustawić a jako liczbę typu rzeczywistego? Robisz z niej pierwsiatek, a to typ całkowity więc tutaj może być coś nie tak.
0 głosów
odpowiedź 13 grudnia 2015 przez Patryk Krajewski Nałogowiec (26,170 p.)
Pętle zamień na: for(i = 2; i>= 0; i--)
komentarz 13 grudnia 2015 przez Mateep Użytkownik (850 p.)
wydaje mi się totalnie bez sensu. pętla będzie się wykonywała od 2 do 0 a nie o to chodzi.
komentarz 13 grudnia 2015 przez Patryk Krajewski Nałogowiec (26,170 p.)
Ale nie pisałeś co chcesz uzyskać.
komentarz 13 grudnia 2015 przez Mateep Użytkownik (850 p.)
chcę żeby wykonywała się pętla do pierwiastaka liczby a czyli mojego p
0 głosów
odpowiedź 13 grudnia 2015 przez Muminek Dyskutant (8,650 p.)
Jakie założenie miałeś? Ile razy chciałeś żeby pętla się wykonała?
komentarz 13 grudnia 2015 przez Mateep Użytkownik (850 p.)
generalnie chce sprawdzac czy liczba jest pierwsza.
czyli do pierwiastka ztej liczby chce zeby sprawdzała pętla
komentarz 13 grudnia 2015 przez Muminek Dyskutant (8,650 p.)

Nigdzie nie wprowadzasz zmiennej p. 

Zdefiniowałeś ją i ona otrzymała jako wartość śmieci (stare dane z obszaru pamięci), a odwołujesz się do niej w warunku pętli -> być może w tym momecie już nie jest on spełniony.

Swoją drogą nie spotkałem się z takmi zapisem przestrzeni nazw z użyciem operatora zasięgu.

komentarz 13 grudnia 2015 przez Mateep Użytkownik (850 p.)
p=sqrt(a); ????
komentarz 13 grudnia 2015 przez Muminek Dyskutant (8,650 p.)
Dobra, slepy bylem. Moj blad. O zmienna a prosi?
0 głosów
odpowiedź 13 grudnia 2015 przez Czort Nałogowiec (32,500 p.)

O co chodzi z tym n? Pętla while nie powinna przypadkiem wyglądać w ten deseń:

while(n>0)
{
//to co masz wewnątrz
n--;
}

 

komentarz 13 grudnia 2015 przez Muminek Dyskutant (8,650 p.)
Wydaje mi się to bez znaczenia. Bo wartos wyraznia musi byc prawdziwa. Więc jezeli n-- jest rozne od zera to nie ma problemu
0 głosów
odpowiedź 13 grudnia 2015 przez Anna Wyrwał Nowicjusz (140 p.)
edycja 13 grudnia 2015 przez Anna Wyrwał

może spróbuj w warunku pętli for zrobić i <= p, przy pierwszym if, kiedy jest podzielne dodać na koniec break, usunąć else, a po pętli for wstawić if (i == p) cout <<"TAK"<<endl;

for(i=2;i<=p;i++)

        {

            if(a%i==0)

            {

                cout<<"NIE"<<endl;

                i--;
                break;

            }

          }

if (i == p)
{
cout<<"TAK"<<endl;
}

 

0 głosów
odpowiedź 10 stycznia 2016 przez niezalogowany
Zadeklaruj zmienną "i" dopiero przy pętli for.

Podobne pytania

0 głosów
1 odpowiedź 162 wizyt
pytanie zadane 10 stycznia 2016 w C i C++ przez maciekh11 Nowicjusz (240 p.)
0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 2 października 2015 w C i C++ przez Sedi Stary wyjadacz (10,200 p.)
0 głosów
2 odpowiedzi 215 wizyt
pytanie zadane 7 października 2020 w Python przez Dawid Popławski Nowicjusz (160 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...