Đề Bài : Viết chương trình nhập vào n số nguyên dương lẻ,các số này được lưu dưới dạng danh sách liên kết đơn,liệt kê và tính tổng các số chính phương có trong danh sách

Tải code tại đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

/* Đề Bài : Viết chương trình nhập vào n số nguyên dương lẻ,các số này được lưu dưới dạng danh sách liên kết đơn,liệt kê và tính tổng các số chính phương có trong danh sách . 677.cpp */
/* 

// Các thư viện sử dụng trong chương trình .
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "Windows.h"

// Khai báo cấu trúc dữ liệu danh sách liên kết đơn các số nguyên dương lẻ .
struct node
{
 int Data;
 struct node*pNext;
};
typedef struct node NODE;

struct list
{
 NODE*pHead;
 NODE*pTail;
};
typedef struct list LIST;

// Khởi tạo danh sách liên kết đơn .
void INit(LIST &l)
{
 l.pHead=NULL;
 l.pTail=NULL;
}

// Tạo Node trong danh sách liên kết đơn .
NODE*getnode(int x)
{
 NODE*p;
 p=new NODE;
 if(p==NULL)
  return NULL;
 p->Data=x;
 p->pNext=NULL;
 return p;
}

// Thêm vào cuối danh sách liên kết đơn .
void AddTail(LIST &l,NODE*new_ele)
{
 if(l.pHead==NULL)
 {
  l.pHead=new_ele;
  l.pTail=l.pHead;
 }
 else
 {
  l.pTail->pNext=new_ele;
  l.pTail=new_ele;
 }
}

// Nhập dữ liệu cho danh sách liên kết đơn .
void InPut(LIST &l)
{
 int n;
 quaylai:printf("\nNhap vao so luong cac so nguyen duong le:");
 scanf("%d",&n);
 if(n<0)
 {
  printf("\nSo luong khong hop le!Xin vui long nhap lai!");
  goto quaylai;
 }
 INit(l);
 for(int i=1;i<=n;i++)
 {
  int x;
  do{
   printf("\nNhap vao so nguyen duong le thu %d:",i);
   scanf("%d",&x);
   if(x<0||x%2==0)
   {
    printf("\nSo ban nhap vao khong hop le!Xin vui long nhap lai!");
   }
  }while(x<0||x%2==0);
  NODE*p=getnode(x);
  AddTail(l,p);
 }
}

// Xuất dữ liệu danh sách liên kết đơn .
void OutPut(LIST l)
{
 printf("\n>>>>>>>>>>>>>>>>> Danh Sach Cac So Nguyen Duong Le <<<<<<<<<<<<<<<<<<\n");
 for(NODE*p=l.pHead;p!=NULL;p=p->pNext)
 {
  printf("%4d",p->Data);
 }
}

// Liệt kê và tính tổng tất cả các số chính phương có trong danh sách liên kết đơn .
void LietKeVaTinhTongCacSoChinhPhuong(LIST l)
{
 int tong=0;
 NODE*pNode;
 float sqrt(float x);
 printf("\nCac so chinh phuong co trong danh sach la:");
 for(pNode=l.pHead;pNode!=NULL;pNode=pNode->pNext)
 {
  float ketqua=sqrt(pNode->Data);
  if((float)ketqua==(int)ketqua)
  {
   printf("%4d",pNode->Data); // Liệt kê ra tất cả các số chính phương có trong danh sách .
   tong+=pNode->Data; // Tính tổng tất cả các số chính phương có trong danh sách .
  }
 }
 printf("\n");
 printf("\nTong cac so chinh phuong co trong danh sach la:%d",tong);
}

// Hàm chính .
void main()
{
 int tieptuc;
 LIST lst;
 quaylai:InPut(lst);
 printf("\n");
 OutPut(lst);
 printf("\n");
 LietKeVaTinhTongCacSoChinhPhuong(lst);
 printf("\n");
 printf("\nBan co muon tiep tuc thuc hien chuong trinh hay khong ? Neu co bam phim C,nguoc lai bam bat ky 1 phim nao khac de ket thuc!");
 tieptuc=getch();
 if(tieptuc=='c'||tieptuc=='C')
 {
  system("cls");
  goto quaylai;
 }
}

Nhận xét

Bài đăng phổ biến từ blog này

Bài 17 : Viết chương trình nhập số nguyên lớn N (khai báo:long N) có k chữ số

Bài Tập Cây Nhị Phân Tìm Kiếm

Bài 22 : Viết chương trình nhập vào số nguyên dương n gồm 5 chữ số,kiểm tra xem các chữ số n có phải là số đối xứng hay không ?