//header file
#ifndef STRUCT_H_INCLUDED
#define STRUCT_H_INCLUDED
typedef struct curs_valutar
{
    char nume[50];
    float cursul;
    struct curs_valutar* next;
    struct curs_valutar* next2;
}curs_val;

curs_val *head=NULL;

int sc=0;
int n;

int creare(int n);
void introducere_date();
int citire_date_fisier(char nume_fisier[100]);
void afisare_date();
void eliberare_memorie();
int adaugare_date(char c_nume[100],float cursul);
void cautare_date(char sir[100]);
void cautare_date_in(int val1, int val2);
void interschimbare(curs_val *a, curs_val *b);
void sortare(int n);
void modificare_date(char c_nume[100]);
int salvare_date(char nume_fisier[100]);
#endif // STRUCT_H_INCLUDED




//function.


#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "struct.h"


int creare(int n)
{ curs_val *valuta,*valuta2;
  int i; float aux; char numele[100];
  for(i=0; i<n; i++)
    {valuta=(curs_val*)malloc(sizeof(curs_val));
     if (valuta==NULL)
     return 0;
     if(i==0)
     head=valuta;
     else valuta2->next=valuta;
     valuta2=valuta;}
     valuta->next=NULL;}

void introducere_date()
{curs_val *c;
 int i=0;
 c=head;
 while(c)
{printf("\nIntroduceti datele pentru valuta %d:\n", i+1);
 printf("Nume:"); scanf("%s", &c->nume);
 scanf("%f", &c->cursul);
 printf("\n");
 c=c->next;
 if(c==head)
 break;
 i++;}
getch();
return;
}
// introducerea datelor

//functia de citire a datelor din fisier
int citire_date_fisier(char nume_fisier[100])
{curs_val*c;
 FILE *fisier;
 fisier=fopen(nume_fisier,"r");
 if(fisier==NULL)
{printf("\nEroare la deschiderea fisierului!!!");
 getch();
 return 0;}
else
 {c=head;
  fscanf(fisier,"%i", &n);
  if(n==0)
  {printf("!!! Structura nu contine elemente.\n");
   getch();}
else
  {for(int i=0;i<n;i++)
    {fscanf(fisier,"%s", &c->nume);
     fscanf(fisier,"%f", &c->cursul);
     c=c->next;
     if(c==head)
     break;}
fclose(fisier);
printf("\n\n                Datele au fost citite cu succes.");}}
getch();
return 1;}
//functia de citire a datelor din fisier
void afisare_date()
{
curs_val *c;
int i=1;
c=head;
printf("\n\n\n\t ***** Baza initiala este *****\n\n");
printf("\t----------------------------------\n");
printf("\t|  Numele Valutei| Cursul Valutei|\n\n");

while(c)
{printf("\t%12s", c->nume);
 printf("  %14f", c->cursul);
 printf("\n");
 c=c->next;  i++;
 if(c==head)
  break;}
printf("\t|--------------------------------|");
getch();
return;}
// afisarea datelor
//eliberare memorie
void eliberare_memorie()
{curs_val *c, *p;
c=head;
while(c)
{p=c;
 c=c->next;
 free(p);
 if(c==head)
  break;}
head=NULL;
n=0;
printf("\n\nEliberarea memoriei a fost executata cu succes.");
}
//eliberare memorie
//adaugare date
int adaugare_date(char c_nume[100],float cursul)
{curs_val *a, *c;
a=(curs_val*)malloc(sizeof(*a));
if(c==NULL)
return 0;
else
{c=head;
 while(c->next!=NULL)
 c=c->next;
 c->next=a;}
strcpy(a->nume,c_nume);
a->cursul=cursul;
a->next=NULL;
n++;
return 1;}
//adaugare date
//cautare date
void cautare_date(char sir[100])
{curs_val *c;
c=head;
while(c)
{
 if(strcmp(c->nume,sir)==0)
 {
  printf(" %s", c->nume); printf(" ");
  printf("%f", c->cursul);printf("\t\n");}
 c=c->next;
 if(c==head)
  break;}}
//cautare date
void cautare_date_in(int val1, int val2)
{curs_val *c;
 c=head;
 while(c)
{if(val1==3 && c->cursul==val2)
 {
  printf("%s", c->nume); printf(" ");
  printf("%f", c->cursul);printf("\t\n");}
 c=c->next;
 if(c==head)
 break;}}
//cautare date
// interschimbare
void interschimbare(curs_val *a, curs_val *b)
{
curs_val *na, *nb;
curs_val t;
na=a->next;
nb=b->next;

t=*a;
*a=*b;
*b=t;
a->next=na;
b->next=nb;
}
// interschimbare


//sortare date
void sortare(int n)
{int i,k;
curs_val *a,*b;
if(!head)
{puts("Nu este corect, incercati din nou!"); getch();
return;}
else
{if (sc==0)
        {
            for(i=0;i<n;i++)
            {
                a=head;
                b=a->next;
                for(k=0;k<n-1-i;k++)
                {
                    if(strcmp(a->nume, b->nume)>0)
                    {
                        interschimbare(a,b);
                    }
                    a=a->next;
                    b=b->next;
                }
            }
        }
        else
        {
            for(i=0;i<n;i++)
            {
                a=head;
                b=a->next;
                for(k=0;k<n-1-i;k++)
                {
                    if(strcmp(a->nume, b->nume)>0)
                    {
                        interschimbare(a,b);
                    }
                    a=a->next;
                    b=b->next;
                }
            }
        }
    }
    puts("Sortarea a avut loc cu succes!");getch();
}
//sortare date
//modificare date
void modificare_date(char c_nume[100])
{
curs_val *c; c=head;
int den_k=0;
char optiune[2];
int confirmare;
printf("Doriti sa modificati numele unei valute?(1/0)?:");
scanf("%i",&confirmare);
if(confirmare==1)
{
 while(c)
 { if(strcmp(c->nume,c_nume)==0)
  {
     den_k=1;
  printf("\n\nDoriti sa modificati numele valutei (da/nu)?:");
  scanf("%s", &optiune);
  if(strcmp(optiune,"da")==0)
  {
   printf("\nIntroduceti denumirea noua a valutei:");
   scanf("%s", &c->nume);
   printf("\nModificarea numelui valutei a avut loc cu succes.");}
  goto iesire;
  }
  c=c->next;
  if(c==head)
   break;
 }
}
iesire:
getch();
}

//modificare date
//functia de salvare a datelor din structura
int salvare_date(char nume_fisier[100])
{ curs_val *c;
 FILE *fisier;
 if((fisier=fopen("baza.txt","w+b"))==NULL)
  printf("\nEroare la deschiderea fisierului!!!");
 else
 {c=head;
  fprintf(fisier,"%i", n);      fprintf(fisier,"\n");
  while(c)
  {
   fprintf(fisier,"%s", c->nume); fprintf(fisier," ");
   fprintf(fisier,"%f", c->cursul); fprintf(fisier," ");
   fprintf(fisier,"\n");
   c=c->next;
   if(c==head)
    break;}
  fclose(fisier);
  printf("\n\n          Datele au fost salvate su succes.");}
getch();
return 1;
}

//main

#include "coduri functie.c"

void main()

{ curs_val *cautat;
  int i,n,lista,q;

do{
//afisam meniul
  m0: system("cls");
      printf("\n\t\t***MENIU***\n\n");
      printf("\t1: Comletarea bazei de date.\n");
      printf("\t11: Citirea bazei de date din fisier\n");
      printf("\t2: Afisarea bazei de date\n");
      printf("\t22: Eliberearea memorie\n");
      printf("\t3: Introducerea unoi no inscrieri\n");
      printf ("\t4: Cautarea cursului dupa denumirea valutei\n");
      printf("\t5: Cautare valutei dupa curs\n");
      printf("\t6: Sortare dupa nume\n");
      printf("\t7: Sortare dupa curs\n");
      printf("\t8: MOdificare valutei\n");
      printf("\t9 Salvarea informatiei");
      printf("\t10: Iesire\t\t");
      scanf("%d",&q);
          switch(q)
      {
          case 1:{
                     printf("Culegem nr de valute: ");
                     scanf("%d",&n);
                     lista=creare(n);
                     introducere_date();
                     printf("Pentru iesire tastati Enter");
                     getch();
                     break;}
         case 11:{  system("cls");
                    char nume_fisier[100];
                    printf("\n\nIntroduceti denumirea fisierului de unde vor fi citite datele:");
                    scanf("%s",&nume_fisier);
                    FILE *fisier;
                    fisier=fopen("baza.txt","r+b");
                    fscanf(fisier,"%i", &n);
                    lista=creare(n);
                    fclose(fisier);
                    citire_date_fisier(nume_fisier);
                    getch();
                    break;}
          case 2:{  system("cls");
                    afisare_date();
                    getch();break;}

          case 22:{ system("cls");
                    eliberare_memorie();
                    getch();
                    break;}

          case 3:  {system("cls");
                    int adaug;
                    char nume[100];
                    float cursul;
                    printf("\n\nAdaugarea unei valute noi:\n");
                    printf("Nume:"); scanf("%s", &nume);
                    scanf("%f", &cursul);
                    adaug=adaugare_date(nume,cursul);
                    getch();break;}
           case 4: {
                      system("cls");
                      char nume[100];
                      printf("\n\nCautare valuta dupa nume:\nNumele valutei ce va fi cautat: ");
                      scanf("%s",&nume);
                      cautare_date(nume);
                      getch();
                      break;}

           case 5:  {
                     system("cls");
                     float curs;
                     printf("\n\nCautare valutei dupa curs:\nIntroduceti cursul:");
                     scanf("%f",&curs);
                     cautare_date_in(2,curs);
                     getch();
                     break;}

           case 6: { system("cls");
                     sortare(n);
                     getch();
                     break;}


           case 8:{   system("cls");
                      char nume[100];
                      printf("\n\nModificare valuta dupa nume:\nNumele valutei ce va fi modificat:");
                      scanf("%s",&nume);
                      modificare_date(nume);
                      getch();

                      break;}
           case 9: {system("cls");
                    char nume_fisier[100];
                    printf("\nSalvarea datelor...\nIntroduceti denumirea fisierului unde vor fi salvate datele:");
                    scanf("%s",&nume_fisier);
                    salvare_date(nume_fisier);
                    getch();

                    break;}

              case 10: goto iesire;  }


          } while(q!=0);
          iesire: getch();}

Recommended Answers

All 2 Replies

Ok, which functions and line numbers are you talking about?

include "coduri functie.c"

Never, ever, for any reason include one *.c file in another. If your program uses more than one *.c file then compile each one separately and link them both together along with any libraries to create the final executable file. How to do that depends on the compiler you are using.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.