Python Tkinter Punkte auf Kreis erstellen?

https://images.gutefrage.net/media/fragen/bilder/python-tkinter-punkte-auf-kreis-erstellen/0_big.jpg?v=1515952309796"/>

Ich möchte gerne Punkte auf einem Kreis erzeugen, die in immer gleichen Abständen zueinander sind und die Menge der Punkten vareabel ist. Ich nutze dafür Python und Tkinter:

Mein code dazu ist folgender:

from tkinter import *

import math

win=Tk()

win.title("Kreis")

win.geometry("1500x850")

win.configure(background="white")

leinwand = Canvas(win, width=1500, height=850, bg="white")

leinwand.place(x=100, y=100)

r1=100

p=8

wgrd= 360/float(p)

leinwand.create_oval(700-float(r1), 150-float(r1), 700+float(r1), 150+float(r1), fill="white", width=1, outline="black")

for i in range (0,int(p)):

   xp= (float(r1) * math.cos(wgrd*i))+700

   yp= (float(r1) * math.sin(wgrd*i))+150

   leinwand.create_oval(int(xp)-10, int(yp)-10, int(xp)+10, int(yp)+10, fill="red", width=1, outline="red")

Leider haben die roten Punkte bei mir nicht den gleichen Abstand und ich weiß nicht warum. Ich hoffe jmd. kann mir helfen :)

Danke im Voraus! :)

Bild zum Beitrag
Computer, Mathematik, programmieren, Geometrie, Python, GUI, Tkinter
c, c++ | LNK2019, Verweiß auf nicht aufgelöstes externes Symbol?

Natürlich habe ich, bevor ich hier frage, auch schon im Internet nach vorherigen ähnlichen Problemen gesucht und die gab es natürlich auch, aber keine der bereits vorhandenen Lösungen hat mir in meinem speziellen Fall wirklich geholfen.

Soweit wie ich es verstanden habe, meint dieser Error, dass man zB innerhalb einer Funktion einen Funktionsaufruf hat, von einer Funktion aus einer anderen Datei, diese findet der Linker aber nicht.

Es ist auch tatsächlich so, dass ich neben der Datei meiner main auchnoch andere Dateien verwende, nämlich genau zwei: header.h und header.cpp.

In der Headerdatei habe ich nur Deklarationen, in der cpp die entsprechenden Definitionen, beide Dateien habe ich im richtigen Verzeichnis und auch im Projekt-Explorer hinzugefügt, compilieren kann ich auch alles.

Bisher hatte es eigentlich immer funktioniert (unter der Voraussetzung dass ich die Dateien im Proj-Expl hinzugefügt habe)

Jetzt habe ich im selbigen namespace 4000 weitere Zeilen hinzugefügt, welche extern auch problemlos funktioniert haben und auch hier wird intellisense keine Fehler, aber sobald ich irgend eine der neuen Funktionen verwende (die alten gehen nach wie vor), wirft mir der Linker den Fehler LNK2019

(ConsoleApplication47.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""bool __cdecl MS::Experimental::save<int>(char const * const,int &)" (??$save@H@Experimental@MS@@YA_NQBDAAH@Z)" in Funktion "_main")

Zugegeben, es ist nicht ganz der gleiche namespace, aber der namespace befindet sich im gleichen namespace.

In der Headerdatei liegen die gleichen namespaces mit den Deklarationen und Visual Studio findet auch die dazugehörigen Definitionen.

Woran könnte es liegen? Muss ich vielleicht irgendwo in den Projekteinstellungen unter Linker eigentlich noch angeben, dass ich Funktionen aus der cpp nutze? Oder muss ich die Deklarationen mit dem Schlüsselwort extern machen?

Danke im Voraus schonmal für alle Antworten.

Hier noch für die die sich den Code durchlesen wollen (zumindest Teile)

Header:

namespace MS
{
  namespace Experimental
  {
    template <>  //Spezialisierung von vorheriger Funktion
    bool save(const char varName[], char &var);
  }
}

Cpp:

http://codepad.org/I6zkckyk       (ist zu lang)

Ich weiß, das ist alles im Moment noch nicht so schön gelöst, aber das ist ja auch noch nicht fertig :)

Alle Konstanten mit F_ sind im header definiert und werden erkannt.

Alle Funktionen mit F_ sind für den namespace von mir erstellte Funktionen, sie befinden sich über dieser Funktion.

Computer, Technik, programmieren, CPP, Technologie, Spiele und Gaming
Java Editor öffnet konsole nicht?

https://images.gutefrage.net/media/fragen/bilder/java-editor-oeffnet-konsole-nicht/0_big.png?v=1513813350759"/>

Ich habe folgendes problem:

Beim Programmieren ist mir aufgefallen das sich meine Konsole nicht öffnet sondern nur das Programm compeliert, dann habe ich ein altes Programm genommen, bei dem sich die Konsole öffnet, habe den selben code 1 zu 1 wie im bild zu sehen kopiert...warum öffnet sich, wenn ich das obere programm starte die konsole und beim unteren mit selben Inhalt nicht

Bild zum Beitrag
Computer, Technik, programmieren, Java, Technologie, Spiele und Gaming
Raute rekursiv programmieren?

Hallo ich habe hier ein Problem bei der Programmierung. Hier ist meine Aufgabenstellung:

Schreiben Sie eine Anwendung Raute.java, welche ein Raute ausgibt. Der Nutzer soll zuvor die Größe n der Raute eingeben können. Bei geraden Eingaben (n gerade) soll der Text: „Das Programm arbeitet nur mit ungeraden Werten.“ ausgegeben werden. Bei ungeraden Eingaben (n ungerade) soll eine Raute der Höhe n ausgegeben werden.

Das ist mein Quellcode (allerdings kommt nicht ganz das raus was ich brauche^^):

/* 
 * Erzeugen einer Raute-rekursiv
 */
 
import java.util.Scanner; 

public class Raute {
  
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
 
    // Eingabe
    System.out.println("Geben Sie die Größe Ihrer Raute ein(nur ungerade Werte):");
    int groesse = scan.nextInt();

    // Bedingung --> gerade Werte werden nicht
    // vom Programm bearbeitet (+ Ausgabe)
    if (groesse % 2 == 0) {
       System.err.println("Das Programm arbeitet nur mit ungeraden Werten!");
    }
    else {
       // Berechnung:
       resultat(groesse);
    }
  }

  public static String methode1(int groesse) {

    if (groesse > 0) {
       return "* " + methode1(groesse - 1);
    }
    else {
       return " ";
    }
  }

  public static String methode2(int groesse) {

    if (groesse > 0) {
      return "* " + methode1(groesse - 1);
    }
    else {
      return " ";
    }
  }

  public static String space(int groesse) {

    if (groesse > 0) {
      return " " + space(groesse - 1);
    } 
    else {
      return " ";
    }
  }

  public static void resultat(int groesse) {
    
    for (int i = 1; i < groesse; i++) {
      System.out.println(space(groesse - i));
      System.out.println(methode1(i));
    }

    for (int i = 0; i < groesse; i++) {
      System.out.println(methode2(groesse - i));
      System.out.println(space(i));
    }
  }
}

Z.B.: groesse = 5

Ausgabe:

*   

  

* *   

  

* * *   

* * * *  

 

* * *  

 

* *

  

*
Computer, programmieren, Java, Raute, Rekursiv

Meistgelesene Beiträge zum Thema Programmieren