Program w Delphi

robin5hood
Użytkownik
Użytkownik
Posty: 1676
Rejestracja: 2 kwie 2007, o 14:43
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 178 razy
Pomógł: 17 razy

Program w Delphi

Post autor: robin5hood »

Kto napisze program w Delphi który z liczb wypisze liczby których suma cyfr jest liczbą pierwsza.
Rafal88K
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 15 mar 2007, o 16:52
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 28 razy
Pomógł: 54 razy

Program w Delphi

Post autor: Rafal88K »

Polecam na początek kurs Delphi:



Sam próbuj, a ktoś Ci tutaj pomoże jak będziesz miał w czymś problem, ale póki co napisałem coś takiego w C++:

Kod: Zaznacz cały

#include <iostream>
using namespace std;

void pierwsza(int i)
{
     int liczba=i, a=0, suma=0, ile=0;
     bool pierwsza;
     do {
        a=i%10;
        suma+=a;
     } while (i /= 10);
     
     if(suma>1)
     {
        pierwsza=true;
        for(int i=2; i<=suma; ++i)
        { 
          if(suma%i==0)
             ++ile;
          if(ile>1)
          {
             pierwsza=false;
             break;
          }
        }
     }
     
     if(pierwsza)
        cout << "Suma cyfr [" << suma << "] liczby " << liczba << " jest liczba pierwsza." << endl;
}

int main()
{
    for(int i=2; i<=10000; ++i)
        pierwsza(i);
    cout << endl;
    system("pause");
    return 0;
}
lub wersja bardziej wydajniejsza może nie dużo ale zawsze warto optymalizować

Kod: Zaznacz cały

#include <iostream>
using namespace std;

void pierwsza(int i)
{
     int liczba=i, a=0, suma=0;
     int liczbyPierwsze[11]={2,3,5,7,11,13,17,19,23,29,31}; // ponieważ max. suma cyfr w tym przedziale to 36
     bool pierwsza=false;
     do {
        a=i%10;
        suma+=a;
     } while (i /= 10);
     
     for(int i=0; i<11; ++i)
     {
        if(suma==liczbyPierwsze[i])
           pierwsza=true;
     }
     
     if(pierwsza)
        cout << "Suma cyfr [" << suma << "] liczby " << liczba << " jest liczba pierwsza." << endl;
}

int main()
{
    for(int i=2; i<=10000; ++i)
        pierwsza(i);
    cout << endl;
    system("pause");
    return 0;
}
Napisałbym Ci w Delphi ale nawet nie mam go zainstalowanego, a dasz sobie rade z przerobieniem tego na Delphi, a jak nie to pytaj
robin5hood
Użytkownik
Użytkownik
Posty: 1676
Rejestracja: 2 kwie 2007, o 14:43
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 178 razy
Pomógł: 17 razy

Program w Delphi

Post autor: robin5hood »

Akurat w C++ to tez miałem ten program
Rafal88K
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 15 mar 2007, o 16:52
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 28 razy
Pomógł: 54 razy

Program w Delphi

Post autor: Rafal88K »

To teraz masz 2, a nawet 3;) Co to za problem przerobić go na Delphi? Wiesz już jak to zrobić to nie wiem w czym tkwi problem?

Napisałem, żebyś na początku sie nauczył podstaw Delphi-ego. Weź jakiś dobry kurs i do roboty.
robin5hood
Użytkownik
Użytkownik
Posty: 1676
Rejestracja: 2 kwie 2007, o 14:43
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 178 razy
Pomógł: 17 razy

Program w Delphi

Post autor: robin5hood »

chodzilm na studia podyplomowe i miałem kurs w delphi ale mi wszystko wyleciało bo stosowałem zasade 4 z.

[ Dodano: 30 Maj 2007, 11:26 ]
w C++ to znalazłem ten program w necie
Rafal88K
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 15 mar 2007, o 16:52
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 28 razy
Pomógł: 54 razy

Program w Delphi

Post autor: Rafal88K »

Ale tutaj nie trzeba nic specjalnego umieć, mówię Ci pół godziny max godzina i napiszesz go sam, masz już podany sposób rozwiązania teraz tylko implementacja w Delphi
- wstaw sobie komponent TMemo.
- dodawanie nowej lini to: Memo1.Lines.Add('cos');
- zmienne definiujesz pod słowem kluczowym var, które wstawiasz pod procedure
- pętla for

Kod: Zaznacz cały

for I := 2 to 10000 do begin
{ cos tam }
end;
- możesz również użyć pętli repeat

Kod: Zaznacz cały

repeat
x:=x+1;
until x<10
- przypisanie to :=

Tyle Ci powinno wystarczyć ;)
ODPOWIEDZ