Permalänk
Medlem

problem i c

Tjena. Har lite problem med en pekare tror jag, får kompileringsfelet warning: assignment makes pointer from integer without a cast på två olika ställen. Jag har testat med lite olika idéer, men kan inte få det att fungera.
Den kompletta koden finns nedanför.

#include <stdio.h>
#include <stdlib.h>

struct process {
int pid; /* Process ID */
int burst; /* CPU Burst Time */
int working; /* Working time, for round-robin scheduling */
int waiting; /* Waiting time, for round-robin scheduling */
struct process *next;
};

typedef struct process Process; /*Synonym för struct process*/
typedef Process *ProcessList; /*Synonym för Process*/

/* Funktions prototyper*/
void fcfs (int pid[], int burst[], const int pNo);
void rr (struct process *proc, int quantum, const int pNo);

int main (void)
{
struct process *plist, *ptmp;
const int pNo = 10; /*Antal processer*/
int pid[pNo]; /* Process ID */
int burstFCFS[pNo]; /* CPU Burst Time för FCFS */
int burstRR[pNo];
int q, pass;
int i, j, k, l;

pass = 0;

printf("Input number of processes (1 to 10) for each queue: ");
scanf("%d", &pNo);

pid[0] = 1;

for(i = 1; i < pNo; i++){
pid[i] = pid[i-1] + 1;
}

for(j=0; j < pNo; j++){
printf("Enter values for burst times for FCFS: ");
scanf("%d", &burstFCFS[j]);
}

printf("Enter quantum for RR:: ");
scanf("%d", &q);

for(k=0; k < pNo; k++){
printf("Enter values for burst times for RR: ");
scanf("%d", &burstRR[k]);
}

/* Initialize process list */
for(k=0; k < pNo; k++){
plist->pid = pid[k];
plist->burst = burstRR[k];
plist->next;
printf("%d", plist->pid);
}
pass = 0;
while (pass < pNo){
printf("%d", plist->pid);
pass++;
}
/* Kör simuleringarna */
rr(plist, q, pNo);
fcfs(pid, burstFCFS, pNo);

return(0);
};

/* First-Come-First-Served scheduling simulation */
void fcfs (int pid[], int burst[], const int pNo) {
int time = 0, start, end, i;

printf("BEGIN:\tFirst-Come-First-Served scheduling simulation\n");

for(i = 0; i < pNo; i++){
start = time;
time += burst[i];
end = time;
printf("Process: %d\tEnd Time: %d\tWaiting: %d\tTurnaround: %d\n", pid[i], time, start, end);
}

printf("END:\tFirst-Come-First-served scheduling simulation\n\n");
}

/* Round-Robin scheduling simulation */
void rr (struct process *proc, int quantum, const int pNo) {
int end, i, pass;
struct process *copy, *tmpsrc, *tmp, *slot;
pass = 0;

printf("BEGIN:\tRound-Robin scheduling simulation (Quantum: %d)\n", quantum);
tmpsrc = proc;
copy = NULL;
tmp = NULL;
while (tmpsrc != NULL) {
if (copy == NULL) {
copy = tmpsrc->pid, tmpsrc->burst;
tmp = copy;
} else {
tmp->next = tmpsrc->pid, tmpsrc->burst;
tmp = tmp->next;
};
tmpsrc = tmpsrc->next;
};
tmp = copy;
while (tmp != NULL) {
printf("Process: %d\tWorking: %d\tWaiting: %d\tTurnaround: %d\n", tmp->pid, tmp->working, tmp->waiting, tmp->working + tmp->waiting);
tmpsrc = tmp;
tmp = tmp->next;
}

printf("END:\tRR scheduling simulation\n\n");
}

P.S Jag ber om ursäkt för att koden inte verkar bli indenterad, jag har förhandsgranskat och trots att jag har koden indenterad när jag skriver in den, så blir den inte det när jag skapar tråden.. sorry. D.S.

EDIT: Det är raden med följande kod som genererar felet:
copy = tmpsrc->pid, tmpsrc->burst; och
tmp->next = tmpsrc->pid, tmpsrc->burst;

Visa signatur

Pentium 4 2.4 Ghz, Abit IS7-E, 500gb hd, Gainward Geforce FX5900 128 mb, 1024 mb ddr 400 mhz

Permalänk

Använd code eller php-taggarna

[.code] / [.php] utan punkter.

Visa signatur

"90% av att vara smart är att veta sina begränsningar. De återstående 10 procenten är att veta att man måste gå utanför dessa begränsningar."
Hjälp till att öka kunskapen.
FirefoxMyths

Permalänk
Medlem

vad är det du vill få gjort med dessa två rader? Jag vill veta din tanke med koden både före och efter kommatecknet. Jag är inte säker på att kommatecknet där gör det du vill att det ska göra.

Permalänk
Glömsk
Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.