folder Tahribat.com Forumları
linefolder C - C++
linefolder Linked List Insert Problemi(C)



Linked List Insert Problemi(C)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    crafty
    crafty's avatar
    Kayıt Tarihi: 19/Eylül/2006
    Erkek

    beyler ufak bir problem yaşıyorum. kodlarım aşağıdaki gibi ilk ekleme işleminde değer olarak Resim Tablosu gönderiyorum eklemeyi yapıyor ikinci değer olarak Icecek gönderiyorum kayıtlı diyor :S

    temp=cList dedikten sonra temp->name değeri direk Icecek olarak eşitleniyor :S

    struct category{
    	char *name;
    	struct category *next;
    	struct product *products;
    }*cList=NULL;
    
    void create_category(char *name, FILE *out){
    	struct category *ctg = malloc(sizeof(struct category));
    	struct category *temp;
    	ctg->name=name;
    	ctg->next=NULL;
    	ctg->products=NULL;
    	if(cList==NULL){
    		cList=ctg;
    		fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : SUCCESSFUL", name);
    	}
    	else{
    		temp=cList;
    		fprintf(out, "\ntemp name : %s", temp->name);
    		while(temp->next!=NULL && strcmp(temp->name,ctg->name) != 0){
    			temp=temp->next;
    		}
    		if(strcmp(temp->name, ctg->name)==0){
    			fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : FAILED - YOU HAVE ALREADY ADDED CATEGORY", name);
    		}
    		else{
    			temp->next=ctg;
    			fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : SUCCESSFUL", name);
    		}
    	}
    }

    Kasnak yuvarlandı elek oldu, eski orospular melek oldu...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    herlocksholmes
    herlocksholmes's avatar
    Kayıt Tarihi: 16/Şubat/2014
    Erkek

    edit

     

    edit2: malloc önüne (category *) yazınca düzeldi.

     

    ben şöyle çalıştırdım:

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    struct product
    {
        int some;
    };

    struct category{
        char *name;
        struct category *next;
        struct product *products;
    }*cList = NULL;

    void create_category(char *name, FILE *out){
        struct category *ctg = (category*)malloc(sizeof(struct category));
        struct category *temp;
        ctg->name = name;
        ctg->next = NULL;
        ctg->products = NULL;
        if (cList == NULL){
            cList = ctg;
            fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : SUCCESSFUL", name);
        }
        else{
            temp = cList;
            fprintf(out, "\ntemp name : %s", temp->name);
            while (temp->next != NULL && strcmp(temp->name, ctg->name) != 0){
                temp = temp->next;
            }

            if (strcmp(temp->name, ctg->name) == 0){
            fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : FAILED - YOU HAVE ALREADY ADDED CATEGORY", name);

            }else{
             temp->next = ctg;
            fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : SUCCESSFUL", name);
            }
        }
    }

    int main(void)
    {
        create_category("keke", stdout);
        create_category("peke", stdout);
        create_category("caka", stdout);
        create_category("peke", stdout);


        return 0;
    }

    ÇIKTI

    COMMAND : CREATE CATEGORY NAME "keke"
    RESULT : SUCCESSFUL
    temp name : keke
    COMMAND : CREATE CATEGORY NAME "peke"
    RESULT : SUCCESSFUL
    temp name : keke
    COMMAND : CREATE CATEGORY NAME "caka"
    RESULT : SUCCESSFUL
    temp name : keke
    COMMAND : CREATE CATEGORY NAME "peke"
    RESULT : FAILED - YOU HAVE ALREADY ADDED CATEGORY

    herlocksholmes tarafından 07/Eki/14 00:53 tarihinde düzenlenmiştir

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    crafty
    crafty's avatar
    Kayıt Tarihi: 19/Eylül/2006
    Erkek

    hacı malloc önüne tek (category*) yapınca hata veriyor (struct category*) yazınca da aynısı geri dönüyor


    Kasnak yuvarlandı elek oldu, eski orospular melek oldu...
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    crafty
    crafty's avatar
    Kayıt Tarihi: 19/Eylül/2006
    Erkek

    cList her seferinde ilk değeri döndürmesi gerekirken bende sürekli olarak hep gelen değeri döndürüyor :S


    Kasnak yuvarlandı elek oldu, eski orospular melek oldu...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    çok uykuluyum yarın unutmazsam bi bakarım.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Tam anlamadım istediğini ama şöyle yaptım çalışması lazım..

     

    #include <iostream>
    #include "conio.h"
    #include "stdio.h"
    #include "stdlib.h"
    
    typedef struct category{
    	char *name;
    	struct category *next;
    	struct product *products;
    } CATEGORY;
    CATEGORY *cList = NULL;
    
    
    void create_category(char *name, FILE *out)	{
    	CATEGORY *ctg = (CATEGORY*) malloc(sizeof(struct category));
    	CATEGORY *temp = NULL;
    	ctg->name = name;
    	ctg->next = NULL;
    	ctg->products = NULL;
    	if (cList == NULL){ //Boşsa hemen ekle
    		cList = ctg;
    		fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : SUCCESSFUL", name);
    	}
    	else  {  //Boş değilse her node'u karşılaştır eşitlik yoksa sonuna ekle.
    		temp = cList;
    		fprintf(out, "\ntemp name : %s", temp->name);
    		while (temp->next != NULL)  { 
    			if (strcmp(temp->name, ctg->name) == 0)	{
    				fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : FAILED - YOU HAVE ALREADY ADDED CATEGORY", name);
    				return;
    			}
    			temp = temp->next;
    		} 
    		if (strcmp(temp->name, ctg->name) == 0)	{
    			fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : FAILED - YOU HAVE ALREADY ADDED CATEGORY", name);
    		}
    		else  {
    			temp->next = ctg;
    			fprintf(out, "\nCOMMAND : CREATE CATEGORY NAME \"%s\"\nRESULT : SUCCESSFUL", name);
    		}
    	}
    }
    
    int main(void)
    {
    	create_category("deneme", stdout);
    	create_category("aka", stdout);
    	create_category("kaka", stdout);
    	create_category("aka", stdout);
    	printf("\n %s", cList->name);
    	system("PAUSE");
    	return 0;
    }

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    bir sıkıntı olursa özel mesaj at burayı takip edemeyebilirim.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    crafty
    crafty's avatar
    Kayıt Tarihi: 19/Eylül/2006
    Erkek

    olmuyor gelen cevaplar şu şekilde

     

    COMMAND : CREATE CATEGORY NAME "Resim Tablosu"

    RESULT : SUCCESSFUL

    COMMAND : CREATE CATEGORY NAME "Icecek"

    RESULT : FAILED - YOU HAVE ALREADY ADDED CATEGORY

    COMMAND : CREATE CATEGORY NAME "Icecek"

    RESULT : FAILED - YOU HAVE ALREADY ADDED CATEGORY

     

    temp=&cList; dediğimde ekleme oluyor ama bu sefer de tekrar cListi okuduğumda name kısmı saçma sapan bişey cıkıyor :S

    crafty tarafından 07/Eki/14 15:17 tarihinde düzenlenmiştir

    Kasnak yuvarlandı elek oldu, eski orospular melek oldu...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Benim verdiğim kodda bir sıkıntı yok. Var olmayan şeyi ekliyor düzgünce. Visual Studio ile derliyorum 2013. Sıkıntı yok.

        create_category("Resim Tablosu", stdout);
        create_category("Icecek", stdout);
        create_category("Icecek", stdout);
        create_category("aka", stdout);
        printf("\n %s\n", cList->name);
        system("PAUSE");
        return 0;

     

     


    COMMAND : CREATE CATEGORY NAME "Resim Tablosu"
    RESULT : SUCCESSFUL
    temp name : Resim Tablosu
    COMMAND : CREATE CATEGORY NAME "Icecek"
    RESULT : SUCCESSFUL
    temp name : Resim Tablosu
    COMMAND : CREATE CATEGORY NAME "Icecek"
    RESULT : FAILED - YOU HAVE ALREADY ADDED CATEGORY
    temp name : Resim Tablosu
    COMMAND : CREATE CATEGORY NAME "aka"
    RESULT : SUCCESSFUL
     Resim Tablosu
    Devam etmek için bir tuşa basın . . .

    DrKill tarafından 07/Eki/14 15:47 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    crafty
    crafty's avatar
    Kayıt Tarihi: 19/Eylül/2006
    Erkek

    dbms için c ile yazılmış kodlamanın tamamı aşağıdadır...

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct product{
    char name[255];
    char cat[255];
    char price[255];
    struct product *next;
    };
    
    struct category{
    char name[255];
    struct category *next;
    struct product *products;
    }*cList=NULL;
    
    struct lister{
    char prod[255];
    char pric[255];
    char cat[255];
    struct lister *next;
    }*pList=NULL;
    
    void create_category(char *arg0, FILE *out){
    struct category *ctg=(struct category*)malloc(sizeof(struct category));
        struct category *temp;
        strcpy(ctg->name, arg0);
        ctg->next=NULL;
    ctg->products=NULL;
        if(cList==NULL){
            cList=ctg;
            fprintf(out, "\rCOMMAND:\nCREATE CATEGORY NAME \"%s\"\nRESULT:\nSUCCESSFUL\n\n", arg0);
     
        }
        else{
            temp=cList;
            while(temp->next!=NULL && strcmp(temp->name,ctg->name)!=0){
                temp=temp->next;
            }
            if(strcmp(temp->name, ctg->name)==0){
                fprintf(out, "\rCOMMAND:\nCREATE CATEGORY NAME \"%s\"\nRESULT:\nFAILED\n\n", arg0);
     
            }
            else{
    temp->next=ctg;
                fprintf(out, "\rCOMMAND:\nCREATE CATEGORY NAME \"%s\"\nRESULT:\nSUCCESSFUL\n\n", arg0);
     
            }
        }
    }
    
    void create_product(char *arg0, char *arg1, char *arg2, FILE *out){
    struct product *prd=(struct product*)malloc(sizeof(struct product));
    struct product *ptemp;
    struct category *ctemp=cList;
    strcpy(prd->name, arg0);
    strcpy(prd->cat, arg1);
    strcpy(prd->price, arg2);
    prd->next=NULL;
    while(ctemp!=NULL && strcmp(ctemp->name, arg1)!=0){
    ctemp=ctemp->next;
    }
    if(ctemp==NULL){
    fprintf(out, "\rCOMMAND:\nCREATE PRODUCT NAME \"%s\" CATEGORY \"%s\" PRICE %sRESULT:\nFAILED\n\n", arg0, arg1, arg2);
    }
    else{
    if(ctemp->products==NULL){
    ctemp->products = prd;
    fprintf(out, "\rCOMMAND:\nCREATE PRODUCT NAME \"%s\" CATEGORY \"%s\" PRICE %sRESULT:\nSUCCESSFUL\n\n", arg0, arg1, arg2);
    }
    else{
    ptemp=ctemp->products;
    while(ptemp->next!=NULL){
    ptemp=ptemp->next;
    }
    ptemp->next=prd;
    fprintf(out, "\rCOMMAND:\nCREATE PRODUCT NAME \"%s\" CATEGORY \"%s\" PRICE %sRESULT:\nSUCCESSFUL\n\n", arg0, arg1, arg2);
    }
    }
    }
    
    void list_str(){
    pList=NULL;
    struct category *ctemp=cList;
    struct product *ptemp;
    while(ctemp!=NULL){
    ptemp=ctemp->products;
    while(ptemp!=NULL){
    struct lister *lit=(struct lister*)malloc(sizeof(struct lister));
    struct lister *ltemp;
    strcpy(lit->cat, ctemp->name);
    strcpy(lit->prod, ptemp->name);
    strcpy(lit->pric, ptemp->price);
    lit->next=NULL;
    if(pList==NULL){
    pList=lit;
    }
    else{
    ltemp=pList;
    while(ltemp->next!=NULL){
    ltemp=ltemp->next;
    }
    ltemp->next=lit;
    }
    ptemp=ptemp->next;
    }
    ctemp=ctemp->next;
    }
    }
    
    void delete_product(char *arg0, char *arg1, FILE *out){
    struct category *ctemp;
    struct product *ptemp;
    struct product *btemp;
    ctemp=cList;
    while(ctemp!=NULL && strcmp(ctemp->name, arg1)!=0){
    ctemp=ctemp->next;
    }
    if(ctemp==NULL){
    fprintf(out, "\rCOMMAND:\nDELETE PRODUCT WHERE NAME IS \"%s\" AND CATEGORY IS \"%s\"\nRESULT:\nFAILED\n\n", arg0, arg1);
    }
    else{
    ptemp=ctemp->products;
    btemp=ctemp->products;
    while(ptemp!=NULL && strcmp(ptemp->name, arg0)!=0){
    ptemp=ptemp->next;
    }
    if(ptemp==NULL){
    fprintf(out, "\rCOMMAND:\nDELETE PRODUCT WHERE NAME IS \"%s\" AND CATEGORY IS \"%s\"\nRESULT:\nFAILED\n\n", arg0, arg1);
    }
    else{
    while(btemp->next!=ptemp && btemp!= ptemp){
    btemp=btemp->next;
    }
    if(btemp==ptemp){
    ctemp->products=ptemp->next;
    }
    else{
    btemp->next=ptemp->next;
    }
    fprintf(out, "\rCOMMAND:\nDELETE PRODUCT WHERE NAME IS \"%s\" AND CATEGORY IS \"%s\"\nRESULT:\nSUCCESSFUL\n\n", arg0, arg1);
    free(ptemp);
    }
    }
    list_str();
    }
    
    void sort_ascn(FILE *out){
    list_str();
    struct lister *ltemp=pList;
    int i=0;
    while(ltemp!=NULL){
    i++;
    ltemp=ltemp->next;
    }
    struct lister *atemp[i];
    ltemp=pList;
    int ai=0;
    while(ltemp!=NULL){
    atemp[ai]=ltemp;
    ai++;
    ltemp=ltemp->next;
    }
    int ii, j;
    struct lister *it;
    for(ii=1; ii<i; ++ii){
    if(strcmp(atemp[ii]->prod, atemp[ii-1]->prod)<0){
    it=atemp[ii];
    for(j=ii; j>0 && (strcmp(it->prod, atemp[j-1]->prod)<0); --j){
    atemp[j]=atemp[j-1];
    }
    atemp[j]=it;
    }
    }
    pList=NULL;
    int x;
    for(x=0; x<i; x++){
    struct lister *flist=(struct lister*)malloc(sizeof(struct lister));
    struct lister *ftemp;
    strcpy(flist->cat, atemp[x]->cat);
    strcpy(flist->pric, atemp[x]->pric);
    strcpy(flist->prod, atemp[x]->prod);
    flist->next=NULL;
    if(pList==NULL){
    pList=flist;
    }
    else{
    ftemp=pList;
    while(ftemp->next!=NULL){
    ftemp=ftemp->next;
    }
    ftemp->next=flist;
    }
    }
    fprintf(out, "\rCOMMAND:\nSORT PRODUCT BY NAME ASC\nRESULT:\nSUCCESSFULL\n\n");
    }
    
    void sort_descn(FILE *out){
    list_str();
    struct lister *ltemp=pList;
    int i=0;
    while(ltemp!=NULL){
    i++;
    ltemp=ltemp->next;
    }
    struct lister *atemp[i];
    ltemp=pList;
    int ai=0;
    while(ltemp!=NULL){
    atemp[ai]=ltemp;
    ai++;
    ltemp=ltemp->next;
    }
    int ii, j;
    struct lister *it;
    for(ii=1; ii<i; ++ii){
    if(strcmp(atemp[ii]->prod, atemp[ii-1]->prod)<0){
    it=atemp[ii];
    for(j=ii; j>0 && (strcmp(it->prod, atemp[j-1]->prod)<0); --j){
    atemp[j]=atemp[j-1];
    }
    atemp[j]=it;
    }
    }
    pList=NULL;
    int x;
    for(x=i; x>0; x--){
    struct lister *flist=(struct lister*)malloc(sizeof(struct lister));
    struct lister *ftemp;
    strcpy(flist->cat, atemp[x-1]->cat);
    strcpy(flist->pric, atemp[x-1]->pric);
    strcpy(flist->prod, atemp[x-1]->prod);
    flist->next=NULL;
    if(pList==NULL){
    pList=flist;
    }
    else{
    ftemp=pList;
    while(ftemp->next!=NULL){
    ftemp=ftemp->next;
    }
    ftemp->next=flist;
    }
    }
    fprintf(out,"\rCOMMAND\nSORT PRODUCT BY NAME DESC\nRESULT:\nSUCCESSFUL\n\n");
    }
    
    void sort_ascp(FILE *out){
    list_str();
    struct lister *ltemp=pList;
    int i=0;
    while(ltemp!=NULL){
    i++;
    ltemp=ltemp->next;
    }
    struct lister *atemp[i];
    ltemp=pList;
    int ai=0;
    while(ltemp!=NULL){
    atemp[ai]=ltemp;
    ai++;
    ltemp=ltemp->next;
    }
    int ii, j;
    struct lister *it;
    for(ii=1; ii<i; ++ii){
    if(atof(atemp[ii]->pric) < atof(atemp[ii-1]->pric)){
    it=atemp[ii];
    for(j=ii; j>0 && (atof(it->pric) < atof(atemp[j-1]->pric)); --j){
    atemp[j]=atemp[j-1];
    }
    atemp[j]=it;
    }
    }
    pList=NULL;
    int x;
    for(x=0; x<i; x++){
    struct lister *flist=(struct lister*)malloc(sizeof(struct lister));
    struct lister *ftemp;
    strcpy(flist->cat, atemp[x]->cat);
    strcpy(flist->pric, atemp[x]->pric);
    strcpy(flist->prod, atemp[x]->prod);
    flist->next=NULL;
    if(pList==NULL){
    pList=flist;
    }
    else{
    ftemp=pList;
    while(ftemp->next!=NULL){
    ftemp=ftemp->next;
    }
    ftemp->next=flist;
    }
    }
    fprintf(out, "\rCOMMAND:\nSORT PRODUCT BY PRICE ASC\nRESULT:\nSUCCESSFUL\n\n");
    }
    
    void sort_descp(FILE *out){
    list_str();
    struct lister *ltemp=pList;
    int i=0;
    while(ltemp!=NULL){
    i++;
    ltemp=ltemp->next;
    }
    struct lister *atemp[i];
    ltemp=pList;
    int ai=0;
    while(ltemp!=NULL){
    atemp[ai]=ltemp;
    ai++;
    ltemp=ltemp->next;
    }
    int ii, j;
    struct lister *it;
    for(ii=1; ii<i; ++ii){
    if(atof(atemp[ii]->pric) < atof(atemp[ii-1]->pric)){
    it=atemp[ii];
    for(j=ii; j>0 && (atof(it->pric) < atof(atemp[j-1]->pric)); --j){
    atemp[j]=atemp[j-1];
    }
    atemp[j]=it;
    }
    }
    pList=NULL;
    int x;
    for(x=i; x>0; x--){
    struct lister *flist=(struct lister*)malloc(sizeof(struct lister));
    struct lister *ftemp;
    strcpy(flist->cat, atemp[x-1]->cat);
    strcpy(flist->pric, atemp[x-1]->pric);
    strcpy(flist->prod, atemp[x-1]->prod);
    flist->next=NULL;
    if(pList==NULL){
    pList=flist;
    }
    else{
    ftemp=pList;
    while(ftemp->next!=NULL){
    ftemp=ftemp->next;
    }
    ftemp->next=flist;
    }
    }
    fprintf(out, "\rCOMMAND:\nSORT PRODUCT BY PRICE DESC\nRESULT:\nSUCCESSFUL\n\n");
    }
    
    void list_category(FILE *out){
    struct category *ctemp=cList;
    if(ctemp!=NULL){
    while(ctemp != NULL){
    fprintf(out, "\rCATEGORY NAME \"%s\"\n", ctemp->name);
    ctemp=ctemp->next;
    }
    }
    else{
    fprintf(out, "\rEMPTY");
    }
    }
    
    void list_product(FILE *out){
    if(pList==NULL){
    list_str();
    }
    struct lister *ptemp=pList;
    if(ptemp!=NULL){
    while(ptemp!=NULL){
    fprintf(out, "\rPRODUCT NAME \"%s\" CATEGORY \"%s\" PRICE %s", ptemp->prod, ptemp->cat, ptemp->pric);
    ptemp=ptemp->next;
    }
    }
    else{
    fprintf(out, "\rEMPTY\n");
    }
    }
    
    void list_productw(int arg0, char *arg1, FILE *out){
    if(pList==NULL){
    list_str();
    }
    int i=0;
    struct lister *ptemp=pList;
    if(ptemp!=NULL){
    while(ptemp!=NULL){
    if(arg0==0 && strcmp(arg1, ptemp->prod)==0)
    {
    fprintf(out, "\rPRODUCT NAME \"%s\" CATEGORY \"%s\" PRICE %s", ptemp->prod, ptemp->cat, ptemp->pric);
    i++;
    }
    else if(arg0==1 && strcmp(arg1, ptemp->pric)==0){
    fprintf(out, "\rPRODUCT NAME \"%s\" CATEGORY \"%s\" PRICE %s", ptemp->prod, ptemp->cat, ptemp->pric);
    i++;
    }
    ptemp=ptemp->next;
    }
    }
    else{
    fprintf(out, "\rEMPTY\n");
    }
    if(i==0){
    fprintf(out, "\rEMPTY\n");
    }
    }
    
    void list_productb(char *arg0, char *arg1, FILE *out){
    if(pList==NULL){
    list_str();
    }
    int i=0;
    struct lister *ptemp=pList;
    if(ptemp!=NULL){
    while(ptemp!=NULL){
    if(strcmp(ptemp->pric, arg0)==1 && strcmp(arg1, ptemp->pric)==1){
    fprintf(out, "\rPRODUCT NAME \"%s\" CATEGORY \"%s\" PRICE %s", ptemp->prod, ptemp->cat, ptemp->pric);
    i++;
    }
    ptemp=ptemp->next;
    }
    }
    else{
    fprintf(out, "\rEMPTY\n");
    }
    if(i==0){
    fprintf(out, "\rEMPTY\n");
    }
    }
    
    void list_productc(char *arg0, FILE *out){
    struct category *ctemp=cList;
    struct product *ptemp;
    int i=0;
    while(ctemp!=NULL){
    if(strcmp(ctemp->name, arg0)==0){
    ptemp=ctemp->products;
    while(ptemp!=NULL){
    fprintf(out, "\rPRODUCT NAME \"%s\" CATEGORY \"%s\" PRICE %s", ptemp->name, ctemp->name, ptemp->price);
    i++;
    ptemp=ptemp->next;
    }
    }
    ctemp=ctemp->next;
    }
    if(i==0){
    fprintf(out, "\rEMPTY");
    }
    }
    
    void create_image(FILE *out){
    fprintf(out, "\rCOMMAND:\nCREATE IMAGE\nRESULT:\n");
    list_category(out);
    list_product(out);
    fprintf(out, "\n");
    }
    
    void execute(char *line, FILE *out){
    char *command;
    char *arg0, *arg1, *arg2;
    int st0, st1;
    int i;
    char *comm[]={"IS", "BY", "AND", "ASC", "ALL", "NAME", "SORT", "DESC", "LIST", "PRICE", "IMAGE", "WHERE", "CREATE", "DELETE", "PRODUCT", "BETWEEN", "CATEGORY"};
    command = strtok(line," ");
    if(strcmp(command, comm[12])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[14])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[5])==0){
    arg0=strtok(NULL, "\""); /*product name*/
    arg1=strtok(NULL, " ");
    if(strcmp(arg1, comm[16])==0){
    arg1=strtok(NULL, "\""); /*category name*/
    arg2=strtok(NULL, " ");
    if(strcmp(arg2, comm[9])==0){
    arg2=strtok(NULL, "\0");
    create_product(arg0, arg1, arg2, out);
    }
    }
    }
    }
    else if(strcmp(arg0, comm[16])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[5])==0){
    arg0=strtok(NULL, "\"");
    create_category(arg0, out);
    }
    }
    else{
    for(i=0; i<5; i++){
    if(arg0[i]==comm[10][i]){
    st0=1;
    }
    else{
    st0=0;
    break;
    }
    }
    if(st0==1){
    create_image(out);
    }
    }
    }
    else if(strcmp(command, comm[13])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[14])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[11])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[5])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[0])==0){
    arg0=strtok(NULL, "\""); /*product name*/
    arg1=strtok(NULL, " ");
    if(strcmp(arg1, comm[2])==0){
    arg1=strtok(NULL, " ");
    if(strcmp(arg1, comm[16])==0){
    arg1=strtok(NULL, " ");
    if(strcmp(arg1, comm[0])==0){
    arg1=strtok(NULL, "\""); /*category name*/
    delete_product(arg0, arg1, out);
    }
    }
    }
    }
    }
    }
    }
    }
    else if(strcmp(command, comm[6])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[14])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[1])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[5])==0){
    arg0=strtok(NULL, "\n");
    if(strcmp(arg0, comm[3])==0){
    sort_ascn(out);
    }
    else if(strcmp(arg0, comm[7])==0){
    sort_descn(out);
    }
    }
    else if(strcmp(arg0, comm[9])==0){
    arg0=strtok(NULL, "\n");
    if(strcmp(arg0, comm[3])==0){
    sort_ascp(out);
    }
    else if(strcmp(arg0, comm[7])==0){
    sort_descp(out);
    }
    }
    }
    }
    }
    else if(strcmp(command, comm[8])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[14])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[11])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[5])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[0])==0){
    arg0=strtok(NULL, "\"");
    fprintf(out, "\rCOMMAND:\nLIST PRODUCT WHERE NAME IS \"%s\"\nRESULT:\n", arg0);
    list_productw(0, arg0, out);
    fprintf(out, "\n\n");
    }
    }
    else if(strcmp(arg0, comm[9])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[0])==0){
    arg0=strtok(NULL, "\n");
    fprintf(out, "\rCOMMAND:\nLIST PRODUCT WHERE PRICE IS %s\nRESULT:\n", arg0);
    list_productw(1, arg0, out);
    fprintf(out, "\n\n");
    }
    if(strcmp(arg0, comm[15])==0){
    arg0=strtok(NULL, " "); /*min deger*/
    arg1=strtok(NULL, "\n"); /*max deger*/
    fprintf(out, "\rCOMMAND:\nLIST PRODUCT WHERE PRICE BETWEEN %s %s\nRESULT:\n", arg0, arg1);
    list_productb(arg0, arg1, out);
    fprintf(out, "\n\n");
    }
    }
    else if(strcmp(arg0, comm[16])==0){
    arg0=strtok(NULL, " ");
    if(strcmp(arg0, comm[0])==0){
    arg0=strtok(NULL, "\"");
    fprintf(out, "\rCOMMAND:\nLIST PRODUCT WHERE CATEGORY IS \"%s\"\nRESULT:\n", arg0);
    list_productc(arg0, out);
    fprintf(out, "\n\n");
    }
    }
    }
    else{
    for(i=0; i<3; i++){
    if(arg0[i]==comm[4][i]){
    st0=1;
    }
    else{
    st0=0;
    break;
    }
    }
    if(st0==1){
    fprintf(out, "\rCOMMAND:\nLIST PRODUCT ALL\nRESULT:\n");
    list_product(out);
    fprintf(out, "\n");
    }
    }
    }
    else if(strcmp(arg0, comm[16])==0){
    arg0=strtok(NULL, "\n");
    if(strcmp(arg0, comm[4])==0){
    fprintf(out, "\rCOMMAND:\nLIST CATEGORY ALL\nRESULT:\n");
    list_category(out);
    fprintf(out, "\n");
    }
    }
    }
    /*if bitiş*/
    }
    
    void readInput(char *file, FILE *out){
    char buff[255];
    FILE *input=fopen(file, "r");
    while(fgets(buff, 255, input)!= NULL){
    execute(buff, out);
    }
    fclose(input);
    }
    
    int main(int argc, char **argv)
    {
    if(argc != 3){
            printf("Usage: program <input file> <output file>\n");
            return 0;
        }
    FILE *out = fopen(argv[2], "w");
        readInput(argv[1], out);
    fclose(out);
        return 1;
    }

    Kasnak yuvarlandı elek oldu, eski orospular melek oldu...
Toplam Hit: 2369 Toplam Mesaj: 10