Задание было таким: "Имеется несколько шашек (не более 80) разного цвета, программа должна запросить: - число цветов - кол-во шашек каждого цвета; и выдать сообщение о возможности их расположению по кругу, так чтобы рядом не стояли шашки одного цвета, в случае положительного ответа программа должна вывести строки цветов(т.е. раположение шашек по цветам). "
Вот что получилось:
| Код | #include <stdio.h> #include <stdlib.h> template<class T> void swap(T& a, T& b) { a = a + b; b = a - b; a = a - b; } // пузырьком void sort_lk(int* by,int* l, int n) { int i,j; for(i = 0;i < n;i++) for(j = 1;j < n;j++) if(by[j] > by[j-1]) { swap(by[j], by[j-1]); swap(l[j], l[j-1]); } } void insert(int *m, int n, int to, int elem) { // printf("ins %d to %d\n", elem, to); int i; for(i = n - 1; i >= to; i--) m[i+1] = m[i]; m[to] = elem; } int main() { int cl; int i, j; int *count, *cname; int *res, total; FILE *f; char filename[32]; // получение инфы printf("Enter color count:"); scanf("%d",&cl); if(cl < 1) return 0; count = (int*)malloc(cl*sizeof(int)); cname = (int*)malloc(cl*sizeof(int)); for(i = 0;i < cl;i++) { printf("Enter chips' count for color '%d':", i + 1); do scanf("%d", count + i); while(count[i] < 0); cname[i] = i + 1; } sort_lk(count, cname, cl); // определение возможности размещения j = 0; for(i = 1; i < cl; i++) { j += count[i]; } total = count[0] + j; printf("Total chips: %d\n", total); printf("Enter filename for output:"); scanf("%31s", filename); f = fopen(filename,"w"); if(j < count[0]) { fprintf(f,"\nImposible!\n"); free(count); free(cname); return(0); } res = (int*)malloc(total*sizeof(int)); j = 1; while(count[0] > 0) { insert(res,total,0,cname[j]); insert(res,total,0,cname[0]); count[0]--; count[j]--; if(count[j] < 1) j++; } while(j < cl) { for(i = 1;res[i] == cname[j] || res[i-1] == cname[j];i++); insert(res, total, i, cname[j]); count[j]--; if(count[j] < 1) j++; } fprintf(f,"Result: "); for(i = 0;i < total;i++) fprintf(f,"%d ",res[i]); fprintf(f,"\n"); free(res); free(count); free(cname); fclose(f); return(0); }
|
Необходимо исправить: - что-бы вместо строчки общего кол-ва шашек,которое идёт после строчки про цвета, появлялось строчка либо, "Ответ: невозможно" или "Ответ:возможно", а в случае возможно, должна появлятся строчка, например "Результат: 141423131313212". - и чтобы программа не запрашивала куда, а автоматически сохраняла вводимые данные и результат вычислений в файл напримерна диск С "rezult.txt". Срочно нужна помощь,может у кого-то тоже есть какие-нибудь варианты как это исправить,момогите пожалуйсто! |