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

Ocena programu i pomoc

Object Storage Arubacloud
0 głosów
252 wizyt
pytanie zadane 15 września 2016 w C i C++ przez Andrew Fischer Nowicjusz (210 p.)
#include <iostream>
using namespace std;

int main()
{
  int n, i, flag=0;
for (;;) {
	
cin >> n;
  for(i=2;i<=n/2;++i)
  {
      if(n%i==0)
      {
          flag=1;
          break;
      }
  }
}
  
  
  if (flag==0)
      cout << "TAK";
  else
      cout << "NIE";
  return 0;
}

Powiecie mi co jest nie tak w tym kodzie?

Dodam, że jest to program, który ma sprawdzić czy wczytana liczba jest l. pierwszą czy nie.

1
komentarz 15 września 2016 przez Patrycjerz Mędrzec (192,320 p.)
Człowieku, zrozum, że poprawny opis problemu to klucz do jego rozwiązania przez osoby chcące ci pomóc. Napisałbyś choć, co złego się dzieje z tym kodem...
komentarz 15 września 2016 przez Kasztan Dyskutant (8,080 p.)
Racja aż idę stąd

2 odpowiedzi

0 głosów
odpowiedź 15 września 2016 przez niezalogowany

Masz pustą pętle, która cały czas się wykonuje i nic ją nie przerywa... Przez co wpisujemy cały czas jakieś wartości, a nie dostajemy odpowiedzi TAK/NIE. Gdy ją wyrzucisz powinieneś dodać jakiegoś if, który sprawdzi czy liczba podana jest mniejsza od 2. Dopiero gdy nie jest wykonywać pętlę. Dalej chyba jest dobrze:
 

#include <iostream>
using namespace std;

int main()
{
    int n, i, flag=0;


    cin >> n;

    if(n<2) flag=1;
    else
      for(i=2;i<=n/2;++i)
      {
          if(n%i==0)
          {
              flag=1;
              break;
          }
      }



  if (flag==0)
      cout << "TAK";
  else
      cout << "NIE";


  return 0;
}

 

komentarz 15 września 2016 przez niezalogowany
edycja 15 września 2016
Można by też dodać przy if(n%i==0) jakiś else, który by ustawiał flagę na wartość 0... gdybyś chciał rozbudować program o podawanie kilku liczb pierwszych. Ewentualnie mógłbyś zrobić funkcję, która sprawdza czy liczba jest pierwszą.

EDIT Taki else jaki opisałem nie ma sensu. Chcąc zrobić to bez zastosowania funkcji, trzeba by tuż przed końcem pętli sprawdzającej kolejne liczby zmieniać wartość flagi na 0.
komentarz 15 września 2016 przez Andrew Fischer Nowicjusz (210 p.)
Problem jest taki, że nie moge wymysleć dobrego algorytmu sprawdzającego to.
komentarz 15 września 2016 przez niezalogowany
W czym dokładnie?
0 głosów
odpowiedź 15 września 2016 przez Kasztan Dyskutant (8,080 p.)
To na spoja ?
komentarz 15 września 2016 przez Andrew Fischer Nowicjusz (210 p.)
Tak.
komentarz 15 września 2016 przez Kasztan Dyskutant (8,080 p.)
Napisz to ładnie z prototypem, funkcją i wywołaniem w main.

Nie dawaj zadań ze spoja tutaj, jest forum spoja na którym dyskutują o programach.

Jeśli w zadaniu podana jest liczba testów to musisz ją podać.

Czyli wywołania funkcji oraz wypisanie wyników umieścić w pętli o zadanej liczbie testów.

Tyle ci powinno wystarczyć żeby uzyskać zaliczenie na spoju.

pozdro

Podobne pytania

+2 głosów
1 odpowiedź 349 wizyt
0 głosów
2 odpowiedzi 208 wizyt
pytanie zadane 23 lutego 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
3 odpowiedzi 286 wizyt
pytanie zadane 2 czerwca 2023 w C i C++ przez polandonion Mądrala (6,970 p.)

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,922 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!

...