Selamlar,

Kullanıcıdan cümle ve sayı alıyoruz. o sayı'ncı kelimeyi göstermesini istiyorum programın. Bişeyler yazdım ama bi türlü çalışmıyo. Şu an kodu calistirmayi bile beceremedim, ne vereceğinden ziyade neden bişeyler vermediği sorum sanırım.





#include <stdio.h>
#include <stdlib.h>
void fx (char uzun[], int x, char kisa[])
{
int j; int i;
int u;
u = strlen(uzun);
int cunt = 0;
int bas; int son;
for(i = 0 ; i < u ; i++){
if(uzun[i] == ' ')
cunt++;
if(cunt == x-1)
{
bas = i; //kelimenin hangi bosluklar
//arasinda oldugunu bas ve son'a
}
if(cunt == x)
{
son = i;
}
}
int amk = 0;
for(j = bas; j < son - bas; j++)
{
kisa[amk] = uzun[j]; //kisaya iki bosluk arasini attim
amk++;
}


}
int main(void) {

char sentence[150];
int nth;
gets(sentence);
scanf("%d",&nth);
char yeni[30];

fx(sentence, nth, yeni);

puts(yeni);



return EXIT_SUCCESS;
}

 

fx fonksiyonunun sonundaki for döngüsünde "j < son-bas" değil de "j < son" olmalı.

talemon

@herif count'dan daha kısa olduğu için :D
@talemon haklısın düzelttim.

make all
make: Nothing to be done for 'all'.

şöyle bir şey diyo compiler bana, online compilerda da olmadı. çok temel bişey yanlış muhtemelen onu bulamıyorum. kod hiç çalışmıyo direk. çalışsa düzelticem zaten cümlenin neresini nasıl aldığını.

stanhiver

a-ah online compiler'da olmaya başladı bi anda. hatalı ama düzeltebilirim sanıyorum.

stanhiver

sorumu daralttım su an:

bas ve son'u yanlis buluyo ama doğru gibi sanki? neden olmuyo?

stanhiver

Böyle yapmak istemiyordum ama refaktöre edip bazı hataları düzelttim:
pastebin.com

bu kod son kelimeyi de yakalıyor.
ancak boş girdi ve çok uzun girdilerde oluşabilecek hatalarla ilgili değişiklik yapmadım.

talemon

@talemon benim kodumun son hali son kelimeyi yakalamıyodu. bi de {}'ları yanlış kullanmışım.

çok iyi oldu bu. çok teşekkürler.

stanhiver
1

mobil görünümden çık