diziye sayı alırken hata verıyor

Başlatan bahadirhtp, 09 Aralık 2011 - 18:42:40

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

bahadirhtp

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


void getdata( int ary[]);
void analyze(int ary[],int freq[]);
void display(int freq[]);

int main(int argc, char *argv[])
{
    int data[10],freq[5];
    getdata( data);
    analyze(data,freq);
    display(freq);

  system("PAUSE");
  return 0;
}

void getdata( int ary[]) {
    int i=0;
    printf("Enter %d integer values between 0-5\n",10);
    for(i=0;i<10;i++){
        scanf("%d\n",&ary[i]);
        }return;
    }

void analyze(int ary[],int freq1[]) {
        int i,t,data[10];
        for(i=0;i<5;i++){
            freq1[i]=0;
            for(t=0;t<5;t++)
              freq1[data[i]]+=1;
             
        } return; }

      void display(int freq1[]) {
            int i=0,k=0;
            for(i=0;i<5;i++){
                printf("%d %d",i,freq1[i]);
                for(k=0;k<freq1[i];k++){
                    printf("*");}}
                    return;

                    }

GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

egcodes

#1

void analyze(int ary[],int freq1[]) {
        int i,data[range];
        for(i=0;i<range;i++){
            freq1[i]=0;
            for(i=0;i<size;i++)
              freq1[data[i]]+=1;
              return;
        } }



* data[i] kısmında data'nın içindekiler çöp değer sen fonksiyon içinde yeniden oluşturduğun için önceki data ile bir alakası yok

* ayrıca analyze fonksiyonunda yolladığın freq dizinin boyutu range(yani 5) ama atama yaparken size(yani 10) kullanmısın

*return; for'u hemen bitiriyor.

Kod ne işe yarıyor açıkcası anlamadım. Bayağı karıştırmıssın kolay gelsin.
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

bahadirhtp

void analyze(int ary[],int freq1[]) {
        int i,t,data[5];
        for(i=0;i<5;i++){
            freq1[i]=0;
            for(t=0;t<10;t++)
              freq1[data[i]]+=1;
             
        } return; }
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

egcodes

Yok hocam. Şunu demek istiyorum.

fonksiyon içerisinde oluşturduğun int data[5]'in içerisine bir atama yapılmadığı için içi çöp değerdir yani ne olursa o an bellekte.

sonra kodda freq1[data[i]] yaptığında data[i]=çöpdeger(örneğin 4335) freq1[4335]'e ulaşamaya çalışıyorsun o yüzden hata veriyor.

Orayı incelemen gerek.

Kolay gelsin.
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

bahadirhtp

#4
getdata fonksıyonu bunun ıcındı zaten, data[i] mesela i=0 yanı ilk element gırıldıgınde 2 gıbı, data[0]=2 olmaz mı?
freq[data[0]]=freq[2] degıl mıdır?
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

egcodes

Yok ordakinin ismi data diye altta analyz fonksiyonunda oluşturduğun data isimli dizin aynı değil. Üstteki data'nın adresini yollaman lazım aşağıya.
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

bahadirhtp

haklısın ve duzellttım ama bu seferde son gırılen elemandan sonra hata verdı (:

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


void getdata( int ary[]);
void analyze(int ary[],int freq[]);
void display(int freq[]);

int main(int argc, char *argv[])
{
    int data[10],freq[5];
    getdata( data);
    analyze(data,freq);
    display(freq);

  system("PAUSE");
  return 0;
}

void getdata( int ary[]) {
    int i=0;
    printf("Enter %d integer values between 0-5\n",10);
    for(i=0;i<10;i++){
        scanf("%d\n",&ary[i]);
        }return;
    }

void analyze(int ary[],int freq1[]) {
        int i,t,data[10];
        for(i=0;i<5;i++){
            freq1[i]=0;
            for(t=0;t<5;t++)
              freq1[data[i]]+=1;
             
        } return; }

      void display(int freq1[]) {
            int i=0,k=0;
            for(i=0;i<5;i++){
                printf("%d %d",i,freq1[i]);
                for(k=0;k<freq1[i];k++){
                    printf("*");}}
                    return;

                    }

GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

egcodes

Hocam ben yazdım. Sen farkı bakıp çözersin artık.

Kolay gelsin.


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


int *getdata( int ary[]);
void analyze(int ary[],int freq[], int *data);
void display(int freq[]);

int main(int argc, char *argv[])
{
    int data[10],freq[5];
    int *ary = getdata(data);
    analyze(data,freq, ary);
    display(freq);

  system("PAUSE");
  return 0;
}

int *getdata( int ary[]) {
    int i=0;
    printf("Enter %d integer values between 0-5\n",10);
    for(i=0;i<10;i++){
        scanf("%d\n",&ary[i]);
        }
        return ary;
    }

void analyze(int ary[],int freq1[], int *data) {
        int i,t;
        for(i=0;i<5;i++){
            freq1[i]=0;
            for(t=0;t<5;t++)
              freq1[data[i]]+=1;
             
        } return; }

      void display(int freq1[]) {
            int i=0,k=0;
            for(i=0;i<5;i++){
                printf("%d %d",i,freq1[i]);
                for(k=0;k<freq1[i];k++){
                    printf("*");}}
                    return;

                    }

1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

bahadirhtp

Pointer olmadan da çalıştırdım ama senın yontemde dogru ve guzel (:

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


void getdata( int ary[]);
void analyze(int ary[],int freq[]);
void display(int freq[]);

int main(int argc, char *argv[])
{
    int data[20],freq[10];
    getdata( data);
    analyze(data,freq);
    display(freq);

  system("PAUSE");
  return 0;
}

void getdata( int ary[]) {
    int i=0;
   
   for(i=0;i<20;i++){
        ary[i]=0;
        }
         printf("This program shows how many times did you entered digits with star (*).\n");
         printf("Enter %d integer values between 0-9\n",20);
         for(i=0;i<20;i++){
        scanf("%d\n",&ary[i]);
        }

        return;
    }

void analyze(int ary[],int freq1[]) {
        int i,t;
       
        for(i=0;i<10;i++){
            freq1[i]=0;}
       
        for(t=0;t<20;t++){
              freq1[ary[t]]+=1;
             
        } return; }

      void display(int freq1[]) {
            int i=0,k=0;
            for(i=0;i<10;i++){
                printf("\nfreq1[%d]= %d",i,freq1[i]);
                for(k=0;k<freq1[i];k++){
                    printf(" *");
                    }}
                    return;

                    }
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

egcodes

Pointer olmadan yaptığın kodu paylaşır mısın? Ordaki veriyi oraya aktarmanın başka bir yoluda global değişkenlerdir.

Öyle mi yaptın yoksa başka bir yol varda ben mi bilmiyorum :). Öğrenelim.
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

sem

#10
Ben durumu yanlış anlıyorum acaba =) Yorgunluktan yanlış olabilme ihtimalimi göz önünde bulunduracağınızı düşünerek acaba soru şu mu diye sormak istiyorum =)


#include <stdio.h>
void fill_array(int array[])
{
    int i;
    for(i = 0; i < 5; ++i){
        array[i] = 666;
    }
}

void print_array(int array[])
{
    int i;
    for(i = 0; i < 5; ++i){
        fprintf(stdout, "%d\n",array[i]);
    }
}

int main(int argc, char *argv[])
{

      int ary[5];
      fill_array(ary);
      print_array(ary);

  return 0;
}



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 09 Aralık 2011 - 21:58:45

EK: "Hâla" yanlış anlamıyorsam int * dönüşlü olan fonksiyon void olarak değiştirilip kod ona göre revize edilebilir sanırım =)


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


void getdata( int ary[]);
void analyze(int ary[],int freq[], int *data);
void display(int freq[]);

int main(int argc, char *argv[])
{
    int data[10],freq[5];
    getdata(data);
    analyze(data,freq, data);
    display(freq);

  system("PAUSE");
  return 0;
}

void getdata( int ary[]) {
    int i=0;
    printf("Enter %d integer values between 0-5\n",10);
    for(i=0;i<10;i++){
        scanf("%d\n",&ary[i]);
        }

    }

void analyze(int ary[],int freq1[], int *data) {
        int i,t;
        for(i=0;i<5;i++){
            freq1[i]=0;
            for(t=0;t<5;t++)
              freq1[data[i]]+=1;

        } return; }

      void display(int freq1[]) {
            int i=0,k=0;
            for(i=0;i<5;i++){
                printf("%d %d",i,freq1[i]);
                for(k=0;k<freq1[i];k++){
                    printf("*");}}
                    return;

                    }
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?