Anonymní profil Nikolishe – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Nikolishe – Programujte.comAnonymní profil Nikolishe – Programujte.com

 

Příspěvky odeslané z IP adresy 86.61.166.–

Nikolishe
Pascal › Hledání prvočísel v matici -…
26. 12. 2013   #185673

Děkuji moc všem :-)) od všech jsem si něco vzala a konečně se mi povedlo projekt dokončit. Kód na určování prvočísla není zrovna efektivní ale přepočítavala jsem 4x součty a výsledek byl správně.

Tady dávám konečný kód:

program project1;

const
  M = 10;
  N = 10;

type
  matice = array [1..M,1..N] of integer;

var
  i,j,D,soucet:integer;
  A:matice;

procedure napln (var x:matice);
begin

  for i := 1 to M do
        for j := 1 to N do
           x[i,j] := random(99)+1;

end;
procedure vypis (x:matice);
begin
  for i := 1 to M do
       begin
        for j := 1 to N do
           write(x[i,j] :3);
        writeln;
       end;
end;
function prvocislo(x:matice):integer;
begin
  soucet:= 0;
  for i := 1 to M do
        for j := 1 to N do
            if x[i,j] <= 0 then
            else if x[i,j] = 1 then
            else begin
                D := 2;
                while x[i,j] mod D <> 0 do
                        D := D + 1;
                if D = x[i,j] then
                begin
                soucet:=soucet + x[i,j];
                end;
            end;
end;

begin

   randomize;
   napln(A);
   vypis(A);
   writeln;
   prvocislo(A);
   writeln('Soucet prvocisel je ', soucet);
   readln;

end.

Nikolishe
Pascal › Hledání prvočísel v matici -…
26. 12. 2013   #185665

Tak jsem zjistila že ten kód v tom odkazu je špatně, protože tvrdí i na složené číslo že je prvočíslo, takže jsem opět na začátku :-( Prosím Vás kdyby někdo měl nějaký nápad poraďte, už to pomalu začínám vzdávat

Nikolishe
Pascal › Hledání prvočísel v matici -…
26. 12. 2013   #185662

Děkuji. Předělala jsem ten uvedený program na funkci, všechno mi funguje tak jak má, tak jsem se pustila do předělávání mojí práce, ale nedaří se mi s maticí.

Při spuštění mí program vypíše(sečte) poslední číslo v matici pokud je zrovna prvočíslo a ostatní čísla v matici mi ignoruje. Nevím jak napsat kód aby mi vyhledával s sčítal prvočísla v celé matici.

Útržek mého kódu vypadá takto:

var
  i,j,D,pocet,soucet:integer;
  A:matice;

function prvocislo(x:matice):integer;
begin
  prvocislo:= x[1,1];
  for i := 1 to M do
        for j := 1 to N do
            if x[i,j] <= 0 then
            else if x[i,j] = 1 then
            else begin
                pocet := 0;
                D := 2;
                soucet:=0;
                while (pocet = 0) and (D < sqrt(x[i,j])) do begin
                        if x[i,j] mod D = 0 then pocet := pocet + 1;
                        D := D + 1;
                        end;
                if pocet = 0 then
                begin
                soucet:=soucet + x[i,j];
                end;
            end;
end;

begin

   randomize;
   napln(A);
   vypis(A);
   writeln;
   prvocislo(A);
   writeln('Soucet: ', soucet);
   readln;

end.

Nikolishe
Pascal › Hledání prvočísel v matici -…
26. 12. 2013   #185641

Dobrý den, 

chtěla bych vás požádat o pomoc. Můj úkol zní: Naplňte matici A náhodnými čísly. Určete sumu všech prvočísel v matici. Matici a sumu vypište.

Naplnit a vypsat matici mi problém nedělá, jenže nemůžu se dostat přes hledání prvočísel v matici za pomocí funkce. Jsem v tom nová a nemohla jsem nic najít co by mi pomohlo, tak prosím o popostrčení :-)

můj kód vypadá zatím takto: (začátek funkce vypadá dost šíleně ale ta matice mi dělá opravdu problém :-( )

program project1;

const
  M = 10;
  N = 10;

type
  matice = array [1..M,1..N] of integer;

var
  i,j,:integer;
  A:matice;
procedure napln (var x:matice);
begin

  for i := 1 to M do
        for j := 1 to N do
           x[i,j] := random(100);

end;
procedure vypis (x:matice);
begin
  for i := 1 to M do
       begin
        for j := 1 to N do
           write(x[i,j],' ');
        writeln;
       end;
end;
function prvocislo(x:matice):integer;
begin
     for i:=1 to M do
     for j:=1 to N do
     begin
     if x[i,j] <= 1 then
     else if x[i,j] mod 2 = 0 then
     else if x[i,j] mod 3 = 0 then
     else if x[i,j] mod 5 = 0 then
     else if x[i,j] mod 7 = 0 then
     else
     writeln(x[i,j]);
     end;
end;

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý