C de ödevde yardım edebilecek var mı?

Bu konuyu okuyanlar

melihsinik

Öğrenci
Katılım
30 Ağustos 2016
Mesajlar
25
Reaksiyon puanı
0
Puanları
1
10 elemanlı tamsayı değer içeren dizinin elemanları klavyeden kullanıcı tarafından girilecektir. Girilen bilgilerin bir değerlendirilmesi yapılacaktır. Yani girilen bilgilerde, birden fazla olan değerin kaçar adet olduğu sonuç olarak ekrana yazdıracak olan uygulamanın kodlarını C dilinde yazınız. Örnek olarak girilen değerler: 1 4 6 7 1 2 4 2 –8 2
Sonuç: 1 --2 adet
4 --2 adet
2 --3 adet

algoritmayı tam olarak yazamadım kafam çok karıştı bunu tam anlayıp kodlarını yazabilecek var mı?
 

arsenik

Müdavim
Katılım
8 Ağustos 2009
Mesajlar
11,365
Reaksiyon puanı
242
Puanları
63
Bir döngü kur ilk değerden başlayıp tüm değerlerde dönsün. Bu döngü içerisinde her değer için seçtiğin değer dışındaki tüm değerlerin içerisinde var mı yok mu kontrol etsin. Bu algoritma performans açısından çok farklı yöntemlerle daha kolay hesaplanabilir diye düşünüyorum.
 

melihsinik

Öğrenci
Katılım
30 Ağustos 2016
Mesajlar
25
Reaksiyon puanı
0
Puanları
1
denedim de tam kuramadım
--- Gönderi Güncellendi ---
Bir döngü kur ilk değerden başlayıp tüm değerlerde dönsün. Bu döngü içerisinde her değer için seçtiğin değer dışındaki tüm değerlerin içerisinde var mı yok mu kontrol etsin. Bu algoritma performans açısından çok farklı yöntemlerle daha kolay hesaplanabilir diye düşünüyorum.
denedim de tam kuramadım
 

melihsinik

Öğrenci
Katılım
30 Ağustos 2016
Mesajlar
25
Reaksiyon puanı
0
Puanları
1
#include<stdio.h>

main()
{

int sayilar[10];
int i,j,sayiadedi,oncedenyazildi=0;


for(i=0; i<10; i++)
{
printf("%d. elemani giriniz: ",i+1);
scanf("%d",&sayilar);

sayiadedi=1;
}
for(i=0; i<10; i++)
{
for(j=0;j<10; j++)
{
if(sayilar==sayilar[j])
{
sayiadedi++;
}
}

if(sayiadedi>1)
{
oncedenyazildi=1;
}
if(oncedenyazildi==0)
{
printf("%d sayisindan %d tane var.\n",sayilar,sayiadedi);
}
sayiadedi=0;
}
return 0;
}



yazdığım kodlar bu
 

arsenik

Müdavim
Katılım
8 Ağustos 2009
Mesajlar
11,365
Reaksiyon puanı
242
Puanları
63
Kod:
#include <stdio.h>

  main() {

    int sayilar[10];
    int i, j, sayiadedi, oncedenyazildi = 0;

    for (i = 0; i < 10; i++) {
      printf("%d. elemani giriniz: ", i + 1);
      scanf("%d", &sayilar[i]);

      sayiadedi = 1;
    }
    for (i = 0; i < 10; i++) {
      for (j = 1; j < 10; j++) {
        if (sayilar[i] == sayilar[j]) {
          sayiadedi++;
        }
      }

      if (sayiadedi > 1) {
        oncedenyazildi = 1;
      }
      if (oncedenyazildi == 0) {
        printf("%d sayisindan %d tane var.\n", sayilar[i], sayiadedi);
      }
      sayiadedi = 0;
    }
    return 0;
  }

sayilar değişkenini dizi tanımlamışsınız ama hep sayilar diye kullanmışsınız.

Kod:
sayilar[i]

diyerek direk o indeksteki sayıya ulaşmalısınız. Ayrıca içerideki for i den başlasın ben içeriye 1 den başlasın dedim ama o olmaz. i. değer hangisi ise onu almayacaksın çünkü zaten sayiadedini 1 den başlatmışsın.

Bu şekilde bir deneyin breakpoint koyun öyle takip edin.

Bakalım nerede bir hata var. Ben sadece yapıyı kontrol ettim. Debug yaparak incelemedim.
 

melihsinik

Öğrenci
Katılım
30 Ağustos 2016
Mesajlar
25
Reaksiyon puanı
0
Puanları
1
ödevde dizi
Kod:
#include <stdio.h>

  main() {

    int sayilar[10];
    int i, j, sayiadedi, oncedenyazildi = 0;

    for (i = 0; i < 10; i++) {
      printf("%d. elemani giriniz: ", i + 1);
      scanf("%d", &sayilar[i]);

      sayiadedi = 1;
    }
    for (i = 0; i < 10; i++) {
      for (j = 1; j < 10; j++) {
        if (sayilar[i] == sayilar[j]) {
          sayiadedi++;
        }
      }

      if (sayiadedi > 1) {
        oncedenyazildi = 1;
      }
      if (oncedenyazildi == 0) {
        printf("%d sayisindan %d tane var.\n", sayilar[i], sayiadedi);
      }
      sayiadedi = 0;
    }
    return 0;
  }

sayilar değişkenini dizi tanımlamışsınız ama hep sayilar diye kullanmışsınız. sayilar diyerek direk o indeksteki sayıya ulaşmalısınız. Ayrıca

Bu şekilde bir deneyin breakpoint koyun öyle takip edin.

Bakalım nerede bir hata var. Ben sadece yapıyı kontrol ettim. Debug yaparak incelemedim.

ödevde dizi diyor daha ilk sene bölümde yeni öğreniyorum bu şekilde yaptım fakat yazmıyor sonucu direkt return 0 ile bitiyor. anlamadım
 

arsenik

Müdavim
Katılım
8 Ağustos 2009
Mesajlar
11,365
Reaksiyon puanı
242
Puanları
63
Breakpoint koyun o şekilde takip edin.

Dizi elemanlarına

Kod:
sayilar[i]

ile ulaşmalısınız.

int sayilar[2]={11,22};
sayilar[1] = 22 çıktısı verir.
 

melihsinik

Öğrenci
Katılım
30 Ağustos 2016
Mesajlar
25
Reaksiyon puanı
0
Puanları
1
b
Breakpoint koyun o şekilde takip edin.

Dizi elemanlarına

Kod:
sayilar[i]

ile ulaşmalısınız.

int sayilar[2]={11,22};
sayilar[1] = 22 çıktısı verir.

breakpoint i bilmiyorum c de break yok mu bu kod da break a gerek var mı?
 

arsenik

Müdavim
Katılım
8 Ağustos 2009
Mesajlar
11,365
Reaksiyon puanı
242
Puanları
63
Hocanıza sorun. Size breakpoint öğretsin ki hangi değişkende hangi veri mevcut görebilesiniz.
 

melihsinik

Öğrenci
Katılım
30 Ağustos 2016
Mesajlar
25
Reaksiyon puanı
0
Puanları
1
sizin anlatmak istediğinizle benim dediğim aynı şey değil mi bende i ile dizinin içine gidemiyor muyum yukarıdaki dediğiniz kodu anladım ama isim olarak breakpoint dediğinizi anlamadım
 
Üst