Minggu, 07 Juni 2015

Code C : Single link list

#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>

struct dtnilai{
  char nrp[12],nama[20],alamat[30];
  float ip[5];
  struct dtnilai *next;
};
struct dtnilai *ujung;

//////////////////////////////////INPUT DATA///////////////////////////////////
int input_data(){
  struct dtnilai *tampung, *awal;
  int j=0;char jawab[2];
 
  while (1){
    awal=(struct dtnilai*)malloc(sizeof(struct dtnilai));
    fflush(stdin);
    printf("NRP          :");gets(awal->nrp);
    printf("NAMA         :");gets(awal->nama);
    printf("ALAMAT       :");gets(awal->alamat);
    printf("IP           :");scanf("%f",&awal->ip);
    awal->next=NULL;
    if(j==0){
      ujung=awal;
      tampung=ujung;
    }else{
      tampung->next=awal;
      tampung=tampung->next;
    }
    printf("Ada data lagi (y/t) :");scanf("%s",&jawab);
    if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){
      j++;continue;
    }else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
    break;
  }
}
//////////////////////////////////////////TAMPIL LIST/////////////////////////////
int tampil_list(){
  struct dtnilai *tampil,*awal;
 
  printf("\tNRP\t\tNAMA\t\tALAMAT\t\tIP\n");
 
  tampil=ujung;
 
  while(tampil!=NULL){
    printf("%s\t\t%s\t\%s\t\t%1.2f\n",tampil->nrp, tampil->nama,tampil->alamat,*tampil->ip);
    tampil=tampil->next;
  }
  return 0;
}
///////////////////////////////////////HAPUS AKHIR/////////////////////////////
int hapus_akhir(){
  struct dtnilai *hapus, *sblhapus;
  hapus=ujung;
 
  while(hapus->next!=NULL){
    sblhapus=hapus;
    hapus=hapus->next;
  }
  free(hapus);
  sblhapus->next=NULL;
}
////////////////////////////////////SISIP AWAL//////////////////////////////////
int sisip_awal(){
  struct dtnilai *tampung,*awal;
  char jawab[2];
  int j=0;
  tampung=ujung;
 
  while (1){
    awal=(struct dtnilai*)malloc(sizeof(struct dtnilai));
    fflush(stdin);
    printf("NRP          :");gets(awal->nrp);
    printf("NAMA         :");gets(awal->nama);
    printf("ALAMAT       :");gets(awal->alamat);
    printf("IP           :");scanf("%f",&awal->ip);
    awal->next=tampung;
   
    if(j==0||j!=0){
      ujung=awal;
      tampung=ujung;
    }
    printf("Ada data lagi (y/t) :");scanf("%s",&jawab);
    if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){
      j++;continue;
    }else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
    break;
  }
}
////////////////////////////////////////////////HAPUS LIST TERDEPAN//////////////////////////////////////
int hapus_awal(){
  struct dtnilai *hapus, *stlhapus;
  hapus=ujung;
  stlhapus=hapus->next;
  ujung=stlhapus;
  free(hapus);
}
///////////////////////////////////////////////HAPUS ELEMEN KE-N/////////////////////////////////////////
int hapus_n(){
  struct dtnilai *hapus, *sblhapus;
  int cari;;
  fflush(stdin);
  printf("Data yang akan dihapus ? (data ke-) :");scanf("%d",&cari);
  hapus=ujung;
  for(int i=1;i<cari;i++){
    sblhapus=hapus;
    hapus=hapus->next;
  }
  sblhapus->next=hapus->next;
  free(hapus);
}
/////////////////////////////////////////////HITUNG RERATA///////////////////////////////////////////////
int jumlah(){
  struct dtnilai *hitung;
  float hasil=0;
 
  hitung=ujung;
  while(hitung!=NULL){
    hitung=hitung->next;
    hasil=hasil+*hitung->ip;
  }
  return(hasil);
}
//////////////////////////////////////////////HITUNG NILAI///////////////////////////////////////////////
int banyak_data(){
  struct dtnilai *hitung;
  float n=0;
 
  hitung=ujung;
  while(hitung!=NULL){
    hitung=hitung->next;
    n++;
  }
  return(n);
}
////////////////////////////////////////////////BADAN PROGRAM////////////////////////////////////////////
int main(){
  int a;
  char b[2];
  ulang :
  puts("--------------------------------------------------------------------------------");
  puts("                                 STRUKTUR DATA                                 ");
  puts("                        RIZKI TAUFIK ULIL A (2210131040)                       ");
  puts("                            1 D4 TEKNIK KOMPUTER                               ");
  puts("                  POLITEKNIK ELEKTRONIKA NEGERI SURABAYA - 2014                ");
  puts("================================================================================");
  puts("                                     MENU                                       ");
  puts(" (1) input data  (2) hapus akhir  (3) sisip awal  (4) hapus awal  (5) hapus ke-n");
  puts(" (6) tampil data (7) rata-rata    (8) exit");
  puts("================================================================================");
  printf("Pilih menu :");scanf("%d",&a);
  switch (a) {
    case 1  :input_data();puts("");break;
    case 2  :tampil_list();puts("");goto hapus;break;
    case 3  :tampil_list();puts("");sisip_awal();puts("");break;
    case 4  :tampil_list();puts("");hapus_awal();puts("");break;
    case 5  :tampil_list();puts("");hapus_n();puts("");break;
    case 6  :goto tampil;break;
    case 7  :goto rata2;break;
    case 8  :goto exit;break;
    default :break;
  }
  goto ulang;
  rata2 :
  printf("Rata- rata IP dari data adalah %1.2f",jumlah()/banyak_data());
  goto tampil;
 
  hapus :
  puts("Apakah ingin menghapus data akhir ? (y/t)");fflush(stdin);scanf("%s",&b);
  if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){
      hapus_akhir();
      goto tampil;
    }
   
  tampil :
  tampil_list();
  puts("Apakah ingin mengolah data ? (y/t)");fflush(stdin);scanf("%s",&b);
  if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){
      goto ulang;
    }
  exit:
  puts("                       Anda akan keluar dari program ");
  puts("                 Silakan pencet tombol enter pada keyboard");
  getch();
  return 0;
}

Tidak ada komentar:

Posting Komentar

Me

Foto saya
I'm 18 year old I'm ugly I'm lazy I do what I want I'm poor I want to learn and I want make money