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]);
}
}
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.