Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
19
Cevap
373
Tıklama
0
Öne Çıkarma
C PROGRAMLAMA HAKKINDA BİR SORU...
B
5 yıl
Teğmen
Konu Sahibi

A,B,C,D şeklinde 4 tane değişkenim olsun. Ve bu değişkenlerin birbirinden farklı olduğunu tanımlamak istiyorum. Nasıl yapabilirim? Yolları nelerdir? En kısa yoldan en uzun yola kadar yardımcı olursanız sevinirim. Mesela if Conditionın içine Hepsi birbirinden farklıysa tarzı bir şey yazmak için de ne yapabilirim? Bu da ikinci sorum. (A! =B&&A! =C&&... & &C! =D) yapmak yerine en kısası ne olur? Özel bir fonksiyon tarzı bir şey var mıdır? Yeni başladım C programlamaya o yüzden basit bir soru olmuş olabilir. Yardımcı olursanız çok sevinirim.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



< Bu ileti mobil sürüm kullanılarak atıldı >

S
5 yıl
Binbaşı

Aklıma gelen en basit yol şu: Sayıları sırala. Sıralanan sayıları bir sonrakiyle kıyasla. Eşitlik varsa return false. Verimli yol mu bilmem ama.





< Bu mesaj bu kişi tarafından değiştirildi scientia -- 5 Ekim 2020; 16:35:15 >
Bu mesaja 1 cevap geldi.
S
5 yıl
Yüzbaşı

#include <stdio.h>
#define BOY 4

int main()
{
    int a=1, b=2, c=5, d=3, i, j;
    int s[]={a,b,c,d};

    for (i=0; i<BOY; ++i)
        for (j=i+1; j<BOY; ++j)
            if (s[i]==s[j]) {
                printf("farkli degil.\n");
                return 0;
            }            
            
    printf("hepsi farkli.\n");

    return 0;
}



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
B
5 yıl
Teğmen
Konu Sahibi

Hocam dediğiniz şeyin sonucunda yine C(n, 2) kadar kombinasyon olacak değil mi? Ben mi yanlış anladım yoksa



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @scientia
B
5 yıl
Teğmen
Konu Sahibi

En kısası bu sanırsam hocam. Teşekkür ederim... Daha kısası varsa yazabilir birisi.



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @seyfi84
S
5 yıl
Binbaşı

Daha fazla sanki.




Bu mesajda bahsedilenler: @bateren
C
5 yıl
Yüzbaşı

Bana en kısası bu geldi;
if((a==b) && (b==c) && (c==d))
{
}
else
{
}


Bu mesaja 2 cevap geldi.
B
5 yıl
Teğmen
Konu Sahibi

3 tane için kolay da mesela 10 değişken için ne yapabiliriz?



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @controller_
S
5 yıl
Yüzbaşı

bu sadece hepsi aynı mı kontrolü yapar, hepsi farklı mı kontrolü değil...



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @controller_
B
5 yıl
Teğmen
Konu Sahibi

Hocam aralara veya koyarsak olur aslında.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @seyfi84
S
5 yıl
Yüzbaşı

gene olmaz.
mesela 1,2,3,1 hepsi farklı der aralara veya koysan



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @bateren
B
5 yıl
Teğmen
Konu Sahibi

İstediğimiz şeyi else yapısına koysak olmaz mı? Sonuçta eşit olan bir doğru bile varsa if gerçekleşecek. Yoksa yani hepsi farklı ise else gerçekleşecek.



< Bu ileti mobil sürüm kullanılarak atıldı >

H
5 yıl
Binbaşı

Cok sayi varsa hash en verimlisi. Eger elemanlar dogal sayi ise ve 10^6dan kucukse hash icin basit bir array kullanabilirsin.
#include "stdio.h"


int ar[(int)1e6];


int main(){
int sayilar[] = {1,2,3,5,6,7,8};
int i = 0,cevap = 1;
for(i=0;i<sizeof(sayilar)/sizeof(int);i++){
if(ar[sayilar[i]])cevap=0;
else ar[sayilar[i]]++;
}
printf("%d\n",cevap);
return 0;
}


Bu mesaja 1 cevap geldi.
B
5 yıl
Teğmen
Konu Sahibi

Başlangıç seviyesinde olduğumdan dolayı hash filan tam nedir bilmiyorum aslında hocam. Çok teşekkür ederim yine de



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @hynx
H
5 yıl
Binbaşı

Konuda verimlilik gecmis ondan yazdim hocam. Neredeyse her zaman ustteki cevap yeterli olur zaten ama bazen verimlilik de dusunulmeli.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @bateren
B
5 yıl
Teğmen
Konu Sahibi

Haklısınız hocam çok teşekkür ederim yeniden



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @hynx
C
5 yıl
Yüzbaşı

O zaman ben soruyu anlamadim, verilen sayilardan hepsi mi birbirinden farkli olmasi lazim yoksa en az birtanesi mi? Gercek degerlerden bir ornek verirsen daha iyi olur.


Bu mesaja 1 cevap geldi.
B
5 yıl
Teğmen
Konu Sahibi

Hepsi hocam. Mesela 1,1,2,3 veya 1,2,1,2 veya 1,2,3,1 olmaz. 1,2,3,4 se olur.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @controller_
T
5 yıl
Yarbay

C++ ile alternatif çözüm
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

void vektor_bas(vector<int> v){
  for_each(v.begin(), v.end(),[](int &k){cout<< k <<",";});}

bool hepsi_aynimi(vector<int> v){
  sort(begin(v), end(v));
  auto pos = adjacent_find(begin(v), end(v));
  return pos != end(v);}

int main() {
  //     Mesela 1,1,2,3 veya 1,2,1,2 veya 1,2,3,1 olmaz. 1,2,3,4 se olur
  vector<int> v01{1,1,2,3},v02{1,2,1,2},v03{1,2,3,1},v04{1,2,3,4};
  vektor_bas(v01); hepsi_aynimi(v01) ? cout << "hepsi farklı değil" : cout << "hepsi farklı";cout << endl;
  vektor_bas(v02); hepsi_aynimi(v02) ? cout << "hepsi farklı değil" : cout << "hepsi farklı";cout << endl;
  vektor_bas(v03); hepsi_aynimi(v03) ? cout << "hepsi farklı değil" : cout << "hepsi farklı";cout << endl;
  vektor_bas(v04); hepsi_aynimi(v04) ? cout << "hepsi farklı değil" : cout << "hepsi farklı";cout << endl;}






Bu mesajda bahsedilenler: @bateren
F
5 yıl
Yarbay

En mantıklı ve sanırım tek çözüm yolu @hynx isimli arkadaşın dediği yol. Stackoverflow'da falan bakındım üç aşağı beş yukarı hep aynı yola çıkıyor. Bu arkadaş daha kısa ve öz yazmış. Yani öyle veya böyle işin sonu döngülere geliyor. C# olsa Array.Exists komutu işe yarardı gibi geliyor.





< Bu mesaj bu kişi tarafından değiştirildi Fulton -- 8 Ekim 2020; 3:38:36 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.