[Çözüldü] "error: expected expression before ‘int’" hatası

Başlatan Pozitron, 11 Mart 2015 - 00:19:22

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Pozitron

Aşağıdaki kodda hata gören var mı?Bir hata göremiyorum o yüzden deli ediyor beni

#include <stdlib.h>
#include <stdio.h>

int max(int x,int y,int z);
int main(){
printf("%d",max(int x,int y,int z));
}
int max(int x,int y,int z){
int max1;
if(x>y)
max1=x;
else
max1=y;
if(max1>z)
return max1;
else
return z;
}

Hata da şu:
Alıntı Yapmaximum.c: In function 'main':
maximum.c:6:17: error: expected expression before 'int'
printf("%d",max(int x,int y,int z));
                 ^
maximum.c:6:17: error: too few arguments to function 'max'
maximum.c:4:5: note: declared here
int max(int x,int y,int z);
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.

Reverser

Şöyle olmalı
printf("%d",max(x,y,z));

XFCE ROCKS !
Powered by Thunar & XFWM4



Pozitron

Hadi ya ben bir yerde orayı da int diye görmüştüm;ama denedim şöyle bir hata verdi:
Alıntı Yapmaximum.c: In function 'main':
maximum.c:6:17: error: 'x' undeclared (first use in this function)
printf("%d",max(x,y,z));
                 ^
maximum.c:6:17: note: each undeclared identifier is reported only once for each function it appears in
maximum.c:6:19: error: 'y' undeclared (first use in this function)
printf("%d",max(x,y,z));
                   ^
maximum.c:6:21: error: 'z' undeclared (first use in this function)
printf("%d",max(x,y,z));

Edit:Bide aslında ilk floatla denemiştim.C'de bir fonksiyon foat olarak tanımlanabiliyor mu?Yani float main(... diye
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.

Reverser

Bir dakika mobildeyim bilgisayara geçiyorum. Elbette bir fonksiyon float dönüşlü olabilir float main degilde , float topla (float x, float y); şeklinde olabilir.

XFCE ROCKS !
Powered by Thunar & XFWM4



Pozitron

Çok değişik bi hata gibi geldi halbuki karmaşık birşey de değil. Tamam teşekkürler öyle tanımlayacağım sorun çözülürse.
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.

Reverser

Merhaba, kod örneğinizi inceledim de hatalar çok :) özellikle "fonksiyonlar", "else if", "veri tipleri" ve "tanımlamalara" bir bakın. Fonksiyonu hatalı oluşturmuşsunuz ve fonksiyona herhangi bir atama yapmamışsınız tam olarak ne yapmak istediğinizide anlayamadım ama fikir vermesi açısından bir örnek paylaşıyorum.


#include <stdlib.h>
#include <stdio.h>

//fonksiyon prototipi
int max_min(int x,int y);

int main()
{
   int x = 6;
   int y = 5;
   
   printf("%d",max_min(x, y));
}

int max_min(int x,int y)
{
  int max;
 
  if(x > y)
  {
    max = x;
return max;
  }
  else if (x == y)
  {
    max = 0;
return max;
  }
  else
  {
    max = y;
return max;
  }
return 0;
}

XFCE ROCKS !
Powered by Thunar & XFWM4



Pozitron

Yeni öğreniyorum da bunu bi yere gittiğimde görmüştüm yani kendim yazmadım demek yanlış diye çalışmıyordu :) Hemen yazdığınız örneğe bakıcam teşekkür ederim.
Bir de üç tane sayı tanımlayacaksamüç tane yeterli değil mi başka bi işleme gerek yok?
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.

Reverser

3 adet tam sayı tanımlayacaksanız fonksiyonu ve fonksiyon prototipini değiştirmeli, bir adet daha tam sayı eklemelisiniz.

XFCE ROCKS !
Powered by Thunar & XFWM4



blackwidow

#include <stdlib.h>
#include <stdio.h>

int max(int x,int y,int z);


int main(){

int x , y , z;
printf("x y z gir \n");
scanf("%d %d %d",&x,&y,&z);
printf("%d",max(x,y,z));

}

int max(int x,int y,int z){
int max1;
if(x > y)
{
if(x > z)
return x;
else
return z;
}

if(x > z)
{
if(x > y)
return x;
else
return y;
}

if(y > z)
{
if(y > x)
return y;
else
return x;

}


}

Pozitron

@Reverser Yani benim hatam satırlar arasındaki boşluklar bırakmamam mı yani ben düz yazmıştım örneğinizde return biraz yana gitmiş?Başka bi fark yok gibi geldi.Ben kod uzamasın diye şöyle yazdım;mesela x y den büyük.O zaman max1 değerine x'i yazıyor;fakat sonra eğer x zden küçükse max1 z oluyor.Böylece kod çok uzamıyor.

@blackwidow Kodunuzda y ye 2 z ye 3 verirsem yine de y yi büyük alıyor.Şöyle bir satır ekledim:
if(z>x){
                if(z>y)
                        return z;
                else
                        return y;
               }


C de satırların uyuşması gerektiğini bilmiyordum alt alta yazıyordum hep öyle öğrendim yani yanlışmış o zaman.
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.

-DıLgEş-

Alıntı yapılan: Pozitron@Reverser Yani benim hatam satırlar arasındaki boşluklar bırakmamam mı yani ben düz yazmıştım örneğinizde return biraz yana gitmiş?Başka bi fark yok gibi geldi.Ben kod uzamasın diye şöyle yazdım;mesela x y den büyük.O zaman max1 değerine x'i yazıyor;fakat sonra eğer x zden küçükse max1 z oluyor.Böylece kod çok uzamıyor.

@blackwidow Kodunuzda y ye 2 z ye 3 verirsem yine de y yi büyük alıyor.Şöyle bir satır ekledim:
Kod: [Seç]if(z>x){
                if(z>y)
                        return z;
                else
                        return y;
               }

C de satırların uyuşması gerektiğini bilmiyordum alt alta yazıyordum hep öyle öğrendim yani yanlışmış o zaman.
Satır uyuşmaması değil de parantezlere dikkat etmelisin.
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..

Reverser

Parantezlere dikkat etmelisiniz tek kosullu if else icin parantez kullanilmasada olabiliyor. Bosluk kullanimi ve returnun kaydirilmasi okunabilirligi iyilestirmek icin. Dilerseniz tek satir olarakta yazabilirsiniz. Ilk verdiginiz kod hataliydi if icerisinde if degil de, mantik operatorunu kullanin en azindan kafaniz karismaz.

XFCE ROCKS !
Powered by Thunar & XFWM4



blackwidow

aynen hocam farkettim ben de şimdi hatayı

Pozitron

@Reverser,nurullahisrgan Haklısınız parantezlerde daha dikkatli olmalıyım C'nin huyu işte ama gülü seven dikenine katlanır :)

@blackwidow İlk bi şaşırdım 2yi daha büyük gösterince sonra bi baktım y ve z arasındaki o ilişki yok :)
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.