1 / 4
May 2012

Nie wiem co jest nie tak. Zrobiłem tak jak mówicie, pozamieniałem na scanf i printf, rzeczywiście program działa szybciej, ale dalej wyrzuca mi błędną odpowiedź. Wiem, że jest błędna bo u mnie na kompilatorze widzę, że jest źle ale za nic nie mogę tego naprawić.
Np. dla liczby 15 wyświetla mi :
TAK
NIE

Zamiast samego NIE.

Oto kod :

#include <cstdlib>
#include <math.h>
#include <stdio.h>
#pragma hdrstop
int main() 
{
    int lTestow ; 
    scanf("%u" , &lTestow) ;
    while (lTestow)
    {
          int liczba ;
          scanf("%u", &liczba) ;
          if (liczba == 0 || liczba == 1) printf ("NIE\n" );
          else if (liczba == 2) printf ("TAK\n") ;
          else
          {
              for (int i = 2 ; i < sqrt(liczba) ; i++ )
                  if (liczba % i == 0 )
				  	{
				  		printf("NIE\n");
					}
					else
					{
						printf("TAK\n") ;
						break ;       
					}
         }
     lTestow -- ;    
    }
    system("pause");
    return 0 ;   
}
  • created

    May '12
  • last reply

    May '12
  • 3

    replies

  • 336

    views

  • 3

    users

Nie opuszczasz pętli po wypisaniu NIE.
[kod]

              for (int i = 2 ; i < sqrt(liczba) ; i++ )
              if (liczba % i == 0 )
              {
                    printf("NIE\n");
               }
               else
               {
                  printf("TAK\n") ;
                  break ;       
               }

[/kod]
"else" powoduje, że dla każdego "i" coś jest wypisywane.
Ponadto i < sqrt(liczba) to za mało. Musi być i <= sqrt(liczba)
//-----------------------------------------------------------------------

Można np. tak:
[kod]

          char F=1;
              for (i=2; i<=sqrt(liczba); i++)
               if (liczba % i == 0 )
               {
               printf("NIE\n");
               F=0;
               break; 
               }
          if (F) printf("TAK\n") ;

[/kod]

@kaspro

Ty mi tu z regulaminem nie wyskakuj smile, lepiej skończ to łatwe zadanie, którego jeszcze nie zrobiłeś :mrgreen: