Hallo allemaal,
Een poosje geleden heb ik een programmeeropdracht moeten maken op de Universiteit. De opdracht was onder andere een functie te schrijven die kijkt of je een weerstand kan maken door verschillende weerstanden op een bepaalde manier aan elkaar te schakelen (oftewel: serie en/of parallel). De opdracht was om deze functie zo te maken dat er eerst gekeken werd of de weerstand gemaakt kon worden met 2 weerstanden, daarna met 3, enzovoorts.
Nu heb ik een programmaatje geschreven, maar om de een of andere reden gaat het mis. Als ik bijvoorbeeld een pointer (int *R_prev) laat wijzen naar de array met oorspronkelijke weerstanden (R[12]) dan krijg ik alleen maar de eerste waarde door?!?
Het zou fijn zijn als iemand even naar mijn code zou willen kijken, waarschijnlijk is het gewoon een domme fout, maar ik kom er toch niet uit.
Alvast bedankt!
Job
De declaraties etc:
en de functie:
Ps. de series() en parallel() functies kloppen, die heb ik namelijk bij de opdracht gekregen ;-)
Een poosje geleden heb ik een programmeeropdracht moeten maken op de Universiteit. De opdracht was onder andere een functie te schrijven die kijkt of je een weerstand kan maken door verschillende weerstanden op een bepaalde manier aan elkaar te schakelen (oftewel: serie en/of parallel). De opdracht was om deze functie zo te maken dat er eerst gekeken werd of de weerstand gemaakt kon worden met 2 weerstanden, daarna met 3, enzovoorts.
Nu heb ik een programmaatje geschreven, maar om de een of andere reden gaat het mis. Als ik bijvoorbeeld een pointer (int *R_prev) laat wijzen naar de array met oorspronkelijke weerstanden (R[12]) dan krijg ik alleen maar de eerste waarde door?!?
Het zou fijn zijn als iemand even naar mijn code zou willen kijken, waarschijnlijk is het gewoon een domme fout, maar ik kom er toch niet uit.
Alvast bedankt!
Job
De declaraties etc:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 10
#define NUMBER 5
int R[N]= {2,5,10,15,22,33,47,68,100,150};
int *R_prev = NULL;
int R_prev_size;
en de functie:
Code:
int solve_with_n_components(int R_goal)
{
int i, j, k = 0, l;
int size = 10;
int* R_new;
R_prev = R;
for(l = 0; l < NUMBER; l++) {
size = 2*10*size;
R_new = (int *) malloc(size * sizeof(int) );
for(i = 0; i < size; i++) {
for(j = 0; j < N; j++) {
R_new[k] = series(R_prev[i], R[j]);
R_new[k++] = parallel(R_prev[i], R[j]);
if(R_new[k] == R_goal || R_prev[k-1] == R_goal) {
return 1;
}
}
}
R_prev = R_new;
k = 0;
}
return 0; // return 0 if R_goal not realized, otherwise return 1
}
Ps. de series() en parallel() functies kloppen, die heb ik namelijk bij de opdracht gekregen ;-)