Çözüldü C++ dizi karakterlerini bulma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Mesaj gönderimine kapalı.

yedinciyigitt

Femtopat
Katılım
22 Ocak 2022
Mesajlar
7
Arkadaşlar dizi oluşturup içindeki karakterleri rakamları yazması gereken bir program yazıyoruım ama rakamı nasıl bulduracagım ve diziyi nasıl tanımlayacagım bilemiyorum yardımcı olabilir misiniz? İkinci görüntüde oldugu gibi alt satır ekleyınce hata veriyor nasıl tanımlamam gerek.

277108523_1618311031869793_6395133726621261398_n.jpg


275238141_1618310711869825_2510289546239742309_n.jpg
 
Son düzenleyen: Moderatör:
Çözüm
Tamamdır peki çıktıyı bu gösterdiğim şekilde almam için ne yapmam gerekli

DEGER:jmkj34kj
DEGER:etkmfghert
....::..
..........
C++:
#include <iostream>

#include <cstring>

#include <ctype.h>

using namespace std;

int main() {
  int deger_sayisi = 3; //değer sayısını zaten siz bileceğiniz için kodu ona göre yazıyorum.
  char deger[deger_sayisi][99] = {
    "jmkj34kj",
    "etkmfghert",
    "Ù322da@@kyumgyy3t5u7umey~{yyec€}{y6(y6(y6(y4ty67"
  };
  for (int a = 0; a < deger_sayisi; a++) {
    cout << "DEGER:" << deger[a];
    cout << "\n";
  }
  for (int i = 0; i < deger_sayisi; i++) {
    cout << "\n";
    for (int j = 0; j < strlen(deger[i]); j++) {
      if (isdigit(deger[i][j]) == 0) {
        cout << ".";
      } else {
        cout << ":";
      }
    }
  }

}
[CODE title="OUTPUT"]DEGER:jmkj34kj
DEGER:etkmfghert
DEGER:┘322da@@kyumgyy3t5u7umey~{yyecÇ}{y6(y6(y6(y4ty67
İngilizce olmayan karakterlerde sorun çıkıyor <locale.h> ile çözülebilir sanırım.

....::..
..........
.:::...........:.:.:..............:..:..:..:..::[/CODE]
Yapmak istediğin şey kullanıcıdan bir girdi alıp örneğin bu "asdf1234" olsun. Bunu ekrana cümlenin karakter sayısı: 8 Cümlenin Karakterleri a,s,d,f,1,2,3,4 diye yazdırmak mı?
 
c.type.h içerisinde yer alan isdigit fonksiyonunu kullanabilirsin.
Veya chr >= '0' && chr <= '9' de yapabilirsin.
 
Yapmak istediğin şey kullanıcıdan bir girdi alıp örneğin bu "asdf1234" olsun. Bunu ekrana cümlenin karakter sayısı: 8 cümlenin karakterleri A, S, D, F, 1, 2, 3, 4 diye yazdırmak mı?

Yok hocam sonradan girme istenmiyor ben bunları başta tanımlayacağım. O rakamları noktaya harfleri üst üste noktaya çevirecek bir program isteniyor.
 
Son düzenleyen: Moderatör:
Karakterden kastın nedir? Her bir sembole karakter denir normalde. İçindeki karakterleri rakamları demişsin. Böyle bir cümle yok Türkçede. Anlamlı değil.

Metinler bulunan bir listeden her bir metindeki rakam adedini almak istiyorsan aşağıdaki kodu kullanabilirsin. Anlamadığın kısımları sorabilirsin.
Ben bu kadar C++ bilmiyorum, biz bu kadar görmedik vb. bahaneler üreteceksen yukarıda beğendiğim örnek de iş görür. Arkada o tarz şeyler çalışıyor zaten.
Kod:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cctype>

int main() {
    std::vector<std::string> cumle{ "cumle1", "cumle2", "cumle3" };

    for (auto& i : cumle) {
        std::cout << std::count_if(i.begin(), i.end(), [](char c) { return std::isdigit(c); }) << " ";
    }

    std::cout << std::endl;

    return 0;
}
 
C++:
#include <iostream>
#include <cstring>
#include <ctype.h>
using namespace std;

int main(){
    int deger_sayisi = 2; //değer sayısını zaten siz bileceğiniz için kodu ona göre yazıyorum.
      char deger[deger_sayisi][99] = {"jmkj34kj" ,"etkmfghert"};
 
    for (int i=0; i < deger_sayisi;i++){
        cout << "\nDEGER:" << deger[i];
        cout << "\n";
        for (int j=0; j < strlen(deger[i]);j++){
            if (isdigit(deger[i][j]) == 0){
                cout << ".";
            }
            else{
                cout << ":";
            }
        }
    }
 
}
[CODE title="OUTPUT"]DEGER:jmkj34kj
....::..
DEGER:etkmfghert
..........[/CODE]
 
Hocam peki boşluklu bir karakter alınıyor mu? C = "asd fgh" giyok bir dizide tanımlayacagım karakterler bu şekilde boşluk yok {"Ù322da@@kyumgyy3t5u7umey~{yyec€}{y6(y6(y6(y4ty67"}

C++:
#include <iostream>
#include <cstring>
#include <ctype.h>
using namespace std;

int main(){
 int deger_sayisi = 2; //değer sayısını zaten siz bileceğiniz için kodu ona göre yazıyorum.
 char deger[deger_sayisi][99] = {"jmkj34kj" ,"etkmfghert"};

 for (int i=0; i < deger_sayisi;i++){
 cout << "\nDEGER:" << deger[i];
 cout << "\n";
 for (int j=0; j < strlen(deger[i]);j++){
 if (isdigit(deger[i][j]) == 0){
 cout << ".";
 }
 else{
 cout << ":";
 }
 }
 }

}
[CODE title="OUTPUT"]DEGER:jmkj34kj
....::..
DEGER:etkmfghert
..........[/CODE]

Hocam tam aklımdaki çizdiğim şeyi yazmışsınız, nasıl teşekkür etsem azdır. Bu tarz şeyleri öğrenebilecegim bir kaynak var mıdır? Türkçe olarak pek az şey buldum.
 
Son düzenleyen: Moderatör:
Hocam tam aklımdaki çizdiğim şeyi yazmışsınız, nasıl teşekkür etsem azdır. Bu tarz şeyleri öğrenebilecegim bir kaynak var mıdır? Türkçe olarak pek az şey buldum.

Harvard Uni'nin CS50, CS50X gibi ders videoları var. İngilizceniz yoksa bile otomatik çeviri ile gayet düzgün bir şekilde anlayabilirsiniz. Zaten dersler çok sade bir İngilizce ile ve hepsinin sade İngilizce ile yazılmış alt yazısı mevcut. Harvard CS50X önerimdir. Orada ödev falan da veriyor. Kurcalarsınız biraz anlarsınız zaten.

Hocam bir de kodda [99] olarak belirttiğim yeri siz değerlerinizde en büyük boyuttaki yazıya eşitleyin. Böylece hem daha az alan kaplamış olursunuz hem de daha hızlı bir işlem sağlanır.
 
Harvard Uni'nin CS50, CS50X gibi ders videoları var. İngilizceniz yoksa bile otomatik çeviri ile gayet düzgün bir şekilde anlayabilirsiniz. Zaten dersler çok sade bir İngilizce ile ve hepsinin sade İngilizce ile yazılmış alt yazısı mevcut. Harvard CS50X önerimdir. Orada ödev falan da veriyor. Kurcalarsınız biraz anlarsınız zaten.

Hocam bir de kodda [99] olarak belirttiğim yeri siz değerlerinizde en büyük boyuttaki yazıya eşitleyin. Böylece hem daha az alan kaplamış olursunuz hem de daha hızlı bir işlem sağlanır.
Tamamdır peki çıktıyı bu gösterdiğim şekilde almam için ne yapmam gerekli

DEGER:jmkj34kj
DEGER:etkmfghert
....::..
..........
 
Durum
Mesaj gönderimine kapalı.

Yeni konular

Geri
Yukarı