Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - N Boyutlu İki Diziyi Toplamak..
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

N Boyutlu İki Diziyi Toplamak..

 
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Programlama Dilleri ve Algoritmalar
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
DG



Kayıt: Mar 06, 2004
Mesajlar: 351
Nereden: Eskişehir

MesajTarih: Sat Aug 27, 2005 4:10 pm    Mesaj konusu: N Boyutlu İki Diziyi Toplamak.. Alıntıyla Cevap Ver

Soru:
Alıntı:
Consider the problem of adding two n-bit binary integers, stored in two n-element arrays A
and B. The sum of the two integers should be stored in binary form in an (n + 1)-element
array C. State the problem formally and write pseudocode for adding the two integers.


Uygulama:
Kod:
void ikiliTopla(int A[], int B[], int C[], int n)
{
   int basamakToplami;
   *C = 0;
   while(n-- > 0)
   {
      basamakToplami  = A[n] + B[n] + *C;
      C[n+1]          = basamakToplami % 2;
      *C              = ( (basamakToplami >= 2) ? 1 : 0 );
   }
}


----------------------------------------------
Hiç ASM'ye bulaştırmadan daha verimli bir algoritma tavsiyesinde bulunabilecek olan var mı? "Gerçek programcılar"dan yanıt bekliyorum Smile
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
MD-C



Kayıt: Feb 26, 2003
Mesajlar: 1258
Nereden: Dünya.Türkiye(54)

MesajTarih: Sat Aug 27, 2005 6:34 pm    Mesaj konusu: Algoritma budur! Alıntıyla Cevap Ver

Daha iyisini yapana kadar en iyisi bu! Very Happy Very Happy Very Happy

Alıntı:
// int *BinaryAdd(int A[], int B[], int C[], long int lenght
// Dopla.h
// Daha iyisini yazana helal olsun Very Happy
// Copyright (C) 2005 MD.C

// A[] = 0 0 1 1
// B[] = 0 0 0 1
// C[] = 0 1 1 1
// Durumu için... tanımlanır!
//#define TOPLA
#ifndef TOPLA
#define _ESITLE *C = 0
#else
#define _ESITLE *C
#endif


int *BinaryAdd(int A[], int B[], int C[], long int lenght) {
while(lenght--) {
C[lenght+1] = (int)(_ESITLE || (*C = A[lenght] || B[lenght]));
}

return C;
}
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
leblebi



Kayıt: Jan 05, 2004
Mesajlar: 127
Nereden: q3dm17

MesajTarih: Mon Aug 29, 2005 4:55 pm    Mesaj konusu: ... Alıntıyla Cevap Ver

Optimizasyon acisindan soruyosan (x%2) operatorunu kullanmak seni oldurur onun yerine (x&1) daha hizli olacaktir.

Algoritma olarak faydasi olur mu hic bi fikrim yok ama hardware erslerinden hatirladigim kadariyla propagate-generate diye bi olay vardi, wikipedia da anlatiyo;

[url]http://en.wikipedia.org/wiki/Adder_(electronics)[/url]

Dedigim gibi ucuk bi fikir, faydasi olur mu bilemem. Buyuk ihtimalle farkli pipelinelardan kodlarsan faydasi olur ki o da ASM'ye girmek oluyo.

MD-C:
// A[] = 0 0 1 1
// B[] = 0 0 0 1
// C[] = 0 1 1 1
Eger bu dogruysa ben soruyu yanlis anladim.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
DG



Kayıt: Mar 06, 2004
Mesajlar: 351
Nereden: Eskişehir

MesajTarih: Mon Aug 29, 2005 5:47 pm    Mesaj konusu: Re: ... Alıntıyla Cevap Ver

leblebi demiş ki:

MD-C:
// A[] = 0 0 1 1
// B[] = 0 0 0 1
// C[] = 0 1 1 1
Eger bu dogruysa ben soruyu yanlis anladim.


MD-C bilerek yanlış algoritma geçti burada. Millet dener de, "bu algoritma yanlış" der mi diye Smile Ama "gerçek programcılar"dan hiç ses seda çıkmadı Wink

Kod:
Optimizasyon acisindan soruyosan (x%2) operatorunu kullanmak seni oldurur onun yerine (x&1) daha hizli olacaktir.


Bit-wise tamamen aklımdan çıkmıştı sağolasın, o zaman aşağıyı da "*C = ( (basamakToplami & 2) ? 1 : 0 );" şeklinde değiştirdim.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
leblebi



Kayıt: Jan 05, 2004
Mesajlar: 127
Nereden: q3dm17

MesajTarih: Mon Aug 29, 2005 6:41 pm    Mesaj konusu: ... Alıntıyla Cevap Ver

Alıntı:
Bit-wise tamamen aklımdan çıkmıştı sağolasın, o zaman aşağıyı da "*C = ( (basamakToplami & 2) ? 1 : 0 );" şeklinde değiştirdim.


Yok abi onu
Kod:

*C = basamakToplami >> 1;


seklinde yapman lazim(ikinci bit'e bakicaksin) Wink

Tabii ki burda farzettim ki basamakToplami 2'den fazla olamaz, aksi takdirde yine & lemek lazim olacakti.

[/code]
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
DG



Kayıt: Mar 06, 2004
Mesajlar: 351
Nereden: Eskişehir

MesajTarih: Mon Aug 29, 2005 7:04 pm    Mesaj konusu: Re: ... Alıntıyla Cevap Ver

leblebi demiş ki:
Alıntı:
Bit-wise tamamen aklımdan çıkmıştı sağolasın, o zaman aşağıyı da "*C = ( (basamakToplami & 2) ? 1 : 0 );" şeklinde değiştirdim.


Yok abi onu
Kod:

*C = basamakToplami >> 1;


seklinde yapman lazim(ikinci bit'e bakicaksin) Wink

Tabii ki burda farzettim ki basamakToplami 2'den fazla olamaz, aksi takdirde yine & lemek lazim olacakti.

[/code]


Basamak toplamı 3 olabilir, ama yine de senin kod çalışır.

Teşekkürler.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
leblebi



Kayıt: Jan 05, 2004
Mesajlar: 127
Nereden: q3dm17

MesajTarih: Mon Aug 29, 2005 8:07 pm    Mesaj konusu: ... Alıntıyla Cevap Ver

Haklisin, 3'den fazla demek isteyip 2 yazmisim. Anlamissin ama derdimi.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
khalim



Kayıt: Nov 27, 2004
Mesajlar: 4

MesajTarih: Mon Aug 29, 2005 10:14 pm    Mesaj konusu: Alıntıyla Cevap Ver

int n;
int a[] = {1,0,0,1,1,1,1,1};
int b[] = {1,0,0,1,1,1,1,1};
int c[] = {0,0,0,0,0,0,0,0,0};

main(){

for(n=7; n>-1; n--)
{
c[n+1] = c[n+1] ^ (a[n] ^ b[n]);
c[n] = a[n] & b[n];
}
Başa dön
Kullanıcı profilini gör
leblebi



Kayıt: Jan 05, 2004
Mesajlar: 127
Nereden: q3dm17

MesajTarih: Tue Aug 30, 2005 3:29 am    Mesaj konusu: ... Alıntıyla Cevap Ver

...and the oscar goes toooo... khalim!
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
wisecode_g



Kayıt: Jul 29, 2005
Mesajlar: 17
Nereden: istanbul

MesajTarih: Tue Oct 04, 2005 3:29 pm    Mesaj konusu: Alıntıyla Cevap Ver

basamakToplami = A[n] + B[n] + *C;
//yerine
basamakToplami =*A(n*sizeof(int))+*B(n*sizeof(int))+*C;
//yapsak daha hızlı çalışmazmı?? Rolling Eyes
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder MSN Messenger
Mesajları göster:   
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Programlama Dilleri ve Algoritmalar Tüm saatler GMT +2 Saat
1. sayfa (Toplam 1 sayfa)

 
Forum Seçin:  
Bu forumda yeni konular açamazsınız
Bu forumdaki mesajlara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.290 Saniye