Tersini almayı açıklarsan yardımcı olurum |
http://ideone.com/HFt43E |
Google'dan. |
Yardımınıza çok ihtiyacım var bu kodun main kısmı niye çalışmıyor bi bakar mısınız saatlerdir uğraşıyorum. Bi de MAX_ROW değeri dışardan girilecek onu da yapamadım şimdiden teşekkürler #include<stdio.h> #include<string.h> #include<stdlib.h> #include <iostream> #include<cstdio> #define NAME_LENGTH 20 #define MAX_ROW 4 typedef struct _ROW{ int index; char name[NAME_LENGTH]; struct _ROW *pNext; }Row; typedef struct _Table{ Row rows[MAX_ROW]; }Table; Table table; void initialize_Table(){ for (int i = 0; i<MAX_ROW; i++){ table.rows.index = -1; sprintf(table.rows.name, "%s", " "); table.rows.pNext = NULL; } } void collision(Row *row, Row *startRow) { _ROW *old; old = startRow; while (startRow){ // Bağlı listenin sonu bulunuyor old = startRow; startRow = startRow->pNext; } old->pNext = row; // Son elemana ilgili kayıt ekleniyor row->pNext = NULL; // bağlı listeninsonubelirleniyor } int RSHash(char *str, int l) { int b = 378551; int a = 63689; int hash = 0; int i = 0; for (i = 0; i < l; str++, i++) { hash = hash * a + (*str); a = a * b; } return (hash & 2147483647) % MAX_ROW; } void add_Row(char *str){ int hash_index; Row *row; hash_index = RSHash(str, strlen(str)); //Hasing fonksiyonu ile benzersiz bir değer üretiyoruz if (table.rows[hash_index].index == -1 || (strcmp(table.rows[hash_index].name, str) == 0)) { //kayıt ekle varsa güncelle table.rows[hash_index].index = hash_index; sprintf(table.rows[hash_index].name, "%s", str); return; } row = (Row *)malloc(sizeof(Row)); //Aksi durumda bir kayıt oluştur if (!row) { puts("yeterli bellek yok!"); exit(0); } row->index = hash_index; sprintf(row->name, "%s", str); collision(row, &table.rows[hash_index]); //ve çakışma listesine ekle } int find_row(char *str) { int hash_index; Row *row; hash_index = RSHash(str, strlen(str)); // benzersiz değer hashing fonksiyonu ile yeniden hesaplanır if (!strcmp(table.rows[hash_index].name, str))//belirtilen indise bakılır return table.rows[hash_index].index; //veriler aynı ise indis ile geri dönülür else { row = table.rows[hash_index].pNext; while (row) //bağlı liste varsa kayıtlar takip kontrol edilir { if (!strcmp(table.rows[hash_index].name, str)) return table.rows[hash_index].index; // Eğer aranan kayıt bağlı listede ise row = row->pNext; // diğer kayda gecilir } } return -1; //bulunamadı ise -1 ile fonksiyon sonlandırılır } void display_Table(){ int i; Row *row; for (i = 0; i < MAX_ROW; i++){ if (table.rows.index != -1){ printf("%s\n", table.rows.name); row = table.rows.pNext; while (row){ printf("%s\n", row->name); row = row->pNext; } } } } int main(){ int index, num,a; char * name [MAX_ROW]; char secim; int i=0; initialize_Table(); for (;;){ printf(" ekleme (e) \n arama(a) \n listele(l)\n secim: "); scanf("%s", &secim); switch (secim){ case 'e': printf("Deger girin:"); scanf("%s",name); i++; add_Row(name); case'a': printf("Aranacak değeri girin"); scanf("%d", num); index = find_row(name[num]); break; case 'l': display_Table(); break; } } return 0; } |
Merhaba hocam, cevabiniz icin tesekkur ederim, harikasiniz. |
Structer ve pointer konusu biraz havada kaldı , bunlarla ilgili konu anlatım yada kod örnekleri önerirmisiniz? |
http://kayhanayar.com/algoritma2.html http://www.elektroarge.com/c-dili-dersleri/ |
Çok sağol , yarın başlarım ![]() |
... |
Hocam siz hiç yorulmayın hocanın mailini verin biz ödevi halledip hocanıza sizin adınıza göndeririz ![]() ![]() |
Merhaba arkadaslar, asagida gordugunuz uzere bir method yaratip, for dongusuyle 10'a kadar tekrarladim, ancak fikir degistiren hocamiz bu dongunun her satirinin birlestirilmesini istiyor. Kisaca for loop concatenation yapmaliyim. Adam ogretmedigi bir seyi sordugu icin ders notlarinda cevabini bulamadim. Youtube ve ve Google'da da arattim ama kaydadeger bir sey bulamadim. Yardimlarinizi bekliyorum. Simdiden tesekkurler. static void Main(string[] args) { kareHsp(10); } static void kareHsp(int sonDeger) { for (int i = 1; i <= 10; i++) { Console.WriteLine(i.ToString() + " sayisinin karesi " + i.ToString() + " x " + i.ToString()); } } Ciktisi: < Resime gitmek için tıklayın > |
benim sorum sadece c ile alakalı değil cevaplarsanız sevinirim bu yıl üni de hazırlık okuyorum seneye bilgisayar müh bölümüne geçeceğim android den dolayı java öğrenmek istiyorum fakat ilk yıl bölümde c görüldüğü söylendi hangi cye çalışmalıyım javadan sonra c öğrensem nasıl olur tavsiyeniz nedir |
Tavsiyem javayı sonraya bırak c ile başla c yi halledersen diğerlerini halletmekte sıkıntı yaşamassın bende 1. sınıfım şuan c++ değil normal c ile başla |
Java'dan sonra da C de öğrenilebilir fakat C'den başlayıp Java'ya giden bir yol daha faydalı olacaktır diye düşünüyorum. |
Okulda zaten sana c öğretiyoruz diyolar ama inanma sen.. Sana döngü mantığını algoritmik düşünme, if else fonksyon fln öğretiyolar. Bunların mantığı zaten tüm diller için neredeyse ortak.. C den bu mantıkları kavrarsan diğer dilleri öğrenmen senin için daha kolay olur. Kısacası arkadaşa katılıyorum :) |
Tam olarak nasıl bişeyden bahsediyosun dostum açıklarsan yardımcı oluruz. Örnek bi ekran fln hazırlarmısın :) |
Merhaba arkadaşlar, c dilinde fread fonksiyonu ile ilgili bir sıkıntım var. Tam olarak nasıl çalıştığını anlamış değilim. Anladığım kadarıyla veriyi belirli bir adres içine koymaya yarıyor, scanf gibi, ama hangi veriyi alıyor? Acaba fseek ile işaretçiyi bir yere sabitlemek lazım mı? Aşağıda size iki tane fonksiyon yazıyorum. Birincisinde for'dan fread kullanılıyor. O fread den önce fseek kullanmamız gerekez mi? İkinci fonksiyonda ise arka arkaya iki kere fread kullanılmış. İkisi için de hang değerlerin adreslere kaydedildiğini söyleyebilir misiniz? Teşekkürler. Bu arada forumda yeniyim kodu nasıl düzgün yazacağımı bilemedim. mesure ve typePersonne struct için verilmiş iki ayrı isim programdan kesip aldım fonksiyonları unsigned short *calculerVO2(FILE *ptrFichier) { mesure m; char başlangıç,son; int i; unsigned short *table,adet; fseek(ptrFichier,sizeof(typePersonne),SEEK_SET); başlangıç=ftell(ptrFichier); fseek(ptrFichier,0,SEEK_END); son=ftell(ptrFichier); adet=(son-başlangıç)/sizeof(mesure); table=(unsigned short*) calloc(adet,sizeof(unsigned short)); for(i=0;i<nb;i++) { fread(&m,sizeof(mesure),1,ptrFichier); table=(m.PO2_in*m.V_air_in)-(m.PO2_out*m.V_air_out); } return table; char lireCreneaux(FILE *fichierReunion,typeCreneau ListeCreneaux[]) { char nbcreneau; fseek(fichierReunion,0,SEEK_SET); fread(&nbcreneau,sizeof(char),1,fichierReunion); fread(ListeCreneaux,sizeof(typeCreneau),nbcreneau,fichierReunion); return nbcreneau; } |
Herkese iyi günler. Her kullanıcı için izlediği filmin kodunu linked listte tutmamız gerekiyor. Örneğin kullanıcı "1" in izlediği filmler "hızlı ve öfkeli , avengers vs vs". kullanıcı "2" nin izlediği filmler ise "ölümsüzler , baba vs vs" bu bilgileri nasıl linked listte tutarım ? |
Bu mesaja 1 cevap geldi. Cevapları Gizle