Konuyu görüntüle
IUCODERS FORUM > Duyurular > Okul ile ilgili > programlama dilleri bütünleme
Yazar
hayabusa2785


avatar

Kayıt: 13.06.2006
10.02.2008-19:18 #37556
arkadaslar büt bilgisayar basinda uygulamami olcak yoksa yazili bi sekildemi olcak bilmiyorum. Ayrica sorumlu oldugumuz konulari finalde cikan sru tiplerini paylasirsak iyi olacagi kanisindayim. simdien hepinize tesekkurler.





Yazar
encin


avatar

Kayıt: 30.11.2007
10.02.2008-19:47 #37557
tabiki bilgisayar başında olacak, final dosya işlemleri ağırlıklıydı, yapılar ve dosya işlemlerinin sonuna kadarv sorumluyuz, final sorularını hoca gruba atmıştı galiba












Yazar
marakana


avatar

Kayıt: 08.03.2007
10.02.2008-20:05 #37559
http://www.iucoders.com/frm_show_topic.jsp?tid=3869







Yazar
marakana


avatar

Kayıt: 08.03.2007
10.02.2008-23:26 #37571
final 2.grubun sorusunda(rasgele erişimli) şöyle bi kod yazdım hata vermiyor ama sorunla karşılaştı, kapatılması gerekiyor diyor.worriedYardımcı olursanız sevinirimpraying
Kayıt sayısını bulduktan sonra 1 azaltmamızı hoca söylemişti bu soru içn.. niye 1 fazla çıkyor onuda anlayamadım zati


OGRENCI * DosyadanOku(void)
{
FILE *dosya;
OGRENCI ogr;
OGRENCI *dizi;
int i=0;
dosya=fopen("records.dat","rb");
if(dosya==NULL)
printf("dosya acilamadi
");
else
{
while(!feof(dosya))
{
fread(&ogr,sizeof(struct ogrenci),1,dosya);
kayitSayisi++;
}
kayitSayisi--;

dizi=(OGRENCI*)malloc(sizeof(OGRENCI) * kayitSayisi);

rewind(dosya);

while(!feof(dosya))
{
fread(&ogr,sizeof(struct ogrenci),1,dosya);
dizi[i]=ogr;
i++;
}

fclose(dosya);

}
return dizi;
}

void Goruntule(OGRENCI *kayitlar)
{
int i;
for (i = 0; i < kayitSayisi; i++)
printf("%s %s %s %s %s
", kayitlar[i].ad, kayitlar[i].soyad, kayitlar[i].numara, kayitlar[i].yas, kayitlar[i].ortalama);

}

void KayitSayisiniGoster(void)
{
printf("%d kayit vardir
",kayitSayisi);

}








Yazar
gilraen


avatar

Kayıt: 19.01.2007
11.02.2008-00:27 #37579
Sorunumu düzelttim de.biggrinikinci gruptan giren arkadaşlar hoca tam olarak ne istedi sizden teklerin soyadlarını çevir diyerek bi yazsanız çok makbule geçer.applause





Yazar
hamdikan


avatar
dünya
Kayıt: 23.01.2006
11.02.2008-00:30 #37580
marakana yazdi
 
final 2.grubun sorusunda(rasgele erişimli) şöyle bi kod yazdım hata vermiyor ama sorunla karşılaştı, kapatılması gerekiyor diyor.worriedYardımcı olursanız sevinirimpraying
Kayıt sayısını bulduktan sonra 1 azaltmamızı hoca söylemişti bu soru içn.. niye 1 fazla çıkyor onuda anlayamadım zati

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

typedef struct ogrenci
{	char ad[15];
	char soyad[15];
	int numara;
	int yas;
	double ortalama;
} OGRENCI;

void EkraniTemizle()
{
	system("cls");
}

// BUNLAR OGRENCI TARAFINDAN GELISTIRILECEK FONKSIYONLAR ////////////////////////

OGRENCI * DosyadanOku(void);
void EnKucukNoluAdSoyadDegistir(OGRENCI *kayitlar);
void Goruntule(OGRENCI *kayitlar);
void DosyayaYaz(OGRENCI *kayitlar);
void KayitSayisiniGoster(void);

//////////////////////////////////////////////////////////////////////////////////

int kayitSayisi = 0;

int main(void)
{

	int secim;		//switch-case yapisina ait secimin saklandigi nesnedir.
	
	OGRENCI * kayitlar = NULL;  //kayitlarin tutulacagi dizi gostericisidir.
	
	kayitlar = DosyadanOku();	

	do {
		
			//MENUYU OLUSTURUYORUZ.
		printf("
1.)	 Listeyi goruntule");
		printf("
2.)	 Numarasi en kucuk olanin ad ve soyadini yer degistir");
		printf("
3.)	 Kayit sayisini goster");
		printf("
4.)	 Cikis");
		system("cls");
		//flushall();
		
		printf("
Lutfen Seciminizi Giriniz
>");
		fflush(stdin);
		scanf("%d",&secim);

		switch (secim) {
			case 1:
				Goruntule(kayitlar);
				break;
			case 2:
				EnKucukNoluAdSoyadDegistir(kayitlar);
				break;
			case 3:
				KayitSayisiniGoster();
				break;
			case 4:
				DosyayaYaz(kayitlar);
				exit(0);
				break;
			default:
				printf("
Seciminiz hatali lutfen 1 il 4 arasinda bir sayi giriniz");
		} // end of switch block

		printf("Devam etmek icin bir tusa basiniz.
");
		getch();
		

	}while(1); // end of infinite do-while block

	return 0; 
}

OGRENCI * DosyadanOku(void)
{
	 FILE *dosya;
OGRENCI ogr;
OGRENCI *dizi;
int i=0;
dosya=fopen("records.dat","rb");
	if(dosya==NULL)
	printf("dosya acilamadi");
	else
	{
	while(!feof(dosya))
	{
		fread(&ogr,sizeof(struct ogrenci),1,dosya);
		kayitSayisi++;
	}
kayitSayisi--;

dizi=(OGRENCI*)malloc(sizeof(OGRENCI) * kayitSayisi);

rewind(dosya);

while(!feof(dosya))
{
	fread(&ogr,sizeof(struct ogrenci),1,dosya);
	dizi[i]=ogr;
	i++;
}

fclose(dosya);

}
return dizi;



	
}

void Goruntule(OGRENCI *kayitlar)
{
	int i;
for (i = 0; i < kayitSayisi; i++)
printf("%s %s %d %d %f
", kayitlar[i].ad, kayitlar[i].soyad, kayitlar[i].numara, kayitlar[i].yas, kayitlar[i].ortalama); 
}

void KayitSayisiniGoster(void)
{
	 printf("%d kayit vardir",kayitSayisi); 
}

void DosyayaYaz(OGRENCI *kayitlar)
{

}

void EnKucukNoluAdSoyadDegistir(OGRENCI *kayitlar)
{

}


Goruntule fonksiyonunda struct ta int ve double degerlırıde %s ile yazdırmaya calısmıssın
%s %s %d %d %f
olması lazım
hata olayıda neden oldugunu anlamadım ama EkraniTemizle fonksiyonunu silip herhangi bi yere system("cls"); yazdım su an sorun yok heralde kayıt sayısıda 5 buluyor dogru
Not:Grup 3 un dosyalarına yazdım bunları





yok

Yazar
marakana


avatar

Kayıt: 08.03.2007
11.02.2008-00:31 #37581
hata şuymuşki: 2 grupta,1. gruptan farklı olarak numara ve yas: int, ortalama: float tanımlanmış..Bense direk 1.grup sorusu üzerinden copy-paste yaparak değiştirdiğim için hepsini char almışım..(arkadaş sağolsun)

Hoş 1 saatir 30-40 kişi okudu ama bir kişi bile lutfedip yardimcı olmaya calışmadı ama neyse aynı hatayı yapan arkadaşlar vakit kaybetmesin bari







Yazar
marakana


avatar

Kayıt: 08.03.2007
11.02.2008-00:33 #37582
teşekkürler HAMDİKANapplausegörmemiştim








Yazar
fundagulkaya


avatar
istanbul
Kayıt: 07.11.2007
11.02.2008-01:34 #37591
marakana yazdi
 
Kayıt sayısını bulduktan sonra 1 azaltmamızı hoca söylemişti bu soru içn.. niye 1 fazla çıkyor onuda anlayamadım zati

 
void Goruntule(OGRENCI *kayitlar)
{
int i;
for (i = 0; i < kayitSayisi; i++)
printf("%s %s %s %s %s
", kayitlar[i].ad, kayitlar[i].soyad, kayitlar[i].numara, kayitlar[i].yas, kayitlar[i].ortalama);

}

burda tamam bir azaltmamız mantıklı.0dan başlıyo diye

peki asagida durum nasıl oluyo bir azaltıyorsak?

 
dizi=(OGRENCI*)malloc(sizeof(OGRENCI) * kayitSayisi);


 
void KayitSayisiniGoster(void)
{
printf("%d kayit vardir
",kayitSayisi);

}


anlayabilen biri bi açıklık getirirse sevinirim...






Yazar
marakana


avatar

Kayıt: 08.03.2007
11.02.2008-01:59 #37594
Ben dosyayı "rb" modunda açtım 6 kayıt buldu,"r" modunda açtım 5 kayıt buldu.Niye bilmiyorum.(buarada 5 kayıt var dosyada).
yani sıfırdan başlatmakla bir alakası yok
for (i = 0; i < kayitSayisi; i++) istersen sen 1 den başlat
for(i=1;i<=kayitSayisi; i++) böyle yaz.
yanlış düşünmüyorum inşnerd







Yazar
hamdikan


avatar
dünya
Kayıt: 23.01.2006
11.02.2008-02:36 #37598
marakana yazdi
 
Ben dosyayı "rb" modunda açtım 6 kayıt buldu,"r" modunda açtım 5 kayıt buldu.Niye bilmiyorum.(buarada 5 kayıt var dosyada).
yani sıfırdan başlatmakla bir alakası yok
for (i = 0; i < kayitSayisi; i++) istersen sen 1 den başlat
for(i=1;i<=kayitSayisi; i++) böyle yaz.
yanlış düşünmüyorum inşnerd

while(1)
{
int abc=fgetc(dosya);
if(abc==EOF)
{
break;
}
fread(&ogr,sizeof(struct ogrenci),1,dosya);
kayitSayisi++;
}
Dosyadan kayıtları okuma kısmına bunu yazarsan "r" veya "rb+" olsun sorun cozuluyor.
Olay dosyayi binary mode da actigin icin kaynaklanıyor.Binary mode un eof anlayısı farklıymıs bende yeni ogrendim

http://www.sis.pitt.edu/~ir/KS/Data/RMiles/c12.html
http://en.wikipedia.org/wiki/Fopen





yok

Yazar
marakana


avatar

Kayıt: 08.03.2007
11.02.2008-02:56 #37601
eywallah. çok sağolapplause







Yazar
ramcho


avatar
denizli
Kayıt: 02.10.2006
11.02.2008-11:00 #37616
arkadaşlar 1. grupun sorusunu yapan varsa buraya koyabilirmiprayingpraying uğraşıorum uğraşıorum olmuyothinking










Yazar
fundagulkaya


avatar
istanbul
Kayıt: 07.11.2007
11.02.2008-11:32 #37618
ramcho yazdi
 
arkadaşlar 1. grupun sorusunu yapan varsa buraya koyabilirmiprayingpraying uğraşıorum uğraşıorum olmuyothinking

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

typedef struct ogrenci
{	char ad[15];
	char soyad[15];
	char numara[10];
	char yas[3];
	char ortalama[5];
} OGRENCI;

void EkraniTemizle(void)
{
	system("cls");
}

// BUNLAR OGRENCI TARAFINDAN GELISTIRILECEK FONKSIYONLAR ////////////////////////

OGRENCI * DosyadanOku(void);
void KayitSayisiniGoster(void);
void Goruntule(OGRENCI *kayitlar);
void DosyayaYaz(OGRENCI *kayitlar);
void SoyadaGoreSirala(OGRENCI *kayitlar);

//////////////////////////////////////////////////////////////////////////////////
int kayitSayisi = 0;


OGRENCI temps;

int main (void)
{
	int secim;		//switch-case yapisina ait secimin saklandigi nesnedir.
	
	OGRENCI * kayitlar = NULL;  //kayitlarin tutulacagi dizi gostericisidir.
	
	kayitlar = DosyadanOku();	

	do {
			//MENUYU OLUSTURUYORUZ.
		printf("
1.)	 Listeyi goruntule");
		printf("
2.)	 Soyada gore sirala");
		printf("
3.)	 Kayit sayisini goster");
		printf("
4.)	 Cikis");
		flushall();
		printf("
Lutfen Seciminizi Giriniz
>");
		scanf("%d",&secim);

		switch (secim) {
			case 1:
				Goruntule(kayitlar);
				break;
			case 2:
				SoyadaGoreSirala(kayitlar);
				break;
			case 3:
				KayitSayisiniGoster();
				break;
			case 4:
				DosyayaYaz(kayitlar);
				exit(0);
				break;
			default:
				printf("
Seciminiz hatali lutfen 1 il 4 arasinda bir sayi giriniz");
		} // end of switch block

		printf("Devam etmek icin bir tusa basiniz.
");
		flushall();
		getch();
		EkraniTemizle();

	}while(1); // end of infinite do-while block

	return 0;
}

OGRENCI * DosyadanOku(void)
{	

   int i;
   FILE * di;

   OGRENCI * dizi;

   di=fopen("records.txt","r");
   if(di==NULL){
	   printf("Dosya acmada hata
");
	   exit(1);
   }

   while(!feof(di)){
	   fscanf(di,"%s%s%s%s%s",temps.ad,temps.soyad,temps.numara,temps.yas,temps.ortalama);
	   kayitSayisi++;
   }


   dizi=(OGRENCI *)malloc(sizeof(OGRENCI)*kayitSayisi);

   rewind(di);//dosya göstericisini dosyanın basına alırız.
   i=0;
   
   while(!feof(di)){
	   fscanf(di,"%s%s%s%s%s",(dizi+i)->ad,(dizi+i)->soyad,(dizi+i)->numara,(dizi+i)->yas,(dizi+i)->ortalama);
       i++;
   }
   fclose(di);






	return dizi;
}

void Goruntule(OGRENCI *kayitlar)
{
	int i;
	printf("	Kayitlar
");
	printf("-----------------------------------------------------
");
	for(i=0;i<kayitSayisi;i++){
		printf("%s %s %s %s %s
",(kayitlar+i)->ad,(kayitlar+i)->soyad,(kayitlar+i)->numara,(kayitlar+i)->yas,(kayitlar+i)->ortalama);
	}
	printf("-----------------------------------------------------
");

}

void KayitSayisiniGoster(void)
{
	printf("Dosyada %d adet kayit bulunmaktadir.
",kayitSayisi);

}

void SoyadaGoreSirala(OGRENCI *kayitlar)
{

	int i,j;

	for(i=0;i<kayitSayisi;i++){
		for(j=0;j<kayitSayisi-1;j++){
			if(strcmp((kayitlar+j)->soyad,(kayitlar+j+1)->soyad)>0){//eger dizideki elemanlardan herbiri önceki sonrakinden alfabede sonraysa elemanların yerleri degistirilir.
				
				strcpy(temps.ad,(kayitlar+j+1)->ad);
				strcpy(temps.soyad,(kayitlar+j+1)->soyad);
				strcpy(temps.numara,(kayitlar+j+1)->numara);
				strcpy(temps.yas,(kayitlar+j+1)->yas);
				strcpy(temps.ortalama,(kayitlar+j+1)->ortalama);
	
				strcpy((kayitlar+j+1)->ad,(kayitlar+j)->ad);
				strcpy((kayitlar+j+1)->soyad,(kayitlar+j)->soyad);
				strcpy((kayitlar+j+1)->numara,(kayitlar+j)->numara);
				strcpy((kayitlar+j+1)->yas,(kayitlar+j)->yas);
				strcpy((kayitlar+j+1)->ortalama,(kayitlar+j)->ortalama);

				strcpy((kayitlar+j)->ad,temps.ad);
				strcpy((kayitlar+j)->soyad,temps.soyad);
				strcpy((kayitlar+j)->numara,temps.numara);
				strcpy((kayitlar+j)->yas,temps.yas);
				strcpy((kayitlar+j)->ortalama,temps.ortalama);
			}
		}
	}


	printf("	Siralanmis Kayitlar
");
	printf("-----------------------------------------------------
");
	for(i=0;i<kayitSayisi;i++){
		printf("%s %s %s %s %s
",(kayitlar+i)->ad,(kayitlar+i)->soyad,(kayitlar+i)->numara,(kayitlar+i)->yas,(kayitlar+i)->ortalama);
	}
	printf("-----------------------------------------------------
");

}


void DosyayaYaz(OGRENCI *kayitlar)
{

	int i;
   FILE * di;

   
   di=fopen("records.txt","w");
   if(di==NULL){
	   printf("Dosya acmada hata
");
	   exit(1);
   }

   for(i=0;i<kayitSayisi;i++){
	   fprintf(di,"%s %s %s %s %s
",(kayitlar+i)->ad,(kayitlar+i)->soyad,(kayitlar+i)->numara,(kayitlar+i)->yas,(kayitlar+i)->ortalama);
   }

}

bu arada ben yapmadım.yapmış olan bir arkadaşımdan aldım çok saolsunn





Yazar
ramcho


avatar
denizli
Kayıt: 02.10.2006
11.02.2008-12:30 #37621
teşekür ederim.rose










1 2 3 4 5
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb