Şimdi Ara

C de ' stringi parçalara ayırma yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
4.522
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar merhaba. Yapmak istediğim program kullanıcıdan string istiyorum. Mesela 15xkare+12x+3 ve bunu + lardan 3 e ayırmak istiyorum ve ayırdığım parçaların rakamlarını başka stringe aktarmak istiyorum. Programı yazdım ancak anlamadığım bir sorun var . Program a ,b ,c stringlerine saçma saçma değerler atıyor. Bi göz atarsanız sevinirim.Çok sinir oldum çünkü.

    Yazdığım Kod Şu;
    quote:


    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
    {

    char denklem[30];
    char a[15],b[15],c[15];
    int x,y,z,q=0,w=0,e=0,o; // x,y,z for icin // q w e de a,b,c nin eleman sayısını 0 dan baslatabilmem icin.

    gets(denklem);
    printf(denklem);
    printf("\n");
    o=strlen(denklem);
    printf("Denklemdeki Karakter sayisi:%d\n",o);
    for(x=0;x<strlen(denklem);x++)
    {
    if(denklem[x]=='1' || denklem[x]=='2' || denklem[x]=='3' || denklem[x]=='4' || denklem[x]=='5' || denklem[x]=='6' || denklem[x]=='7' || denklem[x]=='8' || denklem[x]=='9' ||denklem[x]=='0' )
    {
    a[q]=denklem[x];
    q=q+1;

    }
    else if(denklem[x]== '+'){
    break;
    }
    else
    continue;
    }
    printf(a);
    printf("\n---\n");
    for(y=x+1;y<strlen(denklem);y++)
    {
    if(denklem[y]=='1' || denklem[y]=='2' || denklem[y]=='3' || denklem[y]=='4' || denklem[y]=='5' || denklem[y]=='6' || denklem[y]=='7' || denklem[y]=='8' || denklem[y]=='9' ||denklem[y]=='0' )
    {
    b[w]=denklem[y];
    w=w+1;
    }
    else if(denklem[y]=='+'){
    break;
    }
    else
    continue;

    }
    for(z=y+1;z<strlen(denklem);z++)
    {
    if(denklem[z]=='1' || denklem[z]=='2' || denklem[z]=='3' || denklem[z]=='4' || denklem[z]=='5' || denklem[z]=='6' || denklem[z]=='7' || denklem[z]=='8' || denklem[z]=='9' ||denklem[z]=='0' )
    {
    c[e]=denklem[z];
    e=e+1;
    }
    else
    continue;
    }


    printf(a);
    printf("\n");
    printf(b);
    printf("\n");
    printf(c);
    printf("\n");
    printf(".x:%d y:%d y:%d",x,y,z); // for dongulerinin hangi noktada bittigini gostermek icin.

    return 0;
    }







  • Yazdığın kodu inceleyebilecek durumda değilim şu an ancak strtok fonksiyonunu ve aşağıda verdiğim küçük programcığı incelemeni tavsiye ederim.
    #include <stdio.h>
    #include <string.h>
    int main(void)
    {
    char text[] = "Ali, Veli, Selami, Ayse, Fatma";
    char *str;

    for(str = strtok(text,", ");str != NULL; str = strtok(NULL,", "))
    puts(str);

    getch();
    return 0;
    }

    Kolay gelsin...



    < Bu mesaj bu kişi tarafından değiştirildi mrtkprc -- 11 Şubat 2014; 23:20:21 >
  • stabil131 S kullanıcısına yanıt
    Kodunu anlamakta cok zorluk çekiyorum acıkcası neden dersen a,b,c,x,y,z ne oldugunu sureklı karıstırdım daha mantıklı ısımler verseydın akılda kalıcılık bakımından iyi olurdu birde kodu tekrar
    [ parantezi açın sonra içine code yazın sonra ] ile kapatın sonra programınızı
    yazdıktan sonra [ parantezi açın / işareti koyun sonra code yazıp ] ile kapatın.
    Bu şekilde yaparak gonderirsenız daha kolay anlaşilır
  • stabil131 S kullanıcısına yanıt
    1.a,b,c String degil char dizisi String farklıdır
    2.olarak sen sonda a ,b,c dizilernin isimlerini vermissin yani sadece 1.elemanı yazdırırlar yani onları puts ile yapman gerekmez miydi?
    3.olarak else continue; ler tamamen gereksız for döngusunun içinde oldugundan zaten tekrar başa doncek yanı silsende aynı şey
    4.olarak o iffleri o kadar uzatmak performansı düşürür yani ne kadar çok koşul o kadar yavaşlama bunun için karekterin rakam olup olmadıgını anlayan ve ona gore true yada false donduren fonksıyonlar var onlardan birini kullanman daha mantıklı
    5.olarak lutfen degişken isimlerini anlamlı şeyler ver hem sen sonradan okudugunda hemde birisi kodunu incelerken zorluk çekmesin


    4ün devam :) ctype.h da tanımlılar
    isalpha(karakter) isalpha karakterın harfmı oldugunu kontrol eder
    isdigit (karakter) isdigit karakterin sayimi oldugunu kontrol eder
    isspace(karakter) isspace karakterın boslukmu oldugunu gosterır



    < Bu mesaj bu kişi tarafından değiştirildi NsncHunter1 -- 11 Şubat 2014; 20:54:43 >




  • Yapay Zeka’dan İlgili Konular
    c'de yardım
    14 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.