java ergebnis unlogisch?

2 Antworten

Naja, Du wirst halt einen Überlauf dabei bekommen. Warum dann gerade diese Zahl herauskommt, liegt am konkreten Prozessor und dessen internem Multiplikationsalgorithmus. Grob gesagt ist das Ergebnis "undefiniert" und kann bei Multiplikation/Division auf verschiedener Hardware auch unterschiedlich ausfallen. Bei Addition/Subtraktion hingegen kann man hingegen die Ergebnisse deterministisch vorhersagen.

Genau, hast es quasi schon selber beantwortet. Int und long haben nur einen bestimmten Raum in denen sie Positive bzw. negative Zahlen ausgeben können. Wenn jetzt der positive Raum übertroffen wird, fängt der Computer bei der niedrigsten Zahl an weiter zu zählen.  2 147 483 647 wenn du darauf eine 1 addierst bist du bei -2 147 483 648 

Daher musst du deine Rechenoperation im Long ausführen. 

LG Hoffe ich konnte dir Helfen

Wie realisiere ich eine Funktion, die eine Zufallszahl zurückgibt(c++)?

Hallo, eine Funktion int myRandomNumber(int min,int max) soll eine zufällige Zahl zwischen int min und int max (einschließlich den Grenzen!) zurückgeben... wie macht man das auf einfache Art und Weise?

...zur Frage

wie erstellt man einen Booleschen Ausdruck mit einer int Variablen x für Java?

Erstellen Sie zu folgenden Bedingungen einen geeigneten Booleschen Ausdruck der für eine int-Variable x eine Eigenschaft testet.

i) -7<= x <= 7

ii) Die Zahl x ist eine gerade Zahl, die nicht durch drei teilbar ist.

iii) Die Zahl x ist ein Schaltjahr. Ein Schaltjahr ist durch 4 teilbar, darf aber nicht gleichzeitig durch 100 teilbar sein. Wenn es aber durch 400 teilbar ist, dann ist es trotzdem ein Schaltjahr. Beispiel: 1992 und 2000 sind Schaltjahre, aber 1800 nicht.

...zur Frage

Mein Java Programm gibt "Primzahl" 9 aus?!?!?!?!?

int zahl, Limit, P;

zahl = 1;                        //Primzahlen von...
Limit = 10;                      //...bis                     
boolean Prim = true;             // Prim = true wenn "zahl" eine Primzahl ist

System.out.println("Die Primzahlen zw. den Zahlen " + zahl + " und " + Limit + " sind: ");

while (zahl<=Limit) {            // solang "zahl" kleiner als "Limit" ist 
  if (zahl%2 == 0) {
    Prim = false; 

  } 
  if (Prim) {
    System.out.println(zahl);

  } 
  else{

    Prim = true;

  }
  zahl++;
}
...zur Frage

ASCII zu Integer und kontrolle der ASCII Zeichen in C?

Hallo

Ich weiss man kann die meisten Sachen einfach herraussuchen was C angeht aber leider.... verstehe ich die Aufgaben nicht ganz. Erstmal etwas Kontext:

Ich bin ein Student im 2 Semester für technische Informatik und hab eine Übungsaufgabe bekommen die ich leider nicht ganz verstehe....

Das ist zwar nicht pflich doch würde ich es gerne wissen wie man diese Aufgabe löst... hoffe man kann mir helfen.

void emain(void* arg) 

{ long int zahl1; long int zahl2; long int ergebnis; char string_1[100]; char string_2[100]; int length1,length2;

INIT_BM_WITHOUT_REGISTER_UI;


putstring("Bitte 1. Zahl eingeben:\n");
getstring(string_1);
zahl1=stringtoi(string_1);


putstring("Bitte 2. Zahl eingeben:\n");
getstring(string_1);
zahl2=stringtoi(string_1);

length1 = Len(string_1);
length2= Len(string_2);

if(length1==10){
    if (string1 <=00 && >=09){
        putstring("Erfolgreicher Test!");
    }
}


ergebnis= zahl1 * zahl2;

itostring(ergebnis, string_1);

copystring("Produkt beider Zahlen ist:\n",string_2);
appendstring(string_1, string_2);
putstring (string_2); 

END;

}

Die Aufgabenstellung hänge ich noch dran Vielen Dank

Ps. Das alles wäre in C... vergessen zu schreiben.. danke

...zur Frage

MYSQL Between und AND?

Ich möchte aus einer Tabelle alle Einträge, die zwischen zwei Werten (zb. 1000 - 3000) liegen. Das funktioniert soweit auch. Nun habe ich aber auch Einträge die den Wert 0 haben. Wie kann ich jetzt am besten alle Einträge abfragen, die zwischen 1000-3000 liegen und den Wert 0 haben?

...zur Frage

Mit Java Daten zu MySQL Datenbank hinzufügen

Ich habe ein Programm geschrieben, das Primzahlen errechnet. Ich würde diese nun auch gerne in einer MySQL Datenbank abspeichern, weiß aber nicht genau wie ich das anstellen soll (eigentlich habe ich überhaupt keine Ahnung :) ).

Hier das ursprüngliche Programm:

public class Primzahlen {
 public static void main (String[] args) {
  double d1;
  int[] p;
  p = new int[350000000];
  p[0] = 2;
  int a = 0;
  System.out.print("2, ");

  for(int Zahl = 3; Zahl < 2000000000; Zahl++) {

   for(int  b = 0; b < 2000000000; b++) {
    d1 = (double) Zahl/p[b];
    int i1 = (int) d1;
    //System.out.println(d1-i1 + "  Ergebnis " + Zahl+ "/" + p[b] + ": " + d1 + "  Zahl: " + Zahl + "  Divisor:  " + p[b] + "    " + p[0] + p[1] + p[2] + p[3]);

    if ((d1 - i1) == 0.0) {
     //System.out.println(Zahl + " ist keine Primzahl, sie ist durch " + p[b] + " teilbar.");
     break;
    } else {
     if((p[b]*p[b]) > Zahl) {
      System.out.print(Zahl + ", ");
      a++;
      p[a] = Zahl;
      break;

     }
    }
   } 
  }
 }
}

Und hier mein kläglicher Versuch die Zahlen in der Datenbank zu speichern:

import java.sql.Connection;
public class Primzahlen {
 public static void main (String[] args) {
  Connection con = DriverManager.getConnection("jdbc:mysql://localhost:4001?user=schueler&password=0");
  stmt = con.creatStatement();

  double d1;
  int[] p;
  p = new int[1000];
  p[0] = 2;
  int a = 0;
  System.out.print("2, ");

  for(int Zahl = 3; Zahl < 2000; Zahl++) {

   for(int  b = 0; b < 2000; b++) {
    d1 = (double) Zahl/p[b];
    int i1 = (int) d1;
    //System.out.println(d1-i1 + "  Ergebnis " + Zahl+ "/" + p[b] + ": " + d1 + "  Zahl: " + Zahl + "  Divisor:  " + p[b] + "    " + p[0] + p[1] + p[2] + p[3]);

    if ((d1 - i1) == 0.0) {
     //System.out.println(Zahl + " ist keine Primzahl, sie ist durch " + p[b] + " teilbar.");
     break;
    } else {
     if((p[b]*p[b]) > Zahl) {
      System.out.print(Zahl + ", ");
      a++;
      p[a] = Zahl;
      stmt.executeQuery(INSERT INTO schueler_primzahlen.primzahlen (Primzahl Nr. , Wert);
      VALUES (a, Zahl);


      break;

     }
    }
   } 
  }
 }
}

Ich wäre sehr froh, wenn jemand mich von den Qualen des "Herumprobierens" erlösen könnte.

...zur Frage

Was möchtest Du wissen?