» Utilizator
LAMP
» Parteneri» De citit» Recomandari» Taskuri securitate » Statistici
  • 65486 de mesaje.
  • 7732 de topicuri.
  • 1231 de utilizatori.
  •  
  • Kopotosa e ultimul utilizator inregistrat.
[Detalii]

 

| |
Pagini: [1]
Print

[BAC 2008][C]Varianta nr. 88 [1061 afisari]

Archangel
*


Mesaje: 1392
OfflineOffline

WWW



erata:

Logged

Archangel on deviantART | Archangel on Flickr |
"Daca voi nu ma vreti, eu va vreu!"
03-05-2008, 12:17 Twitt ::
boogey69
*


Mesaje: 56
OfflineOffline


Problema 3:
Code:
void numar(long n, short c1, short c2, long &x)
{
long aux;
aux=x=0;
while (n>0)
{
if (n%10<c1 || n%10>c2)
       aux=aux*10+n%10;
n=n/10;
}
while (aux>0)
{
x=x*10+aux%10;
aux=aux/10;
}
}
Nu am gasit alta metoda de a crea numarul x, decat ca rasturnat al lui aux, care se forma in urma prelucrarii cifrelor lui n. Daca exista, astept o rezolvare mai buna.

Problema 4:
Code:
#include<fstream.h>
#include<conio.h>

int prim(int x)
{
int i,g=1;
for (i=2; i<=x/2 && g; i++)
    if (x%i==0) g=0;
return g;
}

void main()
{
clrscr();

int x,p,n; p=n=0;
i
fstream f("bac.txt");
while (f>>x)
{
if (prim(x))
if (x>p)
{
p=x;
n=1;
}
else if (x==p)
n++;
}
f.close();

cout<<p<<' '<<n;

getch();
}
In ce consta eficienta nu stiu, oricum trebuie sa citesc toate numerele din fisier si sa vad daca sunt prime. Probabil este vorba despre felul in care compar numerele: daca nu sunt prime nu le mai folosesc la nimic, iar daca sunt prime verific daca valoarea este maxima si trebuie sa incep sa numar din nou, sau daca este egala cu cea precedenta si trebuie sa incrementez contorul.

Edit: Problema 4:
Code:
#include<fstream.h>
#include<conio.h>

int prim(int x)
{
int i,g=1;
for (i=2; i<=x/2 && g; i++)
    if (x%i==0) g=0;
return g;
}

void main()
{
clrscr();

int a[100], i, x, g=0;
for (i=0; i<100; i++) a[i]=0;

ifstream f("bac.txt");
while (f>>x)
{
a[x]++;
}
f.close();

for (i=99; i>=0 && g==0; i--)
if (prim(i) && a[i]>0)
{
cout<<i<<' '<<a[i];
g=1;
}

getch();
}
Am revenit cu o varianta mai buna, probabil varianta de rezolvare ceruta de corectori. Mi-a adus aminte Nuker de problema rezolvata anterior in acelasi fel, am modificat-o si am postat rezolvarea Big grin Eficienta consta in folosirea unui numar semnificativ mai mic de comparatii si verificari Tongue
Las si rezolvarea de dinainte, poate ajuta cu ceva pe cineva.
Logged
03-05-2008, 13:03 Twitt ::
Archangel
*


Mesaje: 1392
OfflineOffline

WWW

@boogey, la problema 3 se poate rasturna n-ul de la inceput si apoi pe masura ce extragem cifrele, verificam daca apartin intervalului si daca da, returnam si la sfarsit obtinem numarul, dar e cam acelasi lucru. Altfel poate daca extragem cifrele lui n intr-un vector (tot in ordine inversa vor fi), verificam pentru fiecare cu un FOR descrescator si cand returneaza vor fi in ordinea care trebuie...
Logged

Archangel on deviantART | Archangel on Flickr |
"Daca voi nu ma vreti, eu va vreu!"
05-05-2008, 13:06 Twitt ::
Pagini: [1]
Print
SkullBox Forum  |  Development  |  Programe facute de userii forumului  |  Topic: [BAC 2008][C]Varianta nr. 88