Arama butonu
Bu konudaki kullanıcılar: 1 misafir
12
Cevap
1377
Tıklama
0
Öne Çıkarma
Kullanıcıdan alınan sayı kadar değişken oluşturma
S
10 yıl
Binbaşı
Konu Sahibi

Amaç; klavyeden girilen bir integer değer kadar değişken oluşturmaya çalışıyorum. Örneğin

......... 
..........
........
......
int sayi;
printf("bir sayi girin")
scanf("%d", &sayi);

//code here


misal sayi değişkenini 4 girdiyseniz //code here yazan kısımdaki kod öyle olmalı ki herhangi bir türden 4 tane değişken oluşturabilsin. tabiki oluşturulan değişken isimlerini bilmem lazım.

Aslında asıl program alttaki. Amacı ise kullanıcıdan ailede kaç kişi varsa onların adını soyadını mesleğini ve yaşının bilgisini alarak ekrana basmak. For döngüsünün sonuna printf ile yazdırabiliyorum fakat benim istediğim tüm bilgileri aynı anda basması. for döngüsünün sonuna printf i komutunu koyunca bilgiler parça parça yazıyor.Yardım edebilecekler varsa bir el atsın. Aranızda illaki çözümü bilen birileri vardır.

#include <stdio.h> 
#include <stdlib.h>
struct kisi {
char name[15];
char surname[25];
char job[30];
int age;
};


int main()
{
int hane;
printf("Aileniz sizinle birlikte kac hanedir ?", hane);
scanf("%d", &hane);
struct kisi a;

for(int i=0; i<hane; ++i) {

printf("%d. uyenin adini girin\t", i+1);
scanf("%s", &a.name);
printf("%d. uyenin soyadini girin\t", i+1);
scanf("%s", &a.surname);
printf("%d. uyenin meslegini girin\t", i+1);
scanf("%s", &a.job);
printf("%d. uyenin yasini girin\t", i+1);
scanf("%d", &a.age);
}


return 0;
}





< Bu mesaj bu kişi tarafından değiştirildi Sofiman -- 30 Temmuz 2014; 23:37:07 >

B
10 yıl
Çavuş

#include <stdio.h> 
#include <stdlib.h>
struct kisi {
char name[15];
char surname[25];
char job[30];
int age;
void yazdir()
{
printf(
"Adi:%s\n"
"Soyadi:%s\n"
"Isi:%s\n"
"Yasi:%d\n\n",name,surname,job,age);

}
};


int main()
{
int hane;
printf("Aileniz sizinle birlikte kac hanedir ?");
scanf("%d", &hane);
struct kisi a[hane];

for(int i=0; i<hane; ++i) {

printf("%d. uyenin adini girin\t", i+1);
scanf("%s", a[i].name);
printf("%d. uyenin soyadini girin\t", i+1);
scanf("%s", a[i].surname);
printf("%d. uyenin meslegini girin\t", i+1);
scanf("%s", a[i].job);
printf("%d. uyenin yasini girin\t", i+1);
scanf("%d", &a[i].age);
}
for(int i=0; i<hane; ++i) {
printf("%d. uyenin bilgileri:\n",i+1);
a[i].yazdir();
}


return 0;
}





< Bu mesaj bu kişi tarafından değiştirildi brk0001 -- 31 Temmuz 2014; 0:05:30 >
Bu mesaja 1 cevap geldi.
S
10 yıl
Binbaşı
Konu Sahibi

hocam birkaç sorum olacak. anlamadım çünkü. struct oluşturduktan sonra void yazdır() fonksiyonunu nasıl tanımladığınızı ve kullandığınızı anlayamadım malesef. Birde anladığım kadarıyla siz yazdir() fonksiyonunu main dışında tanımlamadan direkt olarak struct içinde kullanmışsınız. bu mümkün müdür? demek istediğim struct içinde tanımlamadan önce fonksiyonu main dışında tanımlamak gerekmiyor mu?

Hocam sorularım saçma gelebilir kusuruma bakma.




Bu mesajda bahsedilenler: @brk0001
B
10 yıl
Çavuş

C deki struct yapısı c++ daki class yapısının başlangıcı.
struct kişi de bir nesne tanımlayınca o nesnenin 4 tane özelliği bir tane de fonksiyonu oluyor.Hepsine de .(nokta) ile ulaşabiliyoruz.
struct içindeki fonksiyonlar o structa tanımlanmış alanları(değişkenleri) kullanabilir.
burada struct kişi de dizi tanımlandı.
her dizi elemanı kendisine ait özellikleri yazdir fonksiyonu ile yazdirdi.
c++ sınıf(class) konusuyla alakalı aslında.
@





< Bu mesaj bu kişi tarafından değiştirildi brk0001 -- 31 Temmuz 2014; 1:29:08 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Sofiman
S
10 yıl
Binbaşı
Konu Sahibi

yalnız hocam bu kodu çalıştırmayı denediniz mi. ilk olarak çalışmıyor. ikinci olarakta sanırım C de struct içine fonksiyon koyamıyoruz.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @brk0001
B
10 yıl
Çavuş

devc++ denemiştim çalışıyor





< Bu mesaj bu kişi tarafından değiştirildi brk0001 -- 31 Temmuz 2014; 2:22:03 >
Bu mesaja 1 cevap geldi.
S
10 yıl
Binbaşı
Konu Sahibi

Code blocks ta denedim hata verdi. İnternette struct içine fonk çağıramazsınız diyordu. Hocam ben bugün tekrar deneyeyim sonucu size bildiririm



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @brk0001
B
10 yıl
Çavuş

Evet code blocks ta dediğiniz hatayı verdi.DevC++ da C++ özellikleri her programda kullanıldığı için sanırım izin veriyordu.
yazdir ı normal bir fonksiyon olarak tanımlayıp şu şekilde yazdım Bu kod Code Blocks ta çalışıyor:
 
#include <stdio.h>
#include <stdlib.h>
struct kisi {
char name[15];
char surname[25];
char job[30];
int age;

};
void yazdir(struct kisi a)
{
printf("Adi:%s\nSoyadi:%s\nIsi:%s\nYasi:%d\n\n",a.name,a.surname,a.job,a.age);

}

int main()
{
int hane,i;
printf("Aileniz sizinle birlikte kac hanedir ?");
scanf("%d", &hane);
struct kisi a[hane];


for( i=0; i<hane; ++i) {

printf("%d. uyenin adini girin\t", i+1);
scanf("%s", a[i].name);
printf("%d. uyenin soyadini girin\t", i+1);
scanf("%s", a[i].surname);
printf("%d. uyenin meslegini girin\t", i+1);
scanf("%s", a[i].job);
printf("%d. uyenin yasini girin\t", i+1);
scanf("%d", &a[i].age);
}
for( i=0; i<hane; ++i) {
printf("%d. uyenin bilgileri:\n",i+1);
yazdir(a[i]);
}


return 0;
}




Bu mesaja 1 cevap geldi.
S
10 yıl
Binbaşı
Konu Sahibi

hocam çok teşekkür ederim 2 gündür uğraşıyorsun, sağol tekrardan. Son olarak C++ ın imkanlarını kullanmak için proje oluştururken C++ ı seçip, kodları C ye göre yazsak bir sıkıntı olur mu. Code Blocks için söylüyorum.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @brk0001
B
10 yıl
Çavuş

Bilmiyorum denemedim ancak C++ imkanlarını kullanmak için c++ kodları kullanmak daha doğru olur diye düşünüyorum.Böylece kafa karışıklığı oluşmaz.


Bu mesaja 1 cevap geldi.
S
10 yıl
Binbaşı
Konu Sahibi

şimdi baktım C++ da class içinde fonksiyon çağırabiliyorsun fakat C de bu mümkün değil.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @brk0001
M
10 yıl
Binbaşı

S
10 yıl
Binbaşı
Konu Sahibi

Dizi kullanıyorum. 3 tane string ve struct tipinde bi dizi kullanıyorum. Bunun haricinde tüm olayı diziyle yaparsan resmen çöp kod olur. Yapmak istediğim şeyin kod bakımından pek esnetilebileceğini düşünmüyorum açıkçası.



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @Mr. Pink
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.