Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <cstdlib>
- #include <cstring>
- struct Student {
- char nim[11];
- char name[31];
- int id;
- };
- struct Node {
- struct Student *student;
- struct Node* next;
- };
- void initNode(struct Node *head,struct Student *student){
- head->student = student;
- head->next =NULL;
- }
- void tambahMahasiswa(struct Node *head, struct Student *student) {
- Node *newNode = new Node;
- newNode->student = student;
- newNode->next = NULL;
- Node *cur = head;
- while(cur) {
- if(cur->next == NULL) {
- cur->next = newNode;
- return;
- }
- cur = cur->next;
- }
- }
- bool Convert(const char* arr, int &arrInt) {
- errno = 0;
- char *strend;
- arrInt = strtol(arr, &strend, 10);
- if(errno == 0 && *strend == '\0')
- return true;
- return false;
- }
- int main() {
- int i = 0;
- int total_student = 0;
- struct Node *student_linked_list = new Node;
- std::cout << "Input Data Siswa : " << std::endl;
- for(i = 0; i < 10; i++) {
- std::cout << "Data Ke - " << i + 1 << std::endl;
- Student *student = new Student;
- while(true) {
- char name_temp[50];
- std::cout << "Masukan Nama : ";
- std::cin.getline(name_temp,50);
- if(strnlen(name_temp, 50) > 30) {
- std::cout << "Nama tidak boleh lebih dari 30 karakter" << std::endl;
- continue;
- }
- if(strnlen(name_temp, 50) < 3) {
- std::cout << "Nama tidak boleh kurang dari 3 karakter" << std::endl;
- continue;
- }
- strncpy(student->name, name_temp, 30);
- break;
- }
- while(true) {
- char nim_temp[20];
- std::cout << "Masukan NIM : ";
- std::cin.getline(nim_temp,20);
- if(strnlen(nim_temp, 20) != 10) {
- std::cout << "Panjang NIM harus 10 karakter" << std::endl;
- continue;
- }
- int nim_int;
- if(!Convert(nim_temp, nim_int)) {
- std::cout << "NIM harus angka" << std::endl;
- continue;
- }
- strncpy(student->nim, nim_temp, 10);
- break;
- }
- while(true) {
- char id_temp[10];
- std::cout << "Masukan Absensi : ";
- std::cin.getline(id_temp,10);
- int absensi_int;
- if(!Convert(id_temp, absensi_int)) {
- std::cout << "Absensi harus angka" << std::endl;
- continue;
- }
- student->id = absensi_int;
- break;
- }
- bool end_input = false;
- while(true) {
- char reinput[10];
- std::cout << "Lanjutkan ? (y/n) : ";
- std::cin.getline(reinput,10);
- if(strncmp(reinput, "y", 10) == 0) {
- break;
- }
- if(strncmp(reinput, "n", 10) == 0) {
- end_input = true;
- break;
- }
- }
- if(i == 0) {
- initNode(student_linked_list, student);
- } else {
- tambahMahasiswa(student_linked_list, student);
- }
- total_student = total_student + 1;
- std::cout << std::endl;
- if(end_input) {
- break;
- }
- }
- std::cout << std::endl << "Menampilkan Data 1 -" << (total_student) << std::endl;
- Node *list = student_linked_list;
- int loop = 1;
- while(list) {
- std::cout << loop << ". " << list->student->name << " (" << list->student->nim << "): " << list->student->id << std::endl;
- list = list->next;
- loop = loop + 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement