Skip to content

Instantly share code, notes, and snippets.

@aminbenarieb
Created September 13, 2015 20:31
Show Gist options
  • Save aminbenarieb/763eb622f3e2631fb060 to your computer and use it in GitHub Desktop.
Save aminbenarieb/763eb622f3e2631fb060 to your computer and use it in GitHub Desktop.
//
// module.c
//
//
// Created by Amin Benarieb on 13/09/15.
//
//
#include "module.h"
// Печать массива
void printArray(int const * const sPtr, int const * const ePtr)
{
for(int *ptr = (int *)sPtr; ptr < ePtr; printf("%d ", *ptr++));
}
//Обработка файла
bool processFile(int **a, char *fileName, int **ePtr)
{
int temp;
int n = 0;
FILE *f = fopen(fileName, "r");
if(!f)
{
printf("File with name %s is not found with address: \n", fileName);
return false;
}
//Считывание файла в массив
printf("Reading file...\n");
// Первый проход - опредление кол-ва элементов в файле
for (n = 0; fscanf(f, "%d", &temp) == 1; n++);
if (n == 0)
{
printf("File is empty.\n");
return false;
}
// Выделение памяти для массива
*a = (int *)realloc(*a, n * sizeof(int));
// Сброс позиции курсора в файле
rewind(f);
// Второй проход - считывание файла в массив
for (*ePtr = *a; fscanf(f, "%d", *ePtr) == 1; (*ePtr)++);
fclose(f);
return true;
}
//Минимум из произведений соседних элементов массива
int min(int const * const sPtr, int const * const ePtr, int *error)
{
int min = 0;
bool firstFlag = false;
bool secondFlag = false;
for(int *ptr = (int *)sPtr; ptr < (ePtr-1); ptr++)
{
int temp = *ptr**(ptr+1);
secondFlag = firstFlag;
if (min > temp || !firstFlag)
{
min = temp;
firstFlag = true;
}
}
*error = firstFlag && secondFlag ? 0 : 1;
return min;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment