Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   В помощь студенту по С или C++ (https://forum.antichat.xyz/showthread.php?t=163799)

cheater_man 15.12.2009 20:18

В помощь студенту по С или C++
 
Примерно такую прогу обычно сдают студенты 2-го курса.В прогу входит открытие файла, записать в файл массива, чтение из файла в массив и сортировка массива методом перебора(Прога написанна на Turbo C++)
Код:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <time.h>
void write_file(FILE *f, char *file_name,int size);
int main()
{
int a;
FILE *f1;
srand(time(NULL));
char *file_name = "file_in.txt";
char array[256];
printf("Random massiv:\n");
f1 =fopen(file_name,"wr");
    if(f1==NULL)
        printf("Error open file");
        else
        {
          for(int i=0;i<256;i++)
          {
            a = rand() % 100;
            array[i] = a;
            if(i>0&&i<254)
            {
            fprintf(f1,"%d,",array[i]);
            printf("%d,",array[i]);
            }
            if(i==255)
            {
            fprintf(f1,"%d.",array[i]);
            printf("%d.",array[i]);
            }
          }
          fclose(f1);
        }
getch();
write_file(f1,file_name,256);
clrscr();
return 0;
}
void write_file(FILE *f,char *file_name, int size)
{
FILE *file_out;
file_out = fopen("file_out.txt","w");
f = fopen(file_name,"r");
int int_from_file,i=0;
char c;
char mass[256];
while(fscanf(f,"%d %c",&int_from_file,c)!=EOF)
{ mass[i] = int_from_file;
  i++;
}
int min;
int temp;
for(int r=0;r<size-1;r++)
{
 min = r;
  for(int j=r+1;j<size;j++)
  {
    if(mass[j]<mass[min])
    {
      min=j;
    }
  }
  temp = mass[r];
  mass[r] = mass[min];
  mass[min] = temp;
}
fclose(f);
if(file_out==NULL)
    printf("Error open file");
 else
  printf("\nOtsortirovanii massiv\n");
  for(int d=0;d<size;d++)
    {
    if(d>0&&d<size)
      {
      fprintf(file_out,"%d,",mass[d]);
      printf("%d,",mass[d]);
      }
    if(d==size-1)
      {
      fprintf(file_out,"%d.",mass[d]);
      printf("%d.",mass[d]);
      }
    }
fclose(file_out);
getch();
}

Если кому что не понятно , пишите ответим :)

ASQX 15.12.2009 20:26

разве в С++ ф-ция main не должна возвращять int число?

rushter 15.12.2009 20:37

Цитата:

Сообщение от ASQX
разве в С++ ф-ция main не должна возвращять int число?

Если void,то нет.

razb 16.12.2009 00:16

Вообще не могу понять зачем эта тема?
Уже есть тема для помощи студентам с лабами, хватит засирать раздел!

0xF0RD 16.12.2009 04:54

Вообще, по правилам языка С++ , если функция main() имеет тип возвращаемого значения void, то она должна заканчиваться так exit (0), где 0-код возврата

R1der23 16.12.2009 13:54

вообще то по стандарту с++ функция main должна возвращать int ..

cheater_man 16.12.2009 23:23

Нет стандарта у main, и не обязательно она возвращать int.
Например могу еще и вот так написать
Код:

void main(void)
{
....
}

И это не будет считаться за ошибку, т.к main это главный поток программы и он должен быть не обязательно int :)
А эта тема создана для студентов :D и всё на это :D

nerezus 17.12.2009 01:40

Цитата:

Нет стандарта у main, и не обязательно она возвращать int.
Есть.
Только вот в нем написано should.
Т.е. "рекомендуется", которое применено к компилеру.

vdm 17.12.2009 02:30

По стандарту всё-таки int. Есть (плохие) компилеры, которые это глотают, но вообще это некорректно. Программа должна хоть что-то отдавать ОС, т.е. обычно 0 в случае отсутствия ошибки - это весьма удобно, так как exit code тоже можно обработать уже в самой ОС, например так:

Код:

./proga
if [ $? -ne 0 ]; then
  echo "Shit happens";
fi


cheater_man 17.12.2009 12:45

Цитата:

Сообщение от vdm
По стандарту всё-таки int. Есть (плохие) компилеры, которые это глотают, но вообще это некорректно. Программа должна хоть что-то отдавать ОС, т.е. обычно 0 в случае отсутствия ошибки - это весьма удобно, так как exit code тоже можно обработать уже в самой ОС, например так:

Код:

./proga
if [ $? -ne 0 ]; then
  echo "Shit happens";
fi


Да всетаки соглашусь, что main должна быть int. Гуглил на счет main и в некоторых стaтьяx пишут:
Код:

viod main()
{
...
}

Все таки это не правильно! Действительно правильней будет так:
Код:

int main()
{
...
return 0;
}

->http://ru.wikipedia.org/wiki/C%2B%2B


Время: 15:34