PDA

Tam Sürümünü Görmek İçin : C De Program Yazdim Ama Eksiklerim Var


kaygisiz2
14/08/2007, 12:21
Yapmaya çalıstıgım program

Write a program that inputs a string A, an inter k, and a word B and insertds B after the kth word in string A

For instance, for inputs:

A: "I see people"

K: 2

B: "dead"

Your function will peoduce:

C: "I see dead people"

Program Fonksiyon kullanılarak yapılıcak. Ben uğrastım kod yazdım ama bu kodda ne hata yaptıysam bastıramadım bir turlu.Ugrastıgım kod aşagıda

#include <stdio.h>
#include <ctype.h>
void kelyer(char a[],char b[]);
int c=0,i=0;
int main()
{
char a[100],b[100];
int kth;
printf("Write sentence: ");
gets(a);
printf("Your word produce after number of words which you entered\n");
printf("Enter a number: ");
scanf("%d",&kth);
printf("Enter a word: ");
scanf("%s",&b);
if(c==kth)
a[i+1]=b[i];
printf("\n %s\n",kelyer(a,b));
return 0;
}

void kelyer(char a[100],char b[100],int c)
{
while(a[i]!='\0' && b[i]!='\0'){
if(isspace(a[i]))
c++;
i++;
}
}


acehreli
14/08/2007, 19:11
Bence oncelikle temel konulari halletmen gerek:

1) kelyer'in bildirimiyle tanimi ayni olmali. Ornegin bildiriminde (declaration) iki parametre, taniminda (definition) uc parametre var.

2) main'in icindeki if (c == kth) denetimini anlamadigim gibi, gerekli oldugunu da dusunmuyorum. Bence giristen alinan uc nesneyi kullanan bir islev yazmalisin; ve bu islev sana bir sonuc olusturmali. O sonucu dOnUs degeri olarak veya bir cikis parametresi olarak belirleyebilirsin:

2a) Donus degeri olarak:


char * arayaGir(const char * cumle,
const char * kelime,
int kacinci)
{
int sonucunSigacagiKadarBuyukBirSayi = /* ... */
char * sonuc = malloc(sonucunSigacagiKadarBuyukBirSayi);

/* burada sonucu olustur */

return sonuc;
}


Tabii arayaGir'i cagiranlar onun dOndUrdugu sonucu 'free' ile geri vermek zorunda olacaklar:


char * sonuc = arayaGir("Merhaba dunya", "guzel", 1);
/* sonuc'u kullan */
free(sonuc);



2b) Cikis parametresi olarak:


void arayaGir(const char * cumle,
const char * kelime,
int kacinci,
char ** sonuc)
{
int sonucunSigacagiKadarBuyukBirSayi = /* ... */
*sonuc = malloc(sonucunSigacagiKadarBuyukBirSayi);

/* burada sonucu olustur */
}



char * sonuc = NULL;
arayaGir("Merhaba dunya", "guzel", 1, &sonuc);
/* sonuc'u kullan */
free(sonuc);


Ali

kaygisiz2
15/08/2007, 13:34
Ali arkadasım dedıkelrının %90 ından bırsey anlamadım. Fonksıyonu yazarken bıldırım ıle tanımı eksık yazmısm ok onu gordum sonradan. Ama sen hep pointer kullanmısın ben pointer bılmedıgım için dedikelrinden anlamadım.

2) If (c==kth) denetimini anlamaıssın. c fonksıyonun içinde artırdıgım kelime sayısı. kth da yukarıda kullanıcıdan aldıgım kacıncı kelımeden sonra girdiğimiz kelime gelecek sayısı fkat if (c==kth) satırından sonrakı satıra ben a[i]=b[i]; yazdım ama aslında tam dogru seyi yazıp yazmadıgımdanda emin değilim yardimci olursan sevinirim.

YENİ KODUM

#include <stdio.h>
#include <ctype.h>
void kelyer(char a[],char b[],int c);
int c=0,i=0;
int main()
{
char a[100],b[100];
int kth;
printf("Write sentence: ");
gets(a);
printf("Your word produce after number of words which you entered\n");
printf("Enter a number: ");
scanf("%d",&kth);
printf("Enter a word: ");
scanf("%s",&b);
if(c==kth)
a[i+1]=b[i];
printf("\n %s\n",kelyer(a,b));
return 0;
}

void kelyer(char a[100],char b[100],int c)
{
while(a[i]!='\0' && b[i]!='\0'){
if(isspace(a[i]))
c++;
i++;
}
}

half_life
21/09/2007, 07:09
Konunun üzerinden biraz geçmiş ama yine de çalışır durumda bir sonuc buraya koyulmamış. Bunun için çalışır durumda olan kodları koymanın uygun olacağını düşündüm.

#include <stdio.h>
#include <ctype.h>
#define SIZE 50
void kelyer(char a[],char b[],int c);
int main()
{
char a[SIZE],b[SIZE];
int kth;
printf("Write sentence: ");
gets(a);
printf("Your word produce after number of words which you entered\n");
printf("Enter a number: ");
scanf("%d",&kth);
printf("Enter a word: ");
scanf("%s",&b);
kelyer(a,b,kth);
return 0;
}
void kelyer(char a[100],char b[100],int c)
{
int i,j,spaces=0;
for(i=0;spaces != c;++i){
if(a[i] == ' ')
spaces++;
else if(a[i]== '\0'){
printf(" ");
break;
}
printf("%c",a[i]);
}
for(j=0;b[j]!='\0';++j)
printf("%c",b[j]);
printf(" ");
if(a[i] != '\0'){
for(;a[i]!='\0';++i)
printf("%c",a[i]);
}
}