Đọc file danh sách liên kết đơn

DANH SÁCH LIÊN KẾT ĐƠN /*PHẦN 8*/DANH SÁCH TỰ TẠO PHẦN 5*/

Ngày đăng: 27-04-2017 11:28:33

Rồi, tiến thẳng vào phần 8 nào!! Bài hôm nay sẽ là DANH SÁCH LIÊN KẾTĐƠN TỰ TẠO. Có kết hợp với tập tin cho thú vị nha!!

=====================================================

ĐỀ BÀI:

+tạo tập tin input.txt, dòngđầu tiên là số lượng phân số, những dòng tiếp theo là những phân số, mỗi dòng gồm 2 số là tử số và mẫu số cách nhau bởi khoảng trắng.

Thực hiện các yêu cầu sau:

+Đọc tập tin input.txt xuất ra các phân số đã nhập.

+Rút gọn các phân số.

+ Sắp xếp các phân số sau khi rút gọn.

+Ghi các phân số sau khi sắp xếp vào file output.txt.

====================================================

HÌNH ẢNH MINH HỌA:

Đọc file danh sách liên kết đơn

Đọc file danh sách liên kết đơn

Đọc file danh sách liên kết đơn

Đọc file danh sách liên kết đơn

Đọc file danh sách liên kết đơn

Đọc file danh sách liên kết đơn

====================================================

.CODE

#include "stdio.h"
#include "conio.h"
#include "time.h"
#include "Windows.h"

void textcolor(int x);

struct phanso
{
int tuso;.
int mauso;
};
struct node
{
phanso data;
struct node *next;
};
struct list
{
node *head;
node *tail;
};
void init(list &l)
{
l.head=l.tail=NULL;
}

node *Getnode(phanso x)
{
node*p;
p=new node;
if(p==NULL)
return NULL;
p->data=x;
p->next=NULL;
return p;
}
void addtail(list &l,node *p)
{
if(l.head==NULL)
{
l.head=l.tail=p;
}
else
{
l.tail->next=p;
l.tail=p;
}
}

void docfileinput(list &l,int &n)
{
FILE *File;
File = fopen("C:/input.txt", "r+t");
if(File==NULL)
{
printf("\nKhong doc duoc file input.txt"); // Báo l?i không d?c du?c file InPut.txt
}
else
{
textcolor(14); // Tô ch? màu vàng .
printf("\nDu lieu tu C:\\input.txt da doc duoc vao chuong trinh !");
textcolor(7); // Tr? v? màu ch? bình thu?ng .
fscanf(File,"%d\n",&n);
if(n<0)
{
printf("\nSo luong phan so khong hop le!Xin hay kiem tra lai trong File !");
}
else
{
init(l);
for(int i=1;i<=n;i++)
{
phanso x;
fscanf(File,"%d %d\n",&x.tuso,&x.mauso);
if(x.mauso==0)
{
printf("\nMau so cua phan so thu %d khong hop le!Xin vui kiem tra lai trong File !",i);
}
else if(x.mauso!=0)
{
if(x.mauso < 0)
{
x.tuso=x.tuso*-1;
x.mauso=x.mauso*-1;
}
node *p=Getnode(x);
addtail(l,p);
}
}
}
}
fclose(File); // Ðóng File.
}

void xuatdulieu(list l)
{
int dem=0;
for(node *p=l.head;p;p=p->next)
{
dem++;
}
printf("\nCo %d phan so trong danh sach",dem);
printf("\n");
int dem1=0;
for(node*p=l.head;p;p=p->next)
{
dem1++;
printf("\nPhan so thu %d la:%d/%d\n",dem1,p->data.tuso,p->data.mauso);
}
}

void rutgonphanso(list l)
{
node* p;
list ps;
init(ps);

for(p=l.head;p;p=p->next)
{
if(p->data.tuso>=0 && p->data.mauso>0)
{
int min;
min=p->data.tuso;
if(min>p->data.mauso)
{
min=p->data.mauso;
}
for(int i=min;i>=1;i--)
{
if(p->data.tuso%i==0 && p->data.mauso%i==0)
{
p->data.tuso=p->data.tuso/i;
p->data.mauso=p->data.mauso/i;
}
}
}

if(p->data.tuso<0 && p->data.mauso>0)
{
p->data.tuso=p->data.tuso*-1;
int min;
min=p->data.tuso;
if(min>p->data.mauso)
{
min=p->data.mauso;
}
p->data.tuso=p->data.tuso*-1;
for(int i=min;i>=1;i--)
{
if(p->data.tuso%i==0 && p->data.mauso%i==0)
{
p->data.tuso=p->data.tuso/i;
p->data.mauso=p->data.mauso/i;
}
}
}

addtail(ps,p);
}
textcolor(14); // Tô màu vàng .
printf("\n>>>>>>>>>>>>>>>> Xuat Ra Danh Sach Cac Phan So Sau Khi Rut Gon <<<<<<<<<<<<<<<<<\n");
textcolor(7); // Tr? v? màu ch? bình thu?ng .
xuatdulieu(ps);
}

void hoanvi(phanso &x,phanso &y)
{
phanso temp=x;
x=y;
y=temp;
}

void hamsaptangdan(list &l)
{
node *p,*q;
for(p=l.head;p;p=p->next)
{
for(q=p->next;q;q=q->next)
{
if((p->data.tuso*1.0)/p->data.mauso>(q->data.tuso*1.0)/q->data.mauso)
{
hoanvi(p->data,q->data);
}
}
}
}

void saptangdancacphanso(list l)
{
hamsaptangdan(l);
textcolor(14); // Tô màu vàng .
printf("\n>>>>>>>>>>>>>>>>>>>>>>>>>> Sap Tang Dan Cac Phan So <<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
textcolor(7); // Tr? v? màu ch? bình thu?ng .
xuatdulieu(l);
}

void ghifileoutput(list l,int n)
{
FILE *File;
File = fopen ("C:/output.txt","wt");
fprintf(File,"%d\n",n);
for(node *p=l.head;p;p=p->next)
{
fprintf(File,"%d %d\n",p->data.tuso,p->data.mauso);
}
textcolor(14);
printf("\nCac Phan So Sau Khi Sap Xep Tang Dan Duoc Ghi Vao File : output.txt Trong o C ! ");
printf("\n");
printf("\nMoi Ban Vao C:\\output.txt De Xem Ket Qua ! ");
printf("\n");
textcolor(7);
fclose (File); // Ðóng file l?i .
}


void resizeConsole(int width, int height)
{
HWND console = GetConsoleWindow();
RECT r;
GetWindowRect(console, &r);
MoveWindow(console, r.left, r.top, width, height, TRUE);
}


void gotoxy(int x,int y)
{
HANDLE hstdout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD position = {x,y};
SetConsoleCursorPosition(hstdout,position);
}


void textcolor(int x)
{
HANDLE mau;
mau=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(mau,x);
}


void thietke()
{
textcolor(14);
printf("\n--------------------------------------------------------------------------------\n");
printf("\n\t\t\t\tDANH SACH LIEN KET PHAN SO : \n");
printf("\n--------------------------------------------------------------------------------\n");
textcolor(7);
}

void Thanks()
{
system("cls");
srand(time(NULL));
for(int j=1;j<=20;j++)
{
int color=rand()%15+1;
Sleep(300);
gotoxy(j-1,40);
printf(" PHAN SO'SS ");
gotoxy(j,40);
textcolor(color);
printf("\nThanks You For Using The Jwep ! Goodbye And See You Later !\n");
}
textcolor(15);
getch();
gotoxy(3,42);
}

void MeNu()
{
resizeConsole(1000,800);
list l;
int n;
int luachon;
quaylai1:textcolor(2); // Tô màu xanh nh?t cho MeNu
printf("\n----------------------------- MeNu --------------------------------\n");
printf("\n1. Doc Du Lieu Cac Phan So Tu C:\\InPut.txt Vao Chuong Trinh ");
printf("\n2. Xuat Du Lieu Cac Phan So Vua Doc Tu File InPut.txt ");
printf("\n3. Rut Gon Cac Phan So ");
printf("\n4. Sap Xep Tang Dan Cac Phan So Sau Khi Da Duoc Rut Gon ");
printf("\n5. Ghi Noi Dung Cac Phan So Sau Khi Da Sap Xep Vao C:\\OutPut.txt ");
printf("\n0. Thoat Chuong Trinh ");
printf("\n-------------------------------------------------------------------\n");
textcolor(7); // Tr? v? l?i màu bình thu?ng .
printf("\n");
quaylai:printf("\nNhap Vao Lua Chon Cua Ban:");
scanf("%d",&luachon);
printf("\n");
printf("\nKet Qua:");
if(luachon==1)
{
system("cls");
thietke();
docfileinput(l,n);
printf("\n");
goto quaylai1;
}
else if(luachon==2)
{
system("cls");
xuatdulieu(l);
goto quaylai1;
}
else if(luachon==3)
{
system("cls");
rutgonphanso(l);
goto quaylai1;
}
else if(luachon==4)
{
system("cls");
rutgonphanso(l);
saptangdancacphanso(l);
goto quaylai1;
}
else if(luachon==5)
{
system("cls");
rutgonphanso(l);
saptangdancacphanso(l);
ghifileoutput(l,n);
goto quaylai1;
}
else if(luachon==0)
{
system("cls");
Thanks();
}
else if(luachon!=1&&luachon!=2&&luachon!=3&&luachon!=4&&luachon!=5&&luachon!=0)
{
printf("\nLua chon ban nhap vao khong hop le!Xin vui long nhap lai!");
goto quaylai;
}
}

int main()
{
MeNu();
}

Like, share nếu bạn thấy bài viết này có ích. Trân trọng cám ơn