Δημοσιεύτηκε: 07 Απρ 2012, 19:11
stamatiou έγραψε:Πήγα να κάνω μια υλοποίηση με έναν άλλο αλγόριθμο αλλά για κάποιο λόγο δεν μου εμφανίζει ούτε την έξοδο :/
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX_VALUE 2000000001L
int main(void) {
register long int counter, main_num, num_to_add,num_to_stop, i1, i2;
long int *array, smallest[3], size;
FILE *input, *output;
if(!(input = fopen("operators.in","r"))) {
printf("Failed to open operators.in\n");
exit(EXIT_FAILURE);
}
if(!(output = fopen("operators.out","w"))) {
printf("Failed to open operators.out\n");
exit(EXIT_FAILURE);
}
smallest[0] = MAX_VALUE;
fscanf(input,"%ld",&size);
if(!(array = (long int *) malloc(size * sizeof(long int)))) {
printf("Failed to allocate memory for input\n");
exit(EXIT_FAILURE);
}
array[0] = 0;
counter = 1;
fscanf(input, "%ld", &array[0]);
printf("Inputting:\t%ld\n",array[0]);
do {
fscanf(input, "%ld", &array[counter]);
printf("Inputing:\t%ld\n",array[counter]);
printf("Inputing:\t%ld\n",array[counter + 1]);
i1 = labs(array[0] + array[counter]);
i2 = labs(array[0] + array[counter + 1]);
counter += 2;
}while(counter - 2 < size && i1 > i2);
array = (long int *) realloc((long int *) array, ((size = counter) * sizeof(long int)));
for(main_num = 0; main_num < size; main_num++) {
for(num_to_add = main_num + 1; num_to_add < size && num_to_add <= num_to_stop; num_to_add++) {
printf("Processing:\t%ld %ld\n",array[counter],array[counter + 1]);
if((labs((array[main_num] + array[num_to_add]))) < (labs(array[main_num] + array[num_to_add + 1]))) {
smallest[0] = labs(array[main_num] + array[num_to_add]);
smallest[1] = array[main_num];
smallest[2] = array[num_to_add];
num_to_stop = num_to_add;
}
}
}
fprintf(output,"/---------------\nMinsum:\t%ld %ld",smallest[1],smallest[2]);
free(array);
exit(EXIT_SUCCESS);
}
Προτείνω για το δικό σου θέμα, μιας και μαθαίνεις προγραμματισμό, να ξεκινήσεις ένα νέο νήμα για συζήτηση με το πρόγραμμα που φτιάχνεις.