Şimdi Ara

scanf ile tek satırda birden çok değer okumak

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
7
Cevap
0
Favori
3.202
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba Arkadaşlar,
    C diline yeni başladım ve anlamadığım noktalar oluyor;bu nedenle bir sorum olacak.
    c dilinde kullanıcıdan sayıyı alırken
    scanf("%d",&...
    gibi komutlar yazıyorduk.Benim sorum ise şu:kullanıcıdan bir takım sayı almam lazım diyelim,bu sayı adetini de kullanıcıdan da aldığımı ve &dim şeklinde aldığımı farz edelim, ve kullanıcı bu sayıları aralarında birer boşluk bırakarak girsin.Acaba kullanıcıdan scanf komuduyla nası alabilirim her sayıyı?
    Teşekkürler



  • Teşekkür ederim;ancak yanlış ifade etmişim kendimi sanırım.Sorunumu şöyle anlatayım.Amcım Pointer ile iki boyutlu dinamik dizi oluşturmak.İlk önce kaç tane satır olacağını soruyorum daha sonra da kullanıcın istediği kadar sütun oluşturuyorum her bir satıra.Kullanıcı sütun sayılarını boşluk bırakarak giriyor.Örnerğin;
    Please enter size of first dimension of array:4
    Please enter size of 4 dimensions respectively: 3 5 8 7
    ancak 3 5 8 7 sayılarını okuyamıyorum.Kodumun sayıları okuma kısmı şu şekilde:

    int** matris;
    printf("Please enter size of first dimension of array:\n");
    scanf("%d",&dim);
    matris=(int**)malloc(sizeof(int*)*dim);//dizi icin yer alinir
    printf("Please enter size of %d dimensions respectively:\n", dim);
    for(satir=0;satir<1;satir++){
    scanf("%d",&a);
    matris[satir]=&a;

    Ancak hata yapmaktayım ki kullanıcıdan sayıları alamıyorum.Hatamı göremiyorum.Yardım ederseniz çok sevinirim.
    Teşkkürler.




  • int** matris;  
    printf("Please enter size of first dimension of array:\n");
    scanf("%d",&dim);
    matris=(int**)malloc(sizeof(int*)*dim);//dizi icin yer alinir
    printf("Please enter size of %d dimensions respectively:\n", dim);
    for(satir=0;satir<=dim;satir++){
    scanf("%d",&a);
    matris[satir]=&a;


    böyle olmucakmı. Sonuçta dim satır sayısı. sende o kadar satır sayısı istiyorsan dim'e kaydettiğin satır sayısından kücük eşit olması gerekir.
    For döngüsünde görmedinsen
  • Teşekkür ederim evet sorun o galiba:)

    Bir de syntax error at end of input diye bir error alıyorum derlerken.Neden olabilir acaba?
  • quote:

    Orijinalden alıntı: .::SNIPER::.

    Teşekkür ederim evet sorun o galiba:)

    Bir de syntax error at end of input diye bir error alıyorum derlerken.Neden olabilir acaba?

    kodun tamamı nedir ?
    Orda değişkenlerin bazıları tanımlanmamış. dim,a bunları tanımlaman gerekmezmi.
    int a,dim,matris; gibi ...
    Tabi kütüphane hatalarıda olabilir.
    #include<stdio.h> gibi :S matrix nedir bilmiyorum daha fazla yardımcı olamıcam
  • Kodun tamamı aslında şöyle :))


     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    void array_allocate(int adet,int* adres ){
    adres=(int*)malloc(sizeof(int)*(adet+1));
    }
    //diziye random sayı atama
    void rand_fill(int adet,int** dizi,int line){
    int i,rnumb;
    srand(time(NULL));
    dizi[line][0]=adet;//dizi adeti daha sonra unutmamak icin dizinin 1. adersine adet atanir.
    for(i=0;i<adet;i++){
    rnumb=((int)rand()) / RAND_MAX*100 ;
    dizi[line][i]=rnumb;
    }
    }
    //arrayin printi
    void print_array(int line,int** dizi,int adet){
    int i;
    printf("Dimension #%d:\t",line);//hangi satir oldugu
    for(i=1;i<adet;i++){
    printf("%d\t",dizi[line][i]);//dizinin random atanan degerlerinin printi
    }
    printf("\n");
    }
    //bir satirdaki dizileri siralanması
    void sort_array(int adet,int line,int** dizi){
    int i,j,temp;
    for(i=0;i<adet;i++){
    for(j=i+1;j<adet+1;j++){
    if(dizi[line][i]>dizi[line][j]){
    temp=dizi[line][j];
    dizi[line][j]=dizi[line][i];
    dizi[line][i]=temp;
    }
    }
    }
    //siralanan dizinin printi.
    printf("Dimension #%d:\t",line);
    for(i=1;i<adet;i++){
    printf("%d\t",dizi[line][i]);
    }
    printf("\n");
    }
    //kullanici line.satiri kolon kadar artirmak isterse
    void reallocate_array(int line, int kolon, int** dizi,int eskiboy,int* pline){
    int i,rnumb;
    int *ptr=&kolon;
    ptr=(int*)malloc(sizeof(int)*(eskiboy+kolon));//yeni boy icin yer alinir
    for(i=0;i<eskiboy;i++){
    ptr[i]=dizi[line][i];//eski degerler yeni diziye aktarilir
    i++;
    }
    srand(time(NULL));
    for(i=eskiboy;i<eskiboy+kolon;i++){ //yeni dizinin yeni kismina random sayi atanir
    rnumb=((int)rand()) / RAND_MAX*100 ;
    ptr[i]=rnumb;
    }
    free(pline);
    pline=(int*)malloc(sizeof(int)*(eskiboy+kolon));//yeni dizi ezki diziye aktarili boylece dizinin sutun line.satirinin sutun sayisi artirilmis olur
    for(i=0;i<eskiboy+kolon;i++){
    dizi[line][i]=ptr[i];
    }

    int main()
    {
    int i,dim,line,line2,a,satir,kolon;
    char* command;
    int** matris;
    printf("Please enter size of first dimension of array:\n");
    scanf("%d",&dim);
    matris=(int**)malloc(sizeof(int*)*dim);//dizi icin yer alinir
    printf("Please enter size of %d dimensions respectively:\n", dim);
    for(satir=0;satir<dim;satir++){
    scanf("%d",&a);
    matris[satir][0]=a;
    array_allocate(a+1,matris[satir]);// adet a+1 girildi cunku dizinin sutun sayisi tutulmak istendi
    rand_fill(a+1,matris,satir);
    }
    for (i=0;i<dim;i++){
    print_array(i,matris,matris[i][0]+1);
    }
    for(i=1;i<dim;i++){
    printf("%d\t",dizi[line][i]);
    }
    command=(char*)malloc(sizeof(char*));
    scanf("%s",command);
    if(!(strcmp(command,"merge"))){//kullanici merge 2 3 gibi bi deger girerse
    scanf("%d %d",&line,&line2);
    }
    else if(!(strcmp(command,"sort"))){
    scanf("%d",&a);
    sort_array(matris[a][0]+1,a,matris);
    }
    else if(!(strcmp(command,"reallocate"))){//kullanici dizinin belirli bi satirinin sutun miktarini artirmak isterse
    scanf("%d %d",&line, &kolon);
    reallocate_array(line,kolon,matris,matris[line][0]+1,matris[line]);
    }
    free(matris);//matris geri verilir
    for(i=0;i<dim;i++){
    free(matris[i]); //matris diger random atanan sayilari geri verilir
    }
    return 0;
    }



    < Bu mesaj bu kişi tarafından değiştirildi .::SNIPER::. -- 13 Aralık 2009; 22:36:27 >




  • quote:

    Orijinalden alıntı: .::SNIPER::.

    Teşekkür ederim evet sorun o galiba:)

    Bir de syntax error at end of input diye bir error alıyorum derlerken.Neden olabilir acaba?


    inputun sonunda syntax error alman çok doğal çünkü for döngüsünü söylerken arkadaş satir <= dim yapmış halbuki satir < dim olmalı.... orada <= yaptığı için sonda bir eleman daha almak istiyor ama alamıyor... çünkü matriste o kadar yer yok... sadece satir < dim yaparak dene bir de ;)
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.