Đây là nội dung của bài tập:
Hãy định nghĩa một hàm để vào một danh sách tên và lưu trữ chúng vào vùng nhớ cấp phát động dưới dạng mảng các xâu kí tự, và một hàm để đưa chúng ra màn hình:
Code:
void readnames(char *names[], const int size);
void writenames(char *names[], const int size);
và viết một hàm nữa để sắp xếp danh sách trên bằng phương pháp nổi bọt:
Code:
void bubblesort(char *names[], const int size);
Dưới đây là code của tôi, nó sai nhiều, mong các bạn sửa giùm.
Code:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
void input(char *names[], int size)
{
int i;
char *p=new char[20][20];
char s[20];
for (i=0; i<size; i++)
{
printf("\nEnter the name %i:", (i+1)); scanf("%s", s);
strcpy((p+i), s);
names[i]=(p+i);
}
}
void bubblesort(char *names[], int size)
{
int i,j;
char temp[20];
for(i=0; i<(size-1); i++)
{
for(j=(i+1); j<size; j++)
if (strcmp(names[i], names[j])>0)
{
strcpy(temp, names[i]);
strcpy(names[i], names[j]);
strcpy(names[j], temp);
}
}
}
void output(char *names[], int size)
{
int i;
cout<<"\n";
for (i=0; i<size; i++) printf("\n %s", names[i]);
}
void main(void)
{
int n;
char *thenames[20];
cout<<"Please enter the number of the students:"; cin>>n; cout<<"\n";
input(thenames, n);
bubblesort(thenames, n);
output(thenames, n);
getch();
}
Mong các bạn cũng chỉ rõ ra rằng làm cách nào tôi có thể khởi tạo một mảng của xâu kí tự (mảng 2 chiều kiểu char) trong vùng nhớ cấp phát động và gán địa chỉ của vùng nhớ đó cho con trỏ p kiểu char, và hơn thế nữa là cách sử dụng mảng 2 chiều đó thông qua con trỏ p.
Xin cảm ơn.