[C++] Naruszenie ochrony pamięci

darek20
Użytkownik
Użytkownik
Posty: 874
Rejestracja: 4 paź 2010, o 08:16
Płeć: Mężczyzna
Lokalizacja: wszedzie
Podziękował: 248 razy
Pomógł: 10 razy

[C++] Naruszenie ochrony pamięci

Post autor: darek20 »

Dla \(\displaystyle{ s=1 \text{mln}}\) następuje naruszenie pamięci jak to zmienić?

Kod: Zaznacz cały

#include <iostream>
#include <algorithm> 
#include <vector>
using namespace std;
long long  tab[1000000];
long long t[1000000];
int main()
{
  int N;  
  int k;
  int j=1;
  int s=k/2;
    cin >> s;

int i,licznik=1;
for(i=0;i<2*s;i++) cin>>tab[i];

for(i=0;i<2*s;i++) 
{t[i]=tab[j];
j=j+2;}
 
sort(t,t+s);
for(j=0;j<s-1;j++)
  if(t[j]!=t[j+1]) licznik++;
cout<<licznik<<endl;
system("pause");
    return 0;
}

Ostatnio zmieniony 25 mar 2012, o 14:02 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Mruczek
Użytkownik
Użytkownik
Posty: 1114
Rejestracja: 26 paź 2008, o 19:43
Płeć: Mężczyzna
Podziękował: 23 razy
Pomógł: 157 razy

[C++] Naruszenie ochrony pamięci

Post autor: Mruczek »

Tablicę zadeklarowałeś do miliona, a wczytujesz do 2 milionów liczb.
darek20
Użytkownik
Użytkownik
Posty: 874
Rejestracja: 4 paź 2010, o 08:16
Płeć: Mężczyzna
Lokalizacja: wszedzie
Podziękował: 248 razy
Pomógł: 10 razy

[C++] Naruszenie ochrony pamięci

Post autor: darek20 »

a da sie to zmienić, bo ja nie wiem jak niestety
gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[C++] Naruszenie ochrony pamięci

Post autor: gryxon »

darek20 pisze:a da sie to zmienić, bo ja nie wiem jak niestety
...O.o
Zaadeklarować dwa razy większą tablice?
darek20
Użytkownik
Użytkownik
Posty: 874
Rejestracja: 4 paź 2010, o 08:16
Płeć: Mężczyzna
Lokalizacja: wszedzie
Podziękował: 248 razy
Pomógł: 10 razy

[C++] Naruszenie ochrony pamięci

Post autor: darek20 »

no wiem, a jak w takim razie jak napisać nowy program który by wykonywał to samo co ten? chodzi mi o sposób
zhtk
Użytkownik
Użytkownik
Posty: 13
Rejestracja: 2 kwie 2012, o 10:53
Płeć: Mężczyzna
Lokalizacja: Warszawa
Pomógł: 2 razy

[C++] Naruszenie ochrony pamięci

Post autor: zhtk »

Czy Ty wiesz co napisałeś?
1. Po co Ci nagłówek vector? Przecież z niego nie korzystasz.
2. Co to za nonsens:

Kod: Zaznacz cały

int k;
int s=k/2;
cin >> s;
3. Zmienna N nie jest wykorzystywana

Pomysł na program:
1. Załączasz nagłówek vector, algorithm, iostream
2. Wczytujesz co drugą liczbę do vectora
3. Sortujesz vectora
4. Wykorzystujesz tą pętlę co masz by zliczyć ilość powtórzeń.

Adnotacja do punktu 2:

Kod: Zaznacz cały

bool switch=true;
for(int i=0; i<s; ++i){
       int tmp;
       cin>>tmp;
       if(switch) vector.push_back(tmp);
       switch=!switch;
}
Vectora sortujesz w ten sposób:
sort(v.begin(),v.end());
ODPOWIEDZ