C++ dizi sorusu

ggaz

Yeni üye
4 Tem 2016
23
2
Herkese merhaba
GS ve FB isimli 11 elemanı iki string dizisi oluşturun.Daha sonra her iki dizinin elemanlarını konsoldan alın ve her iki dizinin elemanlarını yan yana yazdırın.
Soruyu açıklayarak çözecek biri olursa çok mutlu olurum saygılar
 

BeoWulf007

Kıdemli Üye
19 Haz 2013
2,763
20
508
24
Praise The Fool
Çok basit bir soru bir de anladığım kadarı ile ödev. Neden çözelim? Bunu öğrenmen gerekiyor, anlamadığın bir konsept varsa spesifik olarak onu sor öğrenmene yardımcı olalım ama soruyu çözmem. Zaten soru inanılmaz basit. İpucu vermek gerekirse;
1-) 2 tane dizi tanımlanacak boyutları malum 11.
2-) Bunları bir döngü sayesinde(for, while) konsoldan veri alarak(cin) dolduracaksın sonra yine döngü yardımıyla ekrana yazdıracaksın(cout).
Çok basit çok temel.

Kod ipucu;
C++:
cin>>Array[i];
 

ggaz

Yeni üye
4 Tem 2016
23
2
Çok basit bir soru bir de anladığım kadarı ile ödev. Neden çözelim? Bunu öğrenmen gerekiyor, anlamadığın bir konsept varsa spesifik olarak onu sor öğrenmene yardımcı olalım ama soruyu çözmem. Zaten soru inanılmaz basit. İpucu vermek gerekirse;
1-) 2 tane dizi tanımlanacak boyutları malum 11.
2-) Bunları bir döngü sayesinde(for, while) konsoldan veri alarak(cin) dolduracaksın sonra yine döngü yardımıyla ekrana yazdıracaksın(cout).
Çok basit çok temel.

Kod ipucu;
C++:
cin>>Array[i];
Öncelikle ilginiz için teşekür ederim,soru ödev değil kendi kendime bu dili öğrenmeye çalışıyor bilgisayar ile alakalı bir bölüm okumuyorum.
Spesifik olarak şunu sormak istiyorum, gets ve puts kullanımı dizilerin içerisine nasıl aktarabilirim a mantığını bura da kullanamadım.
Soruyu yazdığım gün bilgisayarım da internete bağlanma problemi olduğu için detaylı soramadım.


#include <iostream>
#include <cstring>
using namespace std;

int main(){

char fb[3];
char gs[3];
int i,j,l,k;
for(i=0;i<3;++i){
cout<<"fb nin oyuncularini girin:";
gets(fb);
}
for(j=0;j<3;++j){
cout<<"gs nin oyuncularini girin:";
gets(gs);
}
for(l=0;l<3;++l){
cout<<"fb nin oyunculari:";
puts(fb);
}
for(k=0;k<3;++k){
cout<<"gs nin oyunculari:";
puts(gs);
}
üçüncü girilen değeri ekrana yazdırıyor
}
///////////////////////////
Sizin dediğiniz mantık ile yapmaya çalıştım fakat int olduğu için boşluklu yazı ve ya harf kullanmama izin vermiyor.Örnekte sayılar için olanını dizi mantığı ile yapabildim ama char kullanarak yapamadım.
#include <iostream>
using namespace std;

int main(){


int gs[3];
int fb[3];
int gss;
int fbb;
for(int i=0;i<3;++i){
cout<<"gs nin oyuncularini girin:";
cin>>gss;
gs=gss;
}
for(int j=0;j<3;++j){
cout<<"fb nin oyuncularini girin:";
cin>>fbb;
fb[j]=fbb;
}
for(int k=0;k<3;++k){
cout<<"gs nin oyunculari:"<<gs[k]<<endl;
}
for(int l=0;l<3;++l){
cout<<"fb nin oyunculari:"<<fb[l]<<endl;
}





}
Basit bir şekilde anlatıp yardımcı olursanız çok sevinirim ayrıca ilginiz,motivasyonumu arttırdığı için size tekrardan teşekkür ederim.
 

BeoWulf007

Kıdemli Üye
19 Haz 2013
2,763
20
508
24
Praise The Fool
@ggaz
Şimdi ben C++ bilmediğim için puts ve gets fonksiyonları ne yapıyor bilmiyorum. Bu yüzden bununla ilgili bir yorum yapamıycam. Yardımcı olmadığım için üzgünüm, bilen biri yazar umarım.
Madem ödev değil bildiğim fonksiyonlarla yazıp, kodlar üzerinden anlatıyorum o zaman. Hem illa gets ve puts fonksiyonlarını istersen o şekilde çalışan versiyonunu da kendin düzenlersin deney olur senin için.


Şöyle bir soru sormuşsun; "Sizin dediğiniz mantık ile yapmaya çalıştım fakat int olduğu için boşluklu yazı ve ya harf kullanmama izin vermiyor.Örnekte sayılar için olanını dizi mantığı ile yapabildim ama char kullanarak yapamadım."
Açıkçası ne sorduğunu tam olarak anlayamadım. int dizisinin içine sadece sayı, char dizisinin içine sadece karakter, string dizisinin içine metin koyabilirsin. Burada tam olarak ne yapmaya çalışıyorsun?

C++:
#include <iostream>
#include <cstring>

using namespace std;

int main() {

  string fb[3];
  string gs[3];
 
  for (int i = 0; i < 3; ++i) {
    cout <<i+1<<". FB oyuncusunu girin:";
    cin>>fb[i];
  }
  for (int j = 0; j < 3; ++j) {
    cout <<j+1<< ". GS oyuncusunu girin:";
    cin>>gs[j];
  }
 
  for (int l = 0; l < 3; ++l) {
    cout <<l+1<< ". FB oyuncusu:"<<fb[l]<<endl;
  }
 
  for (int k = 0; k < 3; ++k) {
    cout <<k+1<< ". GS oyuncusu:"<<gs[k]<<endl;
  }
}

Öncelikle dizileri STRING veri tipiyle oluşturdum. Çünkü char sadece karakter barındırır. İçine uzun uzun isimler yazamıyorduk, tabii bu senin için uygunsa ve tek karakter girmek istiyorsan char tipine döndürebilirsin.

for (int i = 0; i < 3; ++i) {
cout <<i+1<<". FB'nin oyuncusunu girin:";
cin>>fb;
}

Burada fark ettiysen for döngüsü içinde kullanacağım int i tanımını direk for içinde yaptım. Bu şekilde C'de kullanamasan da C++da pratik bir yöntem mevcut böyle kullanmanı tavsiye ederim gereksiz karışıklık olmaz ve sadece döngü scope'ları içinde kullanırsın İ değişkenini ve tekrar tekrar kullanmana izin verir her for için yeni bir harf tanımlamak ile uğraşmazsın. Tabi ben bu örnek kodda 'i, j, k, l' tanımlarını bozmadım kafan karışmasın diye.

i+1 dememin sebebi ise değişkeni 0 tanımlayıp 3'ten küçük olana dek koşulu ile çalıştırıyoruz döngüyü. Bunu sebebi de dizilerde indis'ler sıfırdan başlar. Ben de 0. oyuncuyu gir demenin garip olduğunu düşündüğüm için konsola birinci, ikinci gibi yazması için sadece yazdırırken gözüken koda pek bir etkisi olmayan i+1 kullanımını yaptım. Burası kafanı karıştırmasın. Herhangi bir atama yapmadığımız için i+1 demem i'nin değerini değiştirmez.

array kodunu yukarıda örnekte vermiştim. örnek verirken array dedim ama array yazan yere doğal olarak kendi tanımladığın dizinin ismini yazıyorsun. Ayrıca bilmiyorsan isen bilgin olsun Array Dizi demektir. Sadece ingilizce adı. i ise döngünün kullandığı int değişkeni. Böylece fb ile döngü her döndüğünde i değişkeni de 1 arttığı için her döngüde dizinin farklı bölümüne(indisine) erişmiş oluyoruz.


cout <<k+1<< ". GS'nin oyuncusu:"<<gs[k]<<endl;
En son dönğüde de cout ile atama yaparkenki kullanadığımız aynı mantık ile yazdırıyoruz. Döngü her dönüğünde döngüde kullandığımız değişkenin değeri artıyor ve dizinin yeni elamanın sonucunu dönüyor.
 

ggaz

Yeni üye
4 Tem 2016
23
2

@ggaz
Şimdi ben C++ bilmediğim için puts ve gets fonksiyonları ne yapıyor bilmiyorum. Bu yüzden bununla ilgili bir yorum yapamıycam. Yardımcı olmadığım için üzgünüm, bilen biri yazar umarım.
Madem ödev değil bildiğim fonksiyonlarla yazıp, kodlar üzerinden anlatıyorum o zaman. Hem illa gets ve puts fonksiyonlarını istersen o şekilde çalışan versiyonunu da kendin düzenlersin deney olur senin için.


Şöyle bir soru sormuşsun; "Sizin dediğiniz mantık ile yapmaya çalıştım fakat int olduğu için boşluklu yazı ve ya harf kullanmama izin vermiyor.Örnekte sayılar için olanını dizi mantığı ile yapabildim ama char kullanarak yapamadım."
Açıkçası ne sorduğunu tam olarak anlayamadım. int dizisinin içine sadece sayı, char dizisinin içine sadece karakter, string dizisinin içine metin koyabilirsin. Burada tam olarak ne yapmaya çalışıyorsun?

C++:
#include <iostream>
#include <cstring>

using namespace std;

int main() {

  string fb[3];
  string gs[3];
 
  for (int i = 0; i < 3; ++i) {
    cout <<i+1<<". FB oyuncusunu girin:";
    cin>>fb[i];
  }
  for (int j = 0; j < 3; ++j) {
    cout <<j+1<< ". GS oyuncusunu girin:";
    cin>>gs[j];
  }
 
  for (int l = 0; l < 3; ++l) {
    cout <<l+1<< ". FB oyuncusu:"<<fb[l]<<endl;
  }
 
  for (int k = 0; k < 3; ++k) {
    cout <<k+1<< ". GS oyuncusu:"<<gs[k]<<endl;
  }
}


Öncelikle dizileri STRING veri tipiyle oluşturdum. Çünkü char sadece karakter barındırır. İçine uzun uzun isimler yazamıyorduk, tabii bu senin için uygunsa ve tek karakter girmek istiyorsan char tipine döndürebilirsin.



Burada fark ettiysen for döngüsü içinde kullanacağım int i tanımını direk for içinde yaptım. Bu şekilde C'de kullanamasan da C++da pratik bir yöntem mevcut böyle kullanmanı tavsiye ederim gereksiz karışıklık olmaz ve sadece döngü scope'ları içinde kullanırsın İ değişkenini ve tekrar tekrar kullanmana izin verir her for için yeni bir harf tanımlamak ile uğraşmazsın. Tabi ben bu örnek kodda 'i, j, k, l' tanımlarını bozmadım kafan karışmasın diye.

i+1 dememin sebebi ise değişkeni 0 tanımlayıp 3'ten küçük olana dek koşulu ile çalıştırıyoruz döngüyü. Bunu sebebi de dizilerde indis'ler sıfırdan başlar. Ben de 0. oyuncuyu gir demenin garip olduğunu düşündüğüm için konsola birinci, ikinci gibi yazması için sadece yazdırırken gözüken koda pek bir etkisi olmayan i+1 kullanımını yaptım. Burası kafanı karıştırmasın. Herhangi bir atama yapmadığımız için i+1 demem i'nin değerini değiştirmez.

array kodunu yukarıda örnekte vermiştim. örnek verirken array dedim ama array yazan yere doğal olarak kendi tanımladığın dizinin ismini yazıyorsun. Ayrıca bilmiyorsan isen bilgin olsun Array Dizi demektir. Sadece ingilizce adı. i ise döngünün kullandığı int değişkeni. Böylece fb ile döngü her döndüğünde i değişkeni de 1 arttığı için her döngüde dizinin farklı bölümüne(indisine) erişmiş oluyoruz.



En son dönğüde de cout ile atama yaparkenki kullanadığımız aynı mantık ile yazdırıyoruz. Döngü her dönüğünde döngüde kullandığımız değişkenin değeri artıyor ve dizinin yeni elamanın sonucunu dönüyor.
Çok teşekür ederim size takıldığım noktalarda özelden soru sorabilir miyim kitaplardan öğrenmeye çalışıyorum ve kitaplar da ne yazik ki anlattıklarıyla sorduklarının arasında büyük farklar barındırıyor
 

BeoWulf007

Kıdemli Üye
19 Haz 2013
2,763
20
508
24
Praise The Fool


Çok teşekür ederim size takıldığım noktalarda özelden soru sorabilir miyim kitaplardan öğrenmeye çalışıyorum ve kitaplar da ne yazik ki anlattıklarıyla sorduklarının arasında büyük farklar barındırıyor
Çok fazla Turkhackteam'e girmiyorum. Hem benim de bilmediğim sorular çıkabilir neticede C++ hiç öğrenmedim daha önce. Bu yüzden konu açman en uygunu olacaktır, zaten girdiğim vakitlerde cevaplayabileceğim yazılım soruları var mı diye kontrol ediyorum mümkünse de cevaplıyorum. Özellikle bana ulaşmana gerek yok. Basitlikten veya çok sormaktan endişelenmene gerek yok, çekincen olmadan sor gitsin forum ne için var? Eğer soruların gün içinde çok fazlasaysa, birden fazla konu açmak yerine gün içinde anlamadığın başlıkları biriktirip tek bir konuda toparlayıp madde madde sorabilirsin bu şekilde bilenler tek tek cevaplarlar.
 

ggaz

Yeni üye
4 Tem 2016
23
2
Çok fazla Turkhackteam'e girmiyorum. Hem benim de bilmediğim sorular çıkabilir neticede C++ hiç öğrenmedim daha önce. Bu yüzden konu açman en uygunu olacaktır, zaten girdiğim vakitlerde cevaplayabileceğim yazılım soruları var mı diye kontrol ediyorum mümkünse de cevaplıyorum. Özellikle bana ulaşmana gerek yok. Basitlikten veya çok sormaktan endişelenmene gerek yok, çekincen olmadan sor gitsin forum ne için var? Eğer soruların gün içinde çok fazlasaysa, birden fazla konu açmak yerine gün içinde anlamadığın başlıkları biriktirip tek bir konuda toparlayıp madde madde sorabilirsin bu şekilde bilenler tek tek cevaplarlar.
Çok teşekür ederim
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.