Bài tập mảng trong C++


Bài 1: Viết một hàm tính tổng các số được nhập trên dòng lệnh ( dùng hàm atoi để chuyển chuỗi thành số).
Ví dụ:
Nhập: 1 2 3 4 0
Xuất: 10

1 Like

Bạn đọc bài này trước khi đặt câu hỏi nè

Em đăng lên không phải để hỏi mà để thảo luận cách giải quyết, mà em là hs THPT, em mới học C++ thôi ạ
Anh có thể cho em ý tưởng làm bài không?

3 Likes

@Tiger Bạn vào mục lục này để tìm bài học về Mảng trong C++ Mục lục các bài học và bài viết hay Bài này rất đơn giản, sau khi xem phần Mảng bạn sẽ làm được ngay.

1 Like

hàm atoi là hàm gì vậy

Hàm (atoi…)
CHỨC NĂNG: Chuyển đổi chuỗi ký tự thành số nguyên
CÚ PHÁP:
(atoi str)
GIẢI THÍCH:
str : Là chuỗi ký tự (chứa các chữ số)

Mấy bạn làm đc bài trên ko cho mình ý tưởng với, mình gặp rắc rối với hàm atoi, mình chuyển char -> int xong ko được kết quả mong muốn

Ok, post code của bạn lên đây @Tiger

1 Like

bạn có thể cho mình hỏi nó ở trong bài nào trong c++ không. mình kiếm không thấy @btm

À, phần atoi mình chưa làm @blacku9 ơi.
@Tiger Bài này hay đấy, nhưng không rõ nội dung cụ thể là nhập đại 1 chuỗi vào hay là sao. Đề bài tập em copy đầy đủ rồi hả.

Đây là ví dụ của hàm atoi (tức là hàm đổi từ chuỗi sang số)
http://www.tutorialspoint.com/c_standard_library/c_function_atoi.htm

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

int main()
{
   int val;
   char str[20];
   
   strcpy(str, "98993489");
   val = atoi(str);
   printf("String value = %s, Int value = %d\n", str, val);

   strcpy(str, "tutorialspoint.com");
   val = atoi(str);
   printf("String value = %s, Int value = %d\n", str, val);

   return(0);
}

Nhưng vấn đề của bài này là nhập chuỗi có khoảng trắng

Sau khi em nhập xong, em lại phải tách chuỗi ra thành từng phần nhỏ (cách nhau bởi khoảng trắng) rồi mới dùng atoi rồi mới + lại được. Thành ra cái đề từ dễ, thành khó (vì bắt buộc phải dùng atoi). Nếu không dùng atoi thì chắc là dễ hơn :slight_smile: Không hiểu người ra đề có giải đề này chưa.

Đây là một cách giải đơn giản. Loại bỏ các vấn đề phức tạp của bài toán, chú trọng vào việc làm quen với hàm atoi

#include<stdio.h>

/*
 * Nhập vào một chuỗi các số có MỘT chữ số, cách nhau bằng khoảng trắng.
 * Trả về tổng của chuỗi đó, sử dụng atoi
*/
int main()
{
    printf("Nhap vao chuoi so: ");
    int sum = 0;
    char c;
    while((c = getchar()) != '\n') {
        if (c != ' ')
            sum += atoi(&c);
    }
    printf("sum = %d\n", sum);
    return 0;
}

Xem thêm từ bài C 24 -> C30 để nắm thêm về getchar nếu chưa xem qua :smile:

3 Likes

Thank a, hóa ra là dùng atoi(&c) , trước em toàn dùng atoi© thôi.

2 Likes

Vậy là em đã làm thử, mà em không post code lên. Post lên có phải nhanh hơn không hehe

atoi nhận vào là địa chỉ của char, tức char*. Trong trường hợp của em, em khai báo char c; nên em phải truyền địa chỉ của nó vào.

2 Likes

@Tiger cho mình rút lại comment ở trên nhé. Tại bạn k post code và lỗi của bạn lên.

2 Likes

xin lỗi mọi người,không liên quan một chút. mình có một bài toán, yêu cầu nhập vào một xâu gồm toàn kí tự số rồi in ra các kí tự đó dưới dạng số. Mình có lấy một cái mảng 2 chiều( từng ptu của mảng là 1 xâu) để gán từng kí tự của xâu sang mảng đó. Mình có dùng hàm atoi nhưng khi in bị lỗi, ai biết chỉ giúp mình với. Thanks mn

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?