Skocz do zawartości

[C] nie moge skompilować programu


..::HULK:..

Polecane posty

Mam program który nie chce się skompilować Dev-C++pojawia się błąd i nie wiem jak go poprawić.

 

Błędy które mam po kompilacji:

expected constructor, destructor, or type conversion before '(' token

expected `,' or `;' before '(' token

In function `int main()':

`fileOpen' cannot be used as a function

`fileOpen' cannot be used as a function

 

opis działania programu

Jest to program wczytuje z pliku tekstowego losowania Dużego Lotka, wypisuje do drugiego pliku losowania narastajaco, ze względu na sumę wylosowanych liczb. Jeśli kilka losowań ma ta sama sumę to ustawiamy je ze względu na sumę pierwszych pięciu wylosowanych liczb. Jeśli nadal istnieją losowania z ta sama suma to ustawiamy je ze względu na sumę 4 pierwszych liczb

Oto ten program

#include <stdio.h>

// Zmienne z adresami plikow
char fileOpenAddress[99], fileWriteAddress[99];
char fileMode;
char fileOpen;
//char fileOpen(char);

// Zmienna bufora odczytu pliku
char fileLine[512];

// Zmienna komunikatu informujacego o bledzie
char *fileError = " Blad odczytu pliku. \n";

// Zmienne trypow otwierania pliku
char *read = "czytaj", *write = "zapisz";

// Inne przydatne zmienne
int line = 0, k, l, change;

// Struktura 'lot' zawierajaca rozdzielony
// plik na wartosci typu char
struct
{
 char nr[6][2];
} lot[9999];

// Struktura 'lots' zawierajaca przekonwertowana
// strukture 'lot' z wartosci typu char na typ int
// oraz 'tmp' jako schowek podczas sortowania
struct
{
 char id[5];
 char date[15];
 int nr[6];
 int sum[6];
} lots[9999], tmp[1];

// Funkcja zamienia miejscami dwa
// sasiednie elemety struktury
int structSort()
{
 tmp[0] = lots[l];
 lots[l] = lots[l+1];
 lots[l+1] = tmp[0];
 change=1;
}

// Funkcja ukladajaca strukture wg
// algorytmu sortowania babelkowego
int fileSort()
{
 for (k=0; k<line-1; ++k)
 {
   change=0;
   for (l=0; l<line-1-k; l++)
   {
     // Porownanie dwoch sasiednich sum
     // wszystkich wylosowanych liczb
     if (lots[l+1].sum[5] < lots[l].sum[5])
     {
       structSort();
     }

     // Porownanie dwoch sasiednich sum
     // pierwszych pieciu wylosowanych liczb
     else if (lots[l+1].sum[5] == lots[l].sum[5] &&
              lots[l+1].sum[4] < lots[l].sum[4])
     { 
       structSort();
     }

     // Porownanie dwoch sasiednich sum
     // pierwszych czterech wylosowanych liczb
     else if (lots[l+1].sum[5] == lots[l].sum[5] &&
              lots[l+1].sum[4] == lots[l].sum[4] &&
              lots[l+1].sum[3] < lots[l].sum[3])
     { 
       structSort();
     }

     // Porownanie dwoch sasiednich sum
     // pierwszych trzech wylosowanych liczb
     else if (lots[l+1].sum[5] == lots[l].sum[5] &&
              lots[l+1].sum[4] == lots[l].sum[4] &&
              lots[l+1].sum[3] == lots[l].sum[3] &&
              lots[l+1].sum[2] < lots[l].sum[2])
     { 
       structSort();
     }

     // Porownanie dwoch sasiednich sum
     // pierwszych dwoch wylosowanych liczb
     else if (lots[l+1].sum[5] == lots[l].sum[5] &&
              lots[l+1].sum[4] == lots[l].sum[4] &&
              lots[l+1].sum[3] == lots[l].sum[3] &&
              lots[l+1].sum[2] == lots[l].sum[2] &&
              lots[l+1].sum[1] < lots[l].sum[1])
     { 
       structSort();
     }

     // Porownanie dwoch sasiednich wartosci
     // pierwszej wylosowanej liczby
     else if (lots[l+1].sum[5] == lots[l].sum[5] &&
              lots[l+1].sum[4] == lots[l].sum[4] &&
              lots[l+1].sum[3] == lots[l].sum[3] &&
              lots[l+1].sum[2] == lots[l].sum[2] &&
              lots[l+1].sum[1] == lots[l].sum[1] &&
              lots[l+1].sum[0] < lots[l].sum[0])
     { 
       structSort();
     }
   }
   if(!change) break;
 }
}


// Glowna funkcja wykonujaca
// operacje na plikach

fileOpen(fileMode)    //<<============PIERWSZY BłąD
{
 int i, state, position, z, b, lin, a;
 FILE *in, *out;

 // Dowiazanie do pliku losowan
 in = fopen(fileOpenAddress, fileMode);

 // Dowiazanie do przetworzonego pliku
 out = fopen(fileWriteAddress, fileMode);

 // Sprawdza czy funkcja zostala
 // wywolana w celu zapisu do pliku
 if(fileMode == write)
 {
   // Wywolanie funkcji sortujacej
   fileSort();

   for(lin=0; lin<line; lin++)
   {
     // Sprawdza czy linijka nie jest pusta
     if((int)lots[lin].id[0] != 0)
     {
       // Zapisanie pola 'id' do pliku
       for(z=0; z<5; z++)
       {
         fprintf(out, "%c", lots[lin].id[z]);
       }
       fprintf(out, "\t");

       // Zapisanie pola 'date' do pliku
       for(z=0; z<15; z++)
       {
         fprintf(out, "%c", lots[lin].date[z]);
       }

       // Zapisanie pol liczb do pliku
       for(b=0; b<6; b++)
       {
         // Sprawdza czy liczba jest prawdilowa
         if(lots[lin].nr[b] >= 1 && lots[lin].nr[b] <= 49)
         {
           fprintf(out, "\t%d", lots[lin].nr[b]);
         }

         // Jesli liczba jest spoza przedzialu
         // zostaje zapisana zamiast niej etykieta
         else
         {
           fprintf(out, "\tL_%d", b+1);
         }
       }
       fprintf(out, "\n");
     }
   }
 }

 // Sprawdza czy funkcja zostala
 // wywolana w celu odczytu z pliku
 else if(fileMode == read)
 {
   while(feof(in) == 0)
   {
     // Odczytanie jednego wiersza
     fgets(fileLine, 512, in);

     // Ustawienie zapisu na pierwszy
     // znak pierwszego pola
     state = 1; position = 0;

     // Sprawdza czy wiersz nie jest pusty
     if(fileLine[0] != '\t')
     {
       line++; state=1;

       // Przetworzenie wiersza
       for(i=0; fileLine[i] != ''; i++)
       {
         // Jesli aktualnie przetwarzanym znakiem
         // jest tabulacja to przelacza na zapis
         // do pierwszego znaku nastepnego pola
         if(fileLine[i] == '\t' || fileLine[i] == '\n')
         {
           state++;
           position = 0;
         }

         else
         {
           // Sprawdza do jakiego pola przepisywac znaki
           switch(state)
           {
             case 1:
             {
               // Przepisanie aktualnego znaku do
               // odpowiedniego miejsca w polu 'id'
               lots[line].id[position] = fileLine[i];
               position++;
               break;
             }
             case 2:
             {
               // Przepisanie aktualnego znaku do
               // odpowiedniego miejsca w polu 'date'
               lots[line].date[position] = fileLine[i];
               position++;
               break;
             }
             default:
             {
               // Przepisanie aktualnego znaku do
               // odpowiedniego miejsca w polu z liczba
               lot[line].nr[state-3][position] = fileLine[i];

               // Sprawdza czy liczba jest dwucyfrowa
               if(lot[line].nr[state-3][1] != NULL)
               {
                 // Przelicza dwucyfrowa liczbe z typu char na int
                 lots[line].nr[state-3] = (((int)lot[line].nr[state-3][0]-48) * 10)
                                          + ((int)lot[line].nr[state-3][1]-48);
               }
               else
               {
                 // Przelicza cyfre z typu char na int
                 lots[line].nr[state-3] = ((int)lot[line].nr[state-3][0])-48;
               }
               position++;
               break;
             }
           }
         }
       }

       // Sprawdza czy liczby mieszcza sie w zakresie 1-49
       if(lots[line].nr[0] >= 1 &&
          lots[line].nr[0] <= 49 &&
          lots[line].nr[1] >= 1 &&
          lots[line].nr[1] <= 49 &&
          lots[line].nr[2] >= 1 &&
          lots[line].nr[2] <= 49 &&
          lots[line].nr[3] >= 1 &&
          lots[line].nr[3] <= 49 &&
          lots[line].nr[4] >= 1 &&
          lots[line].nr[4] <= 49 &&
          lots[line].nr[5] >= 1 &&
          lots[line].nr[5] <= 49)
       {
         // Podliczenie wszystkich potrzebnych sum
         lots[line].sum[0] = lots[line].nr[0];
         lots[line].sum[1] = lots[line].nr[0]
                             + lots[line].nr[1];
         lots[line].sum[2] = lots[line].nr[0]
                             + lots[line].nr[1]
                             + lots[line].nr[2];
         lots[line].sum[3] = lots[line].nr[0]
                             + lots[line].nr[1]
                             + lots[line].nr[2]
                             + lots[line].nr[3];
         lots[line].sum[4] = lots[line].nr[0]
                             + lots[line].nr[1]
                             + lots[line].nr[2]
                             + lots[line].nr[3]
                             + lots[line].nr[4];
         lots[line].sum[5] = lots[line].nr[0]
                             + lots[line].nr[1]
                             + lots[line].nr[2]
                             + lots[line].nr[3]
                             + lots[line].nr[4]
                             + lots[line].nr[5];
       }
       else
       {
         // Wyzerowanie wszystkich sum
         lots[line].sum[0] =
         lots[line].sum[1] =
         lots[line].sum[2] =
         lots[line].sum[3] =
         lots[line].sum[4] =
         lots[line].sum[5] = 0;
       }
     }
   }
 }
 else if(in == NULL)
 {
   // Zwrocenie bledu odczytu pliku
   fprintf(stderr, fileError);
   return 1;
 }
}

// Glowna funkcja programu
main()
{
 printf("Podaj sciezke do pliku wynikow Duzego Lotka:\n # ");
 scanf("%s", &fileOpenAddress);
 fileOpen(read);                       //<<<<<<<<<===========TU KOLEJNY

 printf("Podaj sciezke do zapisu przetworzonych wynikow:\n # ");
 scanf("%s", &fileWriteAddress);
 fileOpen(write);            //<<<<<<<===================I TU

 return 0;
}

 

Próbowałem zmienic to na funkcje ale było to samo, a srednik nic nie daje

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...