infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: CHERA Laurentiu din Octombrie 07, 2008, 00:56:22



Titlul: Array size too large!
Scris de: CHERA Laurentiu din Octombrie 07, 2008, 00:56:22
Salut!
Am incercat sa declar un tablou int[250][250], dar nu reusesc sa ii aloc memoria prin nicio metoda gasita pe net. Am citit si despre malloc, si calloc dar tot nu reusesc! As dori sa imi lasati un exemplu in care este declarat un tablou care depaseste memoria.
Va multumesc! :)


Titlul: Răspuns: Array size too large!
Scris de: Bondane Cosmin din Octombrie 07, 2008, 09:29:58
In primul rand, treci pe un compiler pe 32 de biti. (scapa de borland)
O alta metoda de declarare:

Cod:
int ** a = new int* [250];
for ( int i = 0; i < 250; i++ )
          a[i] = new int [250];

delete [] a;

Sper sa nu fi gresit ceva.


Titlul: Răspuns: Array size too large!
Scris de: Pripoae Teodor Anton din Octombrie 07, 2008, 10:54:46
sau
Cod:
int ** a ;
a=(int**)malloc(251*sizeof(int));
for ( int i = 0; i < 250; i++ )
          a[i] = malloc(251*sizeof(int));

dar vezi ca nu ti le face si "0" : au valori random. Ca sa le faci 0 fa asa:

uite un mic program
Cod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int **a;
int main(void){
int i,j;
freopen("out.txt","w",stdout);
a=(int**)malloc(251*sizeof(int));
for (i=1;i<=250;++i)
a[i]=(int*)malloc(251*sizeof(int));
for (i=1;i<=250;++i)
memset(a[i],0,251*sizeof(int));
for (i=1;i<=250;++i){
for (j=1;j<=250;++j)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}


Titlul: Răspuns: Array size too large!
Scris de: CHERA Laurentiu din Octombrie 07, 2008, 18:37:58
Functioneaza! Multumesc!
Dar daca as vrea sa atribui un numar foarte mare unei variabile de exemplu a =10000000000; Cum ar trebui sa aloc memoria?


Titlul: Răspuns: Array size too large!
Scris de: Herpesius din Octombrie 07, 2008, 18:53:37
Declari variabile long long (valabile numai pe un compiler de 32bits). O variabila declarata long long are 8 bytes.

Poti sa incerci si in borland dar mai mult ca sigur ca nu merge
Cod:
#include <iostream.h>
int main(){
cout<<sizeof(long long)<<"\xA";
return 0;}

Daca afiseaza pe ecran 8 atunci e ok, daca nu atunci nu ai cei face.


Titlul: Răspuns: Array size too large!
Scris de: CHERA Laurentiu din Octombrie 07, 2008, 19:15:42
Ok! Multumesc!  :D Pe long long am obtinut 4 in schimb pe long double am obtinut 10;  :roll:


Titlul: Răspuns: Răspuns: Array size too large!
Scris de: Valentin Stanciu din Octombrie 13, 2008, 18:07:34
Declari variabile long long (valabile numai pe un compiler de 32bits). O variabila declarata long long are 8 biti.
Cred ca te referi la 8 octeti!


Titlul: Răspuns: Răspuns: Array size too large!
Scris de: Herpesius din Octombrie 28, 2008, 17:17:54
Declari variabile long long (valabile numai pe un compiler de 32bits). O variabila declarata long long are 8 biti.
Cred ca te referi la 8 octeti!

Da, scuze. 8 octeti/bytes. am modificat

Cod:
long long ago; /* in a galaxy far far away */
:P