Bài 3. Chuẩn hóa xâu. (4,0 điểm): Bạn Lan nhập vào một chuỗi kí tự gồm chữ cái, chữ số, kí tự đặc biệt và khoảng cách. Bây giờ bạn ấy muốn. Tìm xem trong chuỗi kí tự nhập vào có bao nhiêu kí tự số, tổn...

ADS
thumb up 0
thumb down
Trả lời câu hỏi của trần hải

Làm sao để có câu trả lời hay nhất?

  • Luôn có GIẢI THÍCH các bước giải
  • Không copy câu trả lời của Timi
  • Không sao chép trên mạng
  • Không spam câu trả lời để nhận điểm
  • Spam sẽ bị khóa tài khoản
ADS
CÂU TRẢ LỜI
avatar
Timi

29/03/2025

Trợ lý học tập AI - Câu trả lời này chỉ mang tính tham khảo
Dưới đây là một đoạn mã C++ thực hiện yêu cầu của bài toán mà bạn đã đưa ra. Đoạn mã này sẽ đọc chuỗi từ tệp `BAI3.INP`, sau đó xử lý để đếm số ký tự số, tính tổng các chữ số và lưu trữ các ký tự chữ cái. Cuối cùng, nó sẽ ghi kết quả vào tệp `BAI3.OUT`. ```cpp #include <iostream> #include <fstream> #include <cctype> #include <string> int main() { std::ifstream inputFile("BAI3.INP"); std::ofstream outputFile("BAI3.OUT"); if (!inputFile.is_open() || !outputFile.is_open()) { std::cerr << "Error opening file!" << std::endl; return 1; } std::string S; std::getline(inputFile, S); int countDigits = 0; int sumDigits = 0; std::string letters; for (char c : S) { if (isdigit(c)) { countDigits++; sumDigits += c - '0'; // Chuyển đổi ký tự số thành số nguyên } else if (isalpha(c)) { letters += c; // Thêm ký tự chữ cái vào chuỗi letters } } // Ghi kết quả vào tệp outputFile << countDigits << std::endl; outputFile << sumDigits << std::endl; outputFile << letters << std::endl; inputFile.close(); outputFile.close(); return 0; } ``` ### Giải thích mã: 1. **Thư viện**: Sử dụng các thư viện `<iostream>`, `<fstream>`, `<cctype>`, và `<string>` để xử lý đầu vào/đầu ra và các thao tác chuỗi. 2. **Mở tệp**: Mở tệp `BAI3.INP` để đọc và `BAI3.OUT` để ghi. 3. **Đọc chuỗi**: Sử dụng `std::getline` để đọc toàn bộ dòng từ tệp. 4. **Xử lý chuỗi**: - Duyệt qua từng ký tự trong chuỗi. - Nếu ký tự là số (`isdigit`), tăng biến đếm và cộng dồn vào tổng. - Nếu ký tự là chữ cái (`isalpha`), thêm vào chuỗi `letters`. 5. **Ghi kết quả**: Ghi số lượng ký tự số, tổng các ký tự số và chuỗi ký tự chữ cái vào tệp `BAI3.OUT`. 6. **Đóng tệp**: Đảm bảo đóng tệp sau khi hoàn thành. ### Cách biên dịch và chạy: - Lưu đoạn mã trên vào một tệp có đuôi `.cpp`, ví dụ `main.cpp`. - Sử dụng trình biên dịch C++ (như g++) để biên dịch: ```bash g++ main.cpp -o main ``` - Chạy chương trình: ```bash ./main ``` Đảm bảo rằng tệp `BAI3.INP` đã tồn tại và chứa chuỗi cần xử lý trước khi chạy chương trình.
Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
trần hải # Đọc dữ liệu từ file BAI3.INP with open("BAI3.INP", "r", encoding="utf-8") as file_in: s = file_in.read().strip() # Khởi tạo biến đếm và chuỗi kết quả count_digits = 0 sum_digits = 0 letters = "" # Xử lý chuỗi đầu vào for char in s: if char.isdigit(): # Kiểm tra nếu là ký tự số count_digits += 1 sum_digits += int(char) elif char.isalpha() or char == " ": # Kiểm tra nếu là ký tự chữ hoặc khoảng cách letters += char # Ghi kết quả ra file BAI3.OUT with open("BAI3.OUT", "w", encoding="utf-8") as file_out: file_out.write(f"{count_digits}\n") file_out.write(f"{sum_digits}\n") file_out.write(letters.strip()) # Loại bỏ khoảng trắng thừa nếu có
Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
ADS
avatar
level icon
NhatHungg

29/03/2025

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() {
   ifstream inputFile("BAI3.INP");
   ofstream outputFile("BAI3.OUT");

   if (!inputFile.is_open()) {
       cerr << "Khong the mo file BAI3.INP" << endl;
       return 1;
   }

   if (!outputFile.is_open()) {
       cerr << "Khong the mo file BAI3.OUT" << endl;
       return 1;
   }

   string s;
   getline(inputFile, s);

   int digitCount = 0;
   int digitSum = 0;
   string letters = "";

   for (char c : s) {
       if (isdigit(c)) {
           digitCount++;
           digitSum += c - '0';
       } else if (isalpha(c)) {
           letters += c;
       }
   }

   outputFile << digitCount << endl;
   outputFile << digitSum << endl;
   outputFile << letters << endl;

   inputFile.close();
   outputFile.close();

   return 0;
}

Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận

Nếu bạn muốn hỏi bài tập

Các câu hỏi của bạn luôn được giải đáp dưới 10 phút

Ảnh ads

CÂU HỎI LIÊN QUAN

logo footer
FQA.vn Nền tảng kết nối cộng đồng hỗ trợ giải bài tập học sinh trong khối K12. Sản phẩm được phát triển bởi CÔNG TY TNHH CÔNG NGHỆ GIA ĐÌNH (FTECH CO., LTD)
Điện thoại: 1900636019 Email: info@fqa.vn
Location Địa chỉ: Số 21 Ngõ Giếng, Phố Đông Các, Phường Ô Chợ Dừa, Quận Đống Đa, Thành phố Hà Nội, Việt Nam.
Tải ứng dụng FQA
app store ch play
Người chịu trách nhiệm quản lý nội dung: Nguyễn Tuấn Quang Giấy phép thiết lập MXH số 07/GP-BTTTT do Bộ Thông tin và Truyền thông cấp ngày 05/01/2024
Copyright © 2023 fqa.vn All Rights Reserved
gift-box
survey
survey
Đặt câu hỏi