c ile array[-1] elemanına 0 degerini atama

Başlatan alikemalocalan, 10 Aralık 2014 - 21:17:03

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

alikemalocalan

beyler bi algoritma varda algoritmanın -1 .ininci elemanını gordugu yerde 0 degerini dondermesini istiyorumnasıl yapabilirim bir fikri olan var mı?.yani yuzlerde dizi uzerinde işlem yapıyorum ve eger array[-1] eklinde dzi görürse 0 degerini döndererek toplamaya devam etmeli algoritma?

Amenofis

Yazdıklarından pek bişey anlaşılmıyor. Biraz daha açarsan yardımcı oluruz.

alorak

algoritmadaki dizinin index değerine "+1" ekleyip, boşta kalan 0. elemanı 0 yapmak çok mu zorlaştıracaktır acaba?
özgürlük için

furkankalkan

Lover
twitter.com/furkan_kalkan1

alikemalocalan

hocam iste -1 diye array yok oyle dediğim zaman ya 50000 kusurlu bir sayı donderiyor yada derlenmeden hata veriyor


Amenofis

Biz mi yanlış anlıyoruz acaba? Index 0 dan küçükse 0 döndür gitsin.

value = index < 0 ? 0 : array[index];

mozhan

benim anladığım şu bi dizin var elamanları tek tek toplanacak fakat -1 var sa o olarak toplama eklenecek
int toplam=0,sifir=0,
for(i=0;i<array_size;i++){
if(array==-1)
toplam=toplam+sifir;
else
toplam=toplam+array;
}
When we ride on our enemies..

https://github.com/mustafaozhan

alikemalocalan


mozhan

orada 'o' yazmışım 0(sıfır yerine) yani
benim anladığım şu bi dizin var elamanları tek tek toplanacak fakat -1 var sa 0(sıfır) olarak toplama eklenecek
eğer verilen soru bu şekilde ise böyle çözümlenebilir. Denedikten sonra geri dönüş yap istediğin şey olmadıysa soruyu lütfen daha açık şekilde yaz.
When we ride on our enemies..

https://github.com/mustafaozhan

alikemalocalan

#9
sonunda yaptım arkadaşlar ilgileri için söyle bir mantık yürüttüm



        int j = 0;
int i= -1;
x[0]=12;
if (i == -1){
return j;
}

Amenofis

Yanlış anlama da nasıl yüzlerce dizi üzerinde işlem yapabiliyorsun onu merak ettim. Emeklemeden koşmaya çalışıyorsunuz gibi geldi bana. Şu verdiğin kodlar aynen böyle ise durum sakat.

Bolca pratik yapmanızı öneririm. Emin olun bu zaman kaybı değil, bilakis zaman kazancıdır.

mozhan

verdiğin koddan birşey anlamadım :S kod i zaten -1 olarak tanımlandığı için j yi dönecek :S j de 0 zaten yani dizinin olmasına gerek yok 0 döner her türlü
When we ride on our enemies..

https://github.com/mustafaozhan

blackwidow

#12
Alıntı yapılan: alikemal0162 - 12 Aralık 2014 - 23:11:56
hocam iste -1 diye array yok oyle dediğim zaman ya 50000 kusurlu bir sayı donderiyor yada derlenmeden hata veriyor

daha büyük ve anlamsız sayılar vermesi mümkün
olmayan indise sayı atamaya kalkınca memory "wtf" diyor haliyle


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 30 Mart 2015 - 11:46:32


#include <stdio.h>
#define FREE 1
int lengthArray(int array[]);
int main(int argc, char const *argv[])
{
int array[] = { 1 , 2 , 3 , 4 , 5 , 6 ,7 , 8 ,9 , -1} , i , index = 0;

printf("size of the array -> %d\n",lengthArray(array));

/* Dizideki -1 .ci eleman çıkış elemanı olsun
ve -1 gördüğünde çıksın , benim anladığım bu sizin sorudan
-1 in indisini döndürsün ve çıkış yapsın
*/
for(i=0;i<lengthArray(array);++i)
{
if(array[i] != -1)
index++;
else
{
printf("-1 eleman array[%d]'da\n Çıkış\n",index);
return FREE;
}
}


return 0;
}

int lengthArray(int array[]){
int i;
for(i = 0 ; array[i] != '\0' ; ++i){

}
return i;
}


-DıLgEş-

Daha büyük sayılar C dilinde genellikle 0 indesten büyüklere veriliyor. 0 indesten küçük elemanlara otomatik 0 dönüyor.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

blackwidow

Alıntı yapılan: nurullahisrgan - 30 Mart 2015 - 17:25:36
Daha büyük sayılar C dilinde genellikle 0 indesten büyüklere veriliyor. 0 indesten küçük elemanlara otomatik 0 dönüyor.

Yok hocam 0 döndürmez otomatik olarak .

-1 index'e erişmeye çalışınca memory ' de olmayan bir yere gider . Çoğunlukla 0 döndürmesi memory'de  0 olan yerlere gittiği içindir.

Onun dışında aslında daha çok çok büyük sayılar döndürür.
4195504 gibi.


redlabel

Dizi bir pointerder pointerın gösterdiği yeri bir sola kaydırırsan yani -1 e çekersen bu dediğin olur.
array=array-1;
*array=0

array[5] demek aslında *(array+5) demektir bunu anlarsan olayı çözersin