Я сталкиваюсь с этой проблемой и не понимаю почему. Я использовал точно такой же цикл, прежде чем тестировать его (без внутреннего кода), и он работал. Я не новичок в программировании (хотя c новичком), но теперь я определенно чувствую себя таковым. Я заменил длину жестко закодированным числом, ничего не меняет. jobStatus () также использует только цикл for, который работает нормально. Помощь приветствуется!
PS: Не возражайте против части if / else-if. Это был просто отчаянный шаг, потому что я не могу найти проблему, я знаю, что мне не нужно последнее, если и т.д.
заранее спасибо
#include <stdio.h>
#include <stdlib.h>
short jobs[] = {6,13,7,3,4,9,10,11};
short table[13][10];
short Q,i,j,k,diff;
short sum;
void jobStatus(short a){
printf("Jobstatus:");
for(i=0;i<a;i++){
printf(" %i",jobs[i]);
} printf("\n");
}
int main(){
// berechne Anzahl der Jobs
short length = sizeof(jobs)/2;
printf("Jobs: %i\n", length);
/* für alle Quanten Q
for(Q=0;Q<13;Q++){
// schreibe das jeweilige Quantum in die erste Spalte jeder Zeile
table[Q][0]=(Q+1);
gehe jeden Job durch*/
for(i=0;i<length;i++){
printf("Current Job: %i\n", i);
/* falls der aktuelle job i bereits erledigt ist überspringe ihn
if(jobs[i]==0){
i++;
}*/
diff=jobs[i]-(Q+1);
if(diff>0){
jobs[i]=diff;
jobStatus(length);
table[Q][i+1]=diff;
} else if(diff==0){
jobs[i]=0;
} else if(diff<0){
diff=diff*(-1);
jobs[i]=0;
table[Q][i+1]+=diff;
}
}
printf("# Q P1 P2 P3 P4 P5 P6 P7 P8 Avg.Time\n");
printf("#------------------------------------\n");
for(Q=0;Q<13;Q++){
for(i=0;i<8;i++){
printf(" %i", table[Q][i]);
}
printf("\n");
}
return 0;
}
Это вывод:
Задания: 8 // Указывает, что длина должна быть установлена на 8
Jobstatus: 5 13 7 3 4 9 10 11
Q P1 P2 P3 P4 P5 P6 P7 P8 Avg.Time
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0