Problem

1/1

Dinamik Dizi: Başlangıç

Theory Click to read/hide

Dinamik diziler
Dizilerle ilgili önceki derslerde, şöyle bir dizi oluşturmaya baktık:
 
sabit int Nmaks = 1000; int A[Nmaks]; veya bu: intA[1000];
Bu yöntem bir statik dizi oluşturur. Dezavantajlarından biri, program çalışırken dizi öğelerinin boyutunun ve türünün değiştirilememesidir. 
Yukarıdaki örnekte, 1000 öğelik statik bir dizi oluşturulur. Yani, bellekte int türünde 1000 öğeyi ( int türünde 1000 öğelik bir dizi) depolamak için bir alan ayrılır. Dizinin başlangıcının adresi  A değişkeninde saklanır. 1000'den fazla elemandan oluşan bir diziyi işlemeniz gerekiyorsa, açıklamayı değiştirmeniz ve programı yeniden derlemeniz gerekecektir. Küçük dizilerle çalışırken, statik bir dizi için ayrılan belleğin çoğu boşa gidecektir.

Bilgisayar belleğinin verimli kullanımı için dinamik olarak tahsis edilmesi gerekir. Başka bir deyişle, program yürütülürken (yeni nesneler yaratılırken) nesneler için bellek tahsis edilmelidir.

C++'da  yeni ve silme işlemleri, bilgisayar belleğini dinamik olarak ayırmak için tasarlanmıştır.  İşlem yeni  boş hafıza alanından hafıza ayırır ve silme işlemi ayrılan hafızayı serbest bırakır. 
 
Dinamik değişken oluşturma ve silme örneği
int *A = yeni int; // int türünde bir nesne yarat *A = 15; // nesne başlatma bir işaretçi (*) aracılığıyla gerçekleşir // başlatma hemen yapılabilir // dinamik bir nesne bildirirken int *B = yeni int(25); cout İşlem yeni verilen türde bir nesne oluşturur, bunun için bellek ayırır ve verilen bellek konumuna doğru türde bir işaretçi döndürür. Bellek tahsis edilemiyorsa, örneğin boş alan yoksa, boş bir işaretçi döndürülür, yani işaretçi 0 değerini döndürür. Bellek ayırma, herhangi bir veri türü için mümkündür: int float , doublechar vb.

Aynı şekilde, C++'da dinamik bellek ayırmayı kullanacak bir dinamik dizi oluşturabilirsiniz. Program çalışırken örneğin klavyeden kullanılabilecek böyle bir dizinin boyutu. dinamik değişkenler oluşturmak için.
 
C söz diziminde
intN; scanf("%d", &N); int *mas = malloc (sizeof(int) * N); // daha sonra diziyi yeniden boyutlandırmak için // realloc tarafından kullanılır. ... serbest(mas); // tahsis edilen hafızayı serbest bırak
C++ söz diziminde
intN; cin>> N; int*A = yeni int[N]; // dizinin boyutunu değiştirmek için şunları yapabilirsiniz: // verileri başka bir diziye aktarın ve eskisini silin ... sil []mas; // tahsis edilen hafızayı serbest bırak // köşeli parantezler gösterir // dizinin altından belleği boşaltıyoruz

Problem

Size bir tamsayı dizisi verildi. Bir dizi oluşturan ve bu diziye art arda iki kez dizi yazan bir program yazınız.
 
Giriş 
İlk verilen sayı N — dizideki öğelerin sayısı (1<= N <= 100). Daha sonra N sayıları boşlukla ayrılarak yazılır.
 
Çıktı 
Çoğaltılmış bir diziden oluşan bir dizinin çıktısını almak gereklidir.
 
Örnekler
# Girdi Çıktı
1 3
1 2 3
1 2 3 1 2 3
Write the program below
#include <iostream>

using namespace std;

main()
{
  int N;
  cin >> N;
        
 for( int i = 0 ; i < 2*N; i ++ )
  {
  	cout << A[i] << " ";
  }	
  
}        

     

Program check result

To check the solution of the problem, you need to register or log in!