In mảng sau khi xóa phần tử giống nhau trong mảng

em input đc giá trị nhưng không out ddc kq sau xử lí. có cao thủ nào giỏi thích hộ em đc ko ạ. em xin cảm ơn

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/* 
 * File:   main.cpp
 * Author: admin
 *
 * Created on May 27, 2020, 6:46 PM
 */

#include <cstdlib>
#include<stdio.h>
#define MAX 100
// cho giá trị vào nè //

int input_size_number() {
    int result = 0;
    char string[MAX];
    char* buffer;
    do {
        printf("input array size ");
        scanf("%s", string);
        result = (int) strtol(string, &buffer, 10);
    } while (*buffer != '\0' || result <= 0);
    return result;

}
//nhập mảng nè//

void input_array(float *a, int n) {
    char* string;
    char* buffer;
    for (int i = 0; i < n; i++) {
        do {
            printf("input a[%d]", i + 1);
            scanf("%s", string);
            a[i] = strtof(string, &buffer);
        } while (*buffer != '\0');

    }
}



//hàm xử lí nè//

void deleting_duplicates(float *a, int *n) {

    int i, j, k;
    for (i = 0; i < (*n) - 1; i++) {
        j = i + 1;
        while (j<*n)
            if (a[i] == a[j]) {
                for (k = j; k < (*n) - 1; k++) {
                    a[k] = a[k + 1];
                    *n = (*n) - 1;
                }
            } else j = j + 1;
    }


}
// out kết quả xử lí nè//

void output_deting_dulicates(float a[])
 {
    printf("Mang sau khi xoa phan tu trung nhau:\n");
    printf("%f", a);
}

int main(int argc, char** argv) {

    int n;
    int size;
    float a[MAX];


    n = input_size_number();

    input_array(a, n);

    deleting_duplicates(a, &n);

    output_deting_dulicates(a);
 



    return 0;
}


nó out nhu thế này thì sao ạ

Đây là cách xuất mảng của bạn à? Học được hay tự nghĩ ra vậy?
Phần nhập thì bạn có dùng vòng lặp phải không?

2 Likes

e học viết tách hàm ra để mọi người dễ đọc dễ fix hơn ạ

Ý là bạn viết lại hàm này đó :smiley: kiểu như xuất cũng tương tự với nhập.

1 Like

là sao ạ là e viết lại giống nhập à anh

Nhắc lại lời mình thôi, đừng để ý bạn ạ.

1 Like

dạ có ạ em dùng vong lặp ạ để e loại bỏ cái trường hợp người dùng nhập sai bắt nhập lại á

Vẫn nhắc lại thôi, bạn đừng để ý.

1 Like

ồ ra thế cảm ơn nhiều nhiều nhiều nhiều nhiều ạ

chỉ điểm dùm e sai chỗ nào luôn đc ko ạ

À không. Xin lỗi nhé. Mình nhìn không kĩ. Mình không thấy biến string là con trỏ :))
Vấn đề của bạn chỉ nằm ở chỗ hàm output thôi nhé. Bên nên dùng vòng lặp để xuất từng phần tử trong mảng. Chứ không phải dùng lệnh xuất và truyền biến a như thế

1 Like

được rồi nha . xin chân thành cảm ơn các anh em đã giúp e hiểu bài này <3

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