Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

zbroj prostih i zamjena

[es] :: C/C++ programiranje :: C/C++ za početnike :: zbroj prostih i zamjena

[ Pregleda: 1285 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dalmasica
Slučajna prolaznica
Croatia

Član broj: 107777
Poruke: 35
*.sava.sczg.hr.



Profil

icon zbroj prostih i zamjena15.11.2009. u 23:11 - pre 175 meseci
1.Napisite program koji kao unos prima paran prirodan broj n > 2 i provjerava da li se n moze prikazati kao zboj dva prosta
broja. Ako trazeni rastav postoji, onda ga treba i ispisati. Ako postoji vise rastava, svejedno je koji se ispisuje. Na primjer
za n = 4 program treba ispisati 4 = 2 + 2, a za n = 10 program treba ispisati 10 = 3 + 7 ili 10 = 5 + 5.
Uputa: Slozite for() petlju u kojoj varijabla i “ide” od 2 do n − 2; u petlji se provjerava jesu li i i n-i prosti brojevi.


2.Napisati program koji ce ucitati ulazni double broj, a zatim ispisati onaj broj koji bi nastao zamjenom cijelog i decimalnog
dijela. Primjerice, ukoliko je ulazni broj bio 75.125, program ce ispisati broj 125.75.
Napomena: Mozete pretpostaviti da ulazni broj nije veci od 9999 i da nema vise od 4 decimale.

pomagajte!!! ;-))
Blago onome ko zna da ne zna, a hoće da zna
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: zbroj prostih i zamjena16.11.2009. u 09:47 - pre 175 meseci
Citat:
pomagajte!!! ;-))


1. Složi for() petlju u kojoj varijabla i “ide” od 2 do n − 2; u petlji proveravaj jesu li i i n-i prosti brojevi. Da li znaš kako se proverava da li je neki broj prost?

2. Ovo može da se reši i preko stringa i numerički. Preko stringa verovatno nije ono što se traži. Evo uputstva za numeričko rešenje. Razdvoj broj na celobrojni i decimalni sastojak. Postoje gotove funkcije ali dovoljno je da uradiš "int celobrojni_deo = pocetni_broj", i već imaš celobrojni deo. Decimalni deo je prosto "double decimalni_deo = pocetni_broj - celobrojni_deo".

E sad, celobrojni deo prvo prenesi u double izlazni_decimalni_deo i u petlji deli ovaj broj sa 10 sve dok je veći ili jednak 1. Tako dobijaš izlazni decimalni deo.

A početni decimalni deo u petlji množi sa 10 sve dok ne dobiješ broj koji nema decimalni deo (petlju ponavljaš dokle god je "izlazni_celobrojni_deo - (int)izlazni_celobrojni_deo != 0")

Krajnji rezultat je prosto izlazni_celobrojni_deo + izlazni_decimalni_deo.
 
Odgovor na temu

dalmasica
Slučajna prolaznica
Croatia

Član broj: 107777
Poruke: 35
*.sava.sczg.hr.



Profil

icon Re: zbroj prostih i zamjena16.11.2009. u 13:39 - pre 175 meseci
za drugi si htio reć da cijeli i decimalni dio odvojim na sljedeći način:

Code:
#include <stdio.h>
#include <conio.h>
double n,d;
int c;
main()
{printf("Upiši decimalni broj: ");
scanf("%d",&n);
c=n;
d=n-c;
printf(" cijeli dio je %d a decimalni %lf",c,d);
getch();
      }


međutim ispicuje mi c=0, a d=0.0000, tj. netočno!!!
Blago onome ko zna da ne zna, a hoće da zna
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: zbroj prostih i zamjena16.11.2009. u 14:02 - pre 175 meseci
Kad bi debagovala program korak po korak videla bi da već broj n ne odgovara onome što korisnik unese. Format za double u scanf funkciji nije %d, nego %lf (long float). Isto kao za printf
 
Odgovor na temu

dalmasica
Slučajna prolaznica
Croatia

Član broj: 107777
Poruke: 35
*.sava.sczg.hr.



Profil

icon Re: zbroj prostih i zamjena16.11.2009. u 15:22 - pre 175 meseci
Code:
#include <stdio.h>
#include <conio.h>
double n,d,nd,nc;
int c;
main()
{printf("Upiši decimalni broj");
scanf("%lf",&n);
c=n;
d=n-c;
nd=c;
while(nd>=1)
{nd=nd/10.;}

do{
d=d*10;
nc=d;
}while(nc-(int)nc!=0);

printf("Traženi broj je:%lf",nc+nd);

getch();
}




Code:
#include <stdio.h>
#include <conio.h>
int n,p,q,prost1=1,prost2=1,i,j;
main()
{scanf("%d", &n);

for(i=2;i<=n-2;i++)
{
  
  for(j=2;j<=i/2;j++)
  {          if(i%j==0 && i>2)
  prost1=0;
  }

  for(j=2;j<=(n-i)/2;j++)
  {      if((n-i)%j==0 && i>2)
  prost2=0;
  }
if (prost1 && prost2)
p=i;  
}

if(prost1 && prost2) 
 printf("Broj %d= %d + %d",n,p,n-p);
else
printf("Broj se ne može prikazati kao zbroj prostih brojeva");

getch();
}



što nije uredu kod ova dva koda???



Blago onome ko zna da ne zna, a hoće da zna
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: zbroj prostih i zamjena16.11.2009. u 16:36 - pre 175 meseci
Problem u prvom kodu je što se float/double poredi direktno sa nulom. Uvek zaboravim na taj detalj. Dakle, u uslovu druge while petlje umesto !=0 stavi >.000001

U drugom kodu ima tri problema. Prvo, promenljive prost1 i prost2 moraju da se inicijalizuju na 1 na početku glavne petlje, jer će već u drugoj iteraciji jedna od njih biti nula, i nikad se neće naći rešenje. Drugo, vezano za ovo prvo, čim pronađeš rešenje moraš da prekineš rad, jer će inače u sledećoj iteraciji opet neka od ove dve promenljive postati nula. Znači ako su na kraju petlje i jedan i drugi različiti od nule onda p=i, i break. Treće, dve unutrašnje petlje moraju da budu identične, osim što se u jednoj koristi i, a u drugoj n-i. Tebi je i>2 u drugoj ptelji, a treba n-i>2.

Kada bi debagovala korak po korak, moguće je da bi i sama utvrdila gde su bili problemi.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: zbroj prostih i zamjena

[ Pregleda: 1285 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.