undefined reference to WinMain@16 podczas kompilacji

0

Napisz program wczytujący z klawiatury liczbę naturalną r>0, a następnie rysujący przy pomocy znaków "x" koło (przybliżenie koła) o promieniu r.
Uwaga - program ma rysować koło, a nie okrąg.

#include <iostream>

using namespace std; 
  
int main() 
{ 
   int liczba,i,l,j; 
   int x; 
   int y; 
   int r; 
   cin>>liczba; 
   for(i=0;i<liczba;i++) 
      { 
         cin>>x>>y>>r; 
               for (j=1;j<=20;j++)   
                  { 
                  for (l=1;l<=20;l++)   
                     { 
                        float pierwsza = pow(j-x,2.);   
                        float druga = pow(l-y,2.);   
                        if ((((pierwsza+druga) <= pow(r,2.))  ||  (sqrt(pierwsza+druga) <= (r+0.5))))      cout<<"x";   
                         else cout <<"."; 
                     } 
                     cout<<"\n"; 
  
                  } 
   cout<<"\n";  
                
      } 
    
   return 0; 
}

pojawia się :

undefined reference to WinMain@16
error: 1d returned 1 exit status
0

Jak to kompilujesz?

0

No wszystko robię w codeblocks i nie wiem czy z kodem jest coś nie tak

0

Pomijając raczej błędne działanie i brak includa "math" to z kodem jest wszystko okej.

0

A może typ aplikacji ma coś do rzeczy -- robisz konsolową, a ustawioną masz gui? Ale to tylko pomysł, bo nie wiem jak to z tym jest w C::B.

0

error: stray '240'\ in program

0

Inne zadania działają dobrze a wszystko tak samo ustawiam

0

Może Masz jakieś niepoprawne znaki, Przepisz to albo Zrób w innym edytorze.

0

W innym pojawia mi się to i nie wiem jak to zmenic zeby dzialalo

main.cpp: In function ‘int main()’:
main.cpp52: error: ‘pow’ was not declared in this scope
float pierwsza = pow(j-x,2.);
^
main.cpp87: error: ‘sqrt’ was not declared in this scope
if ((((pierwsza+druga) <= pow(r,2.)) || (sqrt(pierwsza+druga) <= (r+0.5)))) cout<<"x";
^

1
Nency Black napisał(a):

W innym pojawia mi się to i nie wiem jak to zmenic zeby dzialalo

main.cpp: In function ‘int main()’:
main.cpp52: error: ‘pow’ was not declared in this scope
float pierwsza = pow(j-x,2.);
^
main.cpp87: error: ‘sqrt’ was not declared in this scope
if ((((pierwsza+druga) <= pow(r,2.)) || (sqrt(pierwsza+druga) <= (r+0.5)))) cout<<"x";
^

To już pisał wyżej @szweszwe -- brak #include <cmath>.

0

Tak jak Ci @szweszwe wcześniej pisał — zaimportować bibliotekę matematyczną <cmath>.

0

A tak może być i jej poprawne z poleceniem ?

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

int main()
{
   int liczba,i,l,j;
   int x;
   int y;
   int r;
   cout<<"Podaj liczbe: ";
   cin>>liczba;
   for(i=0;i<liczba;i++)
      {
         cout<<"Podaj x: ";
                    cin>>x;
         cout<<"Podaj y: ";
                    cin>>y;
         cout<<"Podaj r: ";
                    cin>>r;
               for (j=1;j<=20;j++)
                  {
                  for (l=1;l<=20;l++)
                     {
                        float pierwsza = pow(j-x,2.);
                        float druga = pow(l-y,2.);
                        if ((((pierwsza+druga) <= pow(r,2.))  ||  (sqrt(pierwsza+druga) <= (r+0.5))))      cout<<"x";
                         else cout <<".";
                     }
                     cout<<"\n";

                  }
   cout<<"\n";

      }

   return 0;
}
0

W zadaniu nie było mowy o tym, żeby przyjmować od użytkownika środek koła, więc coś sobie wybierz domyślnego (może środek kwadratu, w którym rysujesz?).

Poza tym — Borze Szumiący, formatowanie kodu…

0

W codeblocks
to jak inaczej to zrobić?

0

W C::B to sformatuj kod -- najwygodniej: klikasz prawym w kod i wybierasz Format use Astyle (czy jakoś tak).

0

Tak? Dopiero uczę się programowania więc robię różne błędy

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

int main()
{
   int liczba,i,l,j;
   int x;
   int y;
   int r;
   cout<<"Podaj liczbe: ";
   cin>>liczba;
   for(i=0;i<liczba;i++)
      {
         cout<<"Podaj x: ";
                    cin>>x;
         cout<<"Podaj y: ";
                    cin>>y;
         cout<<"Podaj r: ";
                    cin>>r;
               for (j=1;j<=20;j++)
                  {
                  for (l=1;l<=20;l++)
                     {
                        float pierwsza = pow(j-x,2.);
                        float druga = pow(l-y,2.);
                        if ((((pierwsza+druga) <= pow(r,2.))  ||  (sqrt(pierwsza+druga) <= (r+0.5))))      cout<<"x";
                         else cout <<".";
                     }
                     cout<<"\n";

                  }
   cout<<"\n";

      }

   return 0;
}

zrobiłam to Format use AStyle

0

Okej, zastanawiam się czy teraz jest wszystko okej z kodem i ewentualnie co zmieniec

0
Nency Black napisał(a):

pojawia się :

undefined reference to WinMain@16
error: 1d returned 1 exit status

Wyjaśnienie jest tylko jedno. Projekt został utworzony jako "Windows application" (czy jak to się nazywa w Code Blocks) i teraz linker szuka windowsowego punktu wejścia aplikacji WinMain (którego oczywiście nie ma), zamiast skorzystać z main.

Stwórz nowy projekt w CB i wybierz "Console application" lub coś w ten deseń.

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

int main()
{
    int liczba,i,l,j;
    int x;
    int y;
    int r;
    cout<<"Podaj liczbe: ";
    cin>>liczba;
    for(i=0; i<liczba; i++)
    {
        cout<<"Podaj x: ";
        cin>>x;
        cout<<"Podaj y: ";
        cin>>y;
        cout<<"Podaj r: ";
        cin>>r;
        for (j=1; j<=20; j++)
        {
            for (l=1; l<=20; l++)
            {
                float pierwsza = pow(j-x,2.);
                float druga = pow(l-y,2.);
                if ((((pierwsza+druga) <= pow(r,2.))  ||  (sqrt(pierwsza+druga) <= (r+0.5))))
                    cout<<"x";
                else
                    cout <<".";
            }
            cout<<"\n";

        }
        cout<<"\n";

    }

    return 0;

}

robiłam to formatowanie i juz nie wiem jak inaczej

0

A tak może być to zadanie, bo nie wiem jak inaczej zrobić niby z tą domyślną wartością

0

Jest OK, ale zamiast wczytywać współrzędne środka (o czym nie ma w zadaniu), ja bym przyjął x = y = r, ewentualnie x = y = r+1.

1 użytkowników online, w tym zalogowanych: 0, gości: 1