---------------------------------------------------------

Chào mừng bạn đến với diễn đàn Công Nghệ Thông Tin CK08 Ca Mau Community College.
Hy vọng diễn đàn sẽ là nơi giao lưu học hỏi và chia sẽ niềm đam mê tri thức.
Chúc bạn một ngày an lành và vui vẻ và luôn thành công trong cuộc sống.
################################


 
Trang ChínhTrợ giúpTìm kiếmThành viênĐăng kýĐăng Nhập

Share | 
 

 Hàm InsertEnd và InsertFirst

Go down 
Tác giảThông điệp
lptho42
Thành Viên chính thức
Thành Viên chính thức
avatar

Tổng số bài gửi : 48
Join date : 30/03/2011

Bài gửiTiêu đề: Hàm InsertEnd và InsertFirst   Mon Oct 10, 2011 3:59 pm

Đoạn code này mình tham khao trên mạng. Mình cố gắng chuyển đổi theo giống như yêu cầu hàm InsertEnd của thầy mà không được. Mong các bạn chia suy nghĩ thêm nha!

Code:

// vidu.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
#include<iostream>
#include<conio.h>

#include<string.h>

using namespace std;
#define Maxlength 30
typedef int ElementType;
typedef int Position;
typedef struct
 {
  ElementType Element[Maxlength];
  int Last;  //so phan tu cua danh sach
 }List;

void TaoRong(List &L)
 {
  L.Last=0;
 }

//them vao dau sanh sach
void InsertFirst(int x,List &L)
 {
  for(int i=L.Last;i>=1;i--)
    L.Element[i+1]=L.Element[i];
    L.Element[1]=x;
    L.Last++;
 }

//them vao cuoi danh sach
void InsertEnd(int x,List &L)
 {
  L.Last++;
  L.Element[L.Last]=x;
 }

//nhap va luu tru theo thu tu
void Nhap(List &L)
 {
  char str[30];
  cout<<"\nNhap vao mot day so nguyen :";
  gets(str);
  for(int i=1;i<=strlen(str);i++)
    InsertEnd(int(str[i-1])-48,L);
 }

//nhap va luu tru nguoc voi thu tu nhap
void NhapNguoc(List &L)
 {
  char str[30];
  cout<<"\nNhap vao mot day so nguyen: ";
  gets(str);         //ham nhap chuoi
  for(int i=1;i<=strlen(str);i++)
    InsertFirst(int(str[i-1])-48,L);
 }

void Xuat(List L)
 {
  for(int i=1;i<=L.Last ;i++)
    cout<<L.Element[i];
  getch();
 }

void main()
{
 
   List A,B;

  TaoRong(A);
  Nhap(A);
  cout<<"Danh sach vua nhap la:";
  Xuat(A);

  TaoRong(B);
  NhapNguoc(B);
  cout<<"Danh sach xuat nguoc la:";
  Xuat(B);

  getch();
}


Về Đầu Trang Go down
devil
Moderator
Moderator
avatar

Tổng số bài gửi : 58
Join date : 07/08/2010
Đến từ : Cà Mau

Bài gửiTiêu đề: Re: Hàm InsertEnd và InsertFirst   Tue Oct 11, 2011 6:32 pm

lptho42 đã viết:
Đoạn code này mình tham khao trên mạng. Mình cố gắng chuyển đổi theo giống như yêu cầu hàm InsertEnd của thầy mà không được. Mong các bạn chia suy nghĩ thêm nha!

Code:

// vidu.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
#include<iostream>
#include<conio.h>

#include<string.h>

using namespace std;
#define Maxlength 30
typedef int ElementType;
typedef int Position;
typedef struct
 {
  ElementType Element[Maxlength];
  int Last;  //so phan tu cua danh sach
 }List;

void TaoRong(List &L)
 {
  L.Last=0;
 }

//them vao dau sanh sach
void InsertFirst(int x,List &L)
 {
  for(int i=L.Last;i>=1;i--)
    L.Element[i+1]=L.Element[i];
    L.Element[1]=x;
    L.Last++;
 }

//them vao cuoi danh sach
void InsertEnd(int x,List &L)
 {
  L.Last++;
  L.Element[L.Last]=x;
 }

//nhap va luu tru theo thu tu
void Nhap(List &L)
 {
  char str[30];
  cout<<"\nNhap vao mot day so nguyen :";
  gets(str);
  for(int i=1;i<=strlen(str);i++)
    InsertEnd(int(str[i-1])-48,L);
 }

//nhap va luu tru nguoc voi thu tu nhap
void NhapNguoc(List &L)
 {
  char str[30];
  cout<<"\nNhap vao mot day so nguyen: ";
  gets(str);         //ham nhap chuoi
  for(int i=1;i<=strlen(str);i++)
    InsertFirst(int(str[i-1])-48,L);
 }

void Xuat(List L)
 {
  for(int i=1;i<=L.Last ;i++)
    cout<<L.Element[i];
  getch();
 }

void main()
{
 
   List A,B;

  TaoRong(A);
  Nhap(A);
  cout<<"Danh sach vua nhap la:";
  Xuat(A);

  TaoRong(B);
  NhapNguoc(B);
  cout<<"Danh sach xuat nguoc la:";
  Xuat(B);

  getch();
}



Có thể ý tưởng của bạn đúng nhưng mình xem code của bạn còn vấn đề vẫn chưa giải quyết được yêu cầu thầy đưa ra.

Tại sao các bạn không đưa ra suy nghĩ về thuật toán giải quyết bài toán, khoan nói đến code. Nếu ta được thuật toán đúng nhất thì lúc này việc code sẽ dễ dàng hơn.

Mình sẽ đưa ra giải thuật hàm InsertEnd:
Đầu tiên khi đọc hàm này các bạn phải liên tưởng đến hàm insert của Queue(Hàng đợi)
Quy tắc của Queue là thêm luôn luôn vào sau. Mỗi lần thêm vào là Q.rear tăng lên, và thêm nội dung X vào vị trí Q.rear-1.
Lúc này tại sao các bạn không thay thế Q.rear = L.last.Như vậy bài toán đã ra đáp án.
Các bạn học môn này là phải suy nghĩ, liên tưởng 1 chút, thầy cho bài toàn là nằm trong phần mình học. Nếu mình giải bài cho các bạn khi vô thi thầy cho các bạn bài hơi khác như bài này thì lúc này các bạn lúng túng không biết làm gì hết. còn các bạn tự làm thì khi tôi hoặc bạn khác sửa,góp ý bài các bạn sẽ nhớ lâu hơn và có tư duy hơn. Đây chỉ là ý kiến của tôi, nếu tôi có nói sai thì xin lỗi các bạn trước.

Chúc các bạn thành công. Cool
Về Đầu Trang Go down
Admin
Administrotor
Administrotor
avatar

Tổng số bài gửi : 877
Join date : 24/07/2010

Bài gửiTiêu đề: Re: Hàm InsertEnd và InsertFirst   Wed Oct 12, 2011 6:33 am

ý kiến thẳng thắn được đấy Devil Cool Cool Cool

_________________
Tất cả vì 4rum cntt08.forumvi.com Yêu thế Yêu thế Yêu thế Yêu thế Yêu thế Yêu thế
Về Đầu Trang Go down
http://cntt08.forumvi.com
Sponsored content




Bài gửiTiêu đề: Re: Hàm InsertEnd và InsertFirst   

Về Đầu Trang Go down
 
Hàm InsertEnd và InsertFirst
Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: Ôn Thi Tốt Nghiệp-
Chuyển đến