Записать в массив Array все, что лежит правее 4 в 1-ой строке - C (СИ)
Формулировка задачи:
Есть входной файл:
4 -2 1 -4 0.5 -6 3 -3 4
8 4 8 5 12 8 11 9 8.5 10 4.5 8 4 7.5 5 5 5
Где N=4 и N1=8, то есть первое число в строке.
Тут я пытаюсь записать в массив Array все что лежит правее 4 в 1-ой строке, а в массив Array1 все что лежит правее 8 во второй строке.Выводит какой-то бред.
if(in!=NULL) { //Array fscanf(in, "%d", &N); if((Array=(double *)malloc((2*N)*sizeof(double)))!=NULL) { int i=0; while(fscanf(in, "%f", &tmp)==1) { Array[i]=tmp; i++; if(i+1>2*N) break; } }else { printf("Error memory allocation\n"); return 1; } //Array1 fscanf(in, "%d", &N1); if((Array1=(double *)malloc((2*N1)*sizeof(double)))!=NULL) { int i=0; while(fscanf(in, "%f", &tmp)==1) { Array1[i]=tmp; i++; if(i+1>2*N1) break; } }else { printf("Error memory allocation\n"); return 1; } }else { fprintf(out, "Error reading\n"); fclose(out); return -1; }
Решение задачи: «Записать в массив Array все, что лежит правее 4 в 1-ой строке»
textual
Листинг программы
int m=1, n=1; double fabs1=0.0, sqrt1=0.0; double distance=0.0, mindistance=0.0; for(;;) { if(m*(m-1)==N) break; for(;;) { if(2*n*(n-1)==N1) break; fabs1=(Array1[2*n*(n-1)+3]-Array1[2*n*(n-1)+1])*Array[m*(m-1)]+(Array1[2*n*(n-1)]-Array1[2*n*(n-1)+2])*Array[m*(m-1)+1]+(Array1[2*n*(n-1)+1]*(Array1[n+2]-Array1[2*n*(n-1)])-Array1[2*n*(n-1)]*(Array1[2*n*(n-1)+3]-Array1[2*n*(n-1)+1])); sqrt1=(Array1[2*n*(n-1)+3]-Array1[2*n*(n-1)+1])*(Array1[2*n*(n-1)+3]-Array1[2*n*(n-1)+1])+(Array1[2*n*(n-1)]-Array1[2*n*(n-1)+2])*(Array1[2*n*(n-1)]-Array1[2*n*(n-1)+2]); distance=fabs(fabs1)/sqrt(sqrt1); if(mindistance<distance) { mindistance=distance; } n++; } m++; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д