Yazar |
|
mrflz
Luleburgaz
admin
Kayıt: 15.06.2006 |
|
Başlığa ne yazsam bilemedim ama şöyle uzun uzadıya sorabilirim
random string ureten bir fonksiyonum var ( char *RandomWord(char *word, int start, int end) )
ve bana geri donuste bir string dizi donduruyor.
ben bu fonsiyonu donguye sokup n kez donecek ve RandomWord' ün her geri dondurdugu dizinin adresini yine bir dizide tutmak istiyorum
while (x<n) {
arr=RandomWord(word , start, end);//olusturulan kelimeler alındı
x++;
}
yani bu arr nin her donus için adresini n boyutunda diziye nasıl alabilirim. bir dizi pointer sacmalamacası yasıyorum.. reset lazım
I see the ghosts of navigators but they are lost
|
|
Yazar |
|
enginkdal
Kayıt: 09.01.2008 |
|
while içinde
dizin[x]=arr; demek yetmiyor ki???
B?ZLER PAZARLiK DEGiL MEZARLIK DOSTLARIYIZ.
|
|
Yazar |
|
mrflz
Luleburgaz
admin
Kayıt: 15.06.2006 |
|
aslında yapmak istediğim sey dizi içinde dizi tutmak ama bunu yaparken dizi içinde diğer dizilerin baslangıc adreslerini tutmak <
I see the ghosts of navigators but they are lost
|
|
Yazar |
|
idristas
istanbul
Kayıt: 26.02.2010 |
|
char *kelimeDizisi[n];
x=0;
1. while (x<n) {
2. kelimedizisi[x]=RandomWord(word , start, end);//olusturulan kelimeler alındı
3. x++;
4. }
|
|
Yazar |
|
mrflz
Luleburgaz
admin
Kayıt: 15.06.2006 |
|
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 100
char *RandomWord(char *word, int start, int end) {
int len = rand()%(end-start) + start;
word [len] = 0;
while (len) {
word [--len] = 'A' + rand () % 26;
}
return word;
}
int main() {
int n=10, x=0, start=3, end=10;
char word[SIZE], *arr_;
system("CLS");
srand((int)time(NULL));
while (x<n) {
arr_=RandomWord(word , start, end);
//aslında burada RandomWord fonksiyonun dondurdugu dizinin adresini almak istiyorum ve bunları her donuste bir dizide tutmak istiyorum (burada diziyi alıyorum ben)
printf(" n %d - %s n ", x+1, arr_);
x++;
}
system("PAUSE");
return 0;
}
kod bu arkadaşlar temizledim pakladım <<
ama hala istedğimi alamadım :D.. amasyalı oralarda mı :D
I see the ghosts of navigators but they are lost
|
|
Yazar |
|
tensai
istanbul
Kayıt: 05.10.2009 |
|
mrflz yazdi
Ne istediğini net olarak anlatabilir misin. Yazdığın fonksiyon zaten bu dizinin(word) adresini döndürüyor
Bilginin efendisi olmak için calismanin usagi olmak sarttir.
|
|
Yazar |
|
extreme
Kahramanmaras
admin
Kayıt: 24.10.2006 |
|
mrflz yazdi
Şu tarz bişey işini daha iyi görür bence matris gereksiz yer kaplıyo ama illa matris diyosan bakarım bi daha
#include <stdio.h>
#include <stdlib.h>
char * randomString(int maxLenght) {
int lenght = rand() % maxLenght;
char* word = (char*) malloc(lenght * sizeof (char));
for (int i = 0; i < lenght; i++) {
*(word+i) = 'a' + rand()%26;
}
return word;
}
char** randomStringArray(int size,int maxStringLenght){
char** array = (char**)malloc(size*sizeof(char*));
for(int i=0;i<size;i++){
*(array+i) = randomString(maxStringLenght);
}
return array;
}
int main() {
char** array = randomStringArray(10,10);
for(int i=0;i<10;i++){
printf("%s
",*(array+i));
}
}
The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com
|
|
Yazar |
|
mrflz
Luleburgaz
admin
Kayıt: 15.06.2006 |
|
PHP de yapabliyor muyuz bu algoritma projesini ?!?! sinir olmak üzereyken <<
I see the ghosts of navigators but they are lost
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
Yazdığın kodda şöyle bir hata var; random ürettiğin karakter dizisinin başlangıç adresi SABİT. Yani her üretilen random string bellekte aynı yere yazılıyor. Dolayısıyla oluşturduğun string dizisinin tüm elemanları aynı bellek bloğuna işaret ediyor. Bunu engellemek için veri kopyalaması yapman gerekiyor. Bunun akabininde ikinci bir hata oluşuyor o da; pointer'ları kopyalayacağın dizi için baştan yer ayırmamış olman.
Kodu şu şekilde modifiye edebilirsin;
int n=10, x=0, start=3, end=10;
char word[SIZE], **arr_;
// dizi icin yer ayir
arr_ = (char**)malloc(sizeof(char*));
for(int i=0; i<n; i++)
arr_[i] = (char*)malloc(sizeof(char)*(SIZE+1));
srand((int)time(NULL));
while (x<n) {
// olusan stringi yeni alana kopyala
sprintf(arr_[x], "%s", RandomWord(word , start, end));
x++;
}
for(int i=0; i<n; i++)
printf("\n %d - %s\n ", i+1, arr_[i]);
Let`s make this world a better place to live !
|
|
Yazar |
|
mrflz
Luleburgaz
admin
Kayıt: 15.06.2006 |
|
clairvoyant yazdi | Yazdığın kodda şöyle bir hata var; random ürettiğin karakter dizisinin başlangıç adresi SABİT. Yani her üretilen random string bellekte aynı yere yazılıyor. Dolayısıyla oluşturduğun string dizisinin tüm elemanları aynı bellek bloğuna işaret ediyor. Bunu engellemek için veri kopyalaması yapman gerekiyor. Bunun akabininde ikinci bir hata oluşuyor o da; pointer'ları kopyalayacağın dizi için baştan yer ayırmamış olman.
Kodu şu şekilde modifiye edebilirsin;
int n=10, x=0, start=3, end=10;
char word[SIZE], **arr_;
// dizi icin yer ayir
arr_ = (char**)malloc(sizeof(char*));
for(int i=0; i<n; i++)
arr_[i] = (char*)malloc(sizeof(char)*(SIZE+1));
srand((int)time(NULL));
while (x<n) {
// olusan stringi yeni alana kopyala
sprintf(arr_[x], "%s", RandomWord(word , start, end));
x++;
}
for(int i=0; i<n; i++)
printf("
%d - %s
", i+1, arr_[i]); |
god bless you mannnnn
Modifiyeli yandan çarklı kod :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 100
char *RandomWord(char *word, int start, int end) {
int len = rand()%(end-start) + start;
word [len] = 0;
while (len) {
word [--len] = 'A' + rand () % 26;
}
return word;
}
int main() {
int n=10, x=0, start=5, end=20;
char word[SIZE], **arr_;
// dizi icin yer ayir
arr_ = (char**)malloc(sizeof(char*));
for(int i=0; i<n; i++)
arr_[i] = (char*)malloc(sizeof(char)*(SIZE+1));
srand((int)time(NULL));
while (x<n) {
// olusan stringi yeni alana kopyala
sprintf(arr_[x], "%s", RandomWord(word , start, end));
x++;
}
for(int i=0; i<n; i++)
printf("%d - %s", i+1, arr_[i]);
system("PAUSE");
return 0;
}
I see the ghosts of navigators but they are lost
|
|
Yazar |
|
mrflz
Luleburgaz
admin
Kayıt: 15.06.2006 |
|
@extreme
linux-windows arasında farkediyor galiba bu olay şimdi denedim en sonunda netbeans ile ama Ubuntuda denedim Windows da cillop çalışan kod Linux da Segemnttion Errör verdi .. senin kodu denedim Linux Netbeans te oldu.. nedir anlamadım :S:S:S:
I see the ghosts of navigators but they are lost
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
Kodu eksik yazmışım, şöyle olacak:
arr_ = (char**)malloc(sizeof(char*)*n);
Let`s make this world a better place to live !
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | | | | | |