Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Unde am gresit  (Citit de 1409 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
fulgerulnegru
Client obisnuit
**

Karma: -17
Deconectat Deconectat

Mesaje: 92



Vezi Profilul
« : Iulie 19, 2010, 11:42:49 »

Problema este din arhiva si anume:Numere prime.
Raport evaluator
Compilare:
user.cpp:38:2: warning: no newline at end of file
user.cpp: In function 'int main()':
user.cpp:16: warning: 'd' is used uninitialized in this function

Test Timp executie Memorie folosita Mesaj Punctaj/test
1 0ms 8kb Killed by signal 11(SIGSEGV). 0
2 0ms 12kb Killed by signal 11(SIGSEGV). 0
3 4ms 8kb Killed by signal 11(SIGSEGV). 0
4 0ms 8kb Killed by signal 11(SIGSEGV). 0
5 0ms 8kb Killed by signal 11(SIGSEGV). 0
6 4ms 12kb Killed by signal 11(SIGSEGV). 0
7 0ms 8kb Killed by signal 11(SIGSEGV). 0
8 0ms 12kb Killed by signal 11(SIGSEGV). 0
9 0ms 16kb Killed by signal 11(SIGSEGV). 0
10 0ms 8kb Killed by signal 11(SIGSEGV). 0
Punctaj total 0
Rezolvarea mea:

Cod:
#include <iostream>
#include <math.h>
using namespace std;
long int prime(long int n){
if(n>2){
for(long int i=2;i<=sqrt(n);i++){
if(n%i==0)
return false;
}
}
return true;
}
int main(){
long int l,k,c;
long int d;
long int a[d];
long int b[k];
cin>>k;
for(l=1;l<=k;l++){
for(d=2;d<=pow(10,13);d++){
   a[d]=d;
if(prime(a[d]))
b[l]=a[d];
}
}
for(c=2;c<pow(10,5);c++){
b[k]=b[k]+c;
for(l=1;l<=k;l++){
if(b[k]%a[l]==0)
break;
if(!prime(b[k])){
cout<<b[k];
break;
}
}
}
return 0;
}
Modificat de Moderator: Foloseste tag-ul [ code ] ... [ / code ] atunci cand scrii cod sursa
Cum o pot remedia?
« Ultima modificare: Iulie 19, 2010, 17:37:11 de către Mircea Dima » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #1 : Iulie 19, 2010, 11:46:26 »

In primul rand nu e solutia optima, citeste mai multe despre Ciurul lui Eratosthenes, si in al doilea rand cred ca ti se trage de la functia pow, rezultatul fiind foarte mare nu poate fi retinut pe nici un tip de date cunoscut .
[LE] Cred ca ti se trage de la long int a[d] si b[k], intre paranteze trebuie sa pui o constanta, nu o variabila, si sa fie cat se poate de mare, ca sa depaseasca cel mai mare numar posibil. Spre exemplu, daca ai 1 <= N <= 100, si spune sa se citeste un vector V de N elemente, vector o sa-l declari asa :
Cod:
int V[105]
De ce 105 ? Pentru ca nu se declara niciodata la limita, deoarece pot aparea unele "erori", sau neatentii din partea programatorului. Elementele din vector sunt indexate de la 0 la 104, deci daca as fi pus V[100] ar fi fost pana la 99, si daca as fi apelat V[100] as fi primit acea eroare, care reprezinta un stack overflow, adica accesarea unui element neexistent dintr-un vector.

 
« Ultima modificare: Iulie 19, 2010, 12:06:14 de către Simoiu Robert » Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #2 : Iulie 19, 2010, 23:57:24 »

Problema are deja un topic. Te rog posteaza acolo.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines