» Utilizator
Salut, vizitatorule!

SkullBox este o comunitate formata din programatori si administratori de sisteme sau retele care iti sta la dispozitie cand ai o problema legata de calculatoare. Daca esti un utilizator existent, autentifica-te.

Daca nu te-ai inregistrat inca pe forum, alatura-te noua astfel marind comunitatea si ajutandu-i pe cei care au nevoie de informatii.

Daca te-ai inregistrat dar inca nu ai primit codul de activare, il poti cere aici.




Autentifica-te cu numele de utilizator si parola pentru a putea posta pe forum sau pentru a accesa ariile disponibile doar utilizatorilor inregistrati.
» Promovam
» Parteneri » Statistici
  • 59774 de mesaje.
  • 7153 de topicuri.
  • 1002 de utilizatori.
  •  
  • BirthBaby e ultimul utilizator inregistrat.
[Detalii]

 
Pagini: [1]
Print
[BAC 2008][C]Varianta nr. 88 [932 afisari]
Archangel
*


Mesaje: 1391
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: 1391
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 ::
Reclama
VIP

Hosting

Mesaje: 25.90
OnlineOnline

WWW
 

   Pe ABCDomenii: 250MB spatiu + 20GB trafic + 5 subdomenii = 0.95 €
 
 

The problem with troubleshooting is that trouble shoots back.
Azi 
Pages: [1]
Print
SkullBox Forum  |  Development  |  Programe facute de userii forumului  |  Probleme Rezolvate  |  Topic: [BAC 2008][C]Varianta nr. 88
Jump to: