#include <stdio.h>
int e_resistance(float orig_resistance, float *res_array);
float getClosestValue(float ohm);
int main(void) {
int i;
float ohm = 1239;
float *p_array;
float r_array[3] = { };
p_array = r_array;
printf("Integer returned: %d\n ", e_resistance
(ohm
, p_array
));
for (i = 0; i < 3; i++){
printf("Ohm-value %d: %f\n ", i
+1, p_array
[i
]); }
return 0;
}
//********************************************************************
/*function to replace resistor-values with the closest one
from the e12-series, saved hard-coded above */
int e_resistance(float orig_resistance, float *res_array){
float r1 = 0;
float r2 = 0;
float r3 = 0;
float tmp;
int counter = 0;
if(orig_resistance > 0){
r1 = getClosestValue(orig_resistance);
res_array[0] = r1;
if(r1 > 0){
counter = counter + 1;
}
//difference saved in tmp
tmp = orig_resistance - r1;
if(tmp != 0){
r2 = getClosestValue(tmp);
res_array[1] = r2;
if(r2 > 0){
counter = counter + 1;
}
}
tmp = tmp - r2;
if(tmp !=0){
r3 = getClosestValue(tmp);
res_array[2] = r3;
if(r3 > 0){
counter = counter + 1;
}
}
}
printf("Printing just to see the value of counter in e_resistance: %d\n", counter
);
return counter; //this counter is usually returned as "0", even though the counter above is for example "2"
}
//*******************************************************************
//function to return the closest value in the e12-serie to the incoming parameter
float getClosestValue(float ohm){
float e12[] = {10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82, 100, 120, 150, 180, 220, 270, 330, 390, 470, 560, 680, 820, 1000, 1200, 1500, 1800, 2200, 2700, 3300, 3900, 4700, 5600, 6800, 8200, 10000, 12000, 15000, 18000, 22000, 27000, 33000, 39000, 47000, 56000, 68000, 82000, 100000, 120000, 150000, 180000, 220000, 270000, 330000, 390000, 470000, 560000, 680000, 820000, 1000000};
int i;
for(i=0; i<(sizeof(e12)/sizeof(e12)[0]); i++){
if(ohm == e12[i])
return e12[i];
else if (e12[i] > ohm)
return e12[i-1];
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBlX3Jlc2lzdGFuY2UoZmxvYXQgb3JpZ19yZXNpc3RhbmNlLCBmbG9hdCAqcmVzX2FycmF5KTsKZmxvYXQgZ2V0Q2xvc2VzdFZhbHVlKGZsb2F0IG9obSk7CgppbnQgbWFpbih2b2lkKSB7CgppbnQgaTsKZmxvYXQgb2htID0gMTIzOTsKCmZsb2F0ICpwX2FycmF5OwpmbG9hdCByX2FycmF5WzNdID0geyB9OwoKcF9hcnJheSA9IHJfYXJyYXk7CgpwcmludGYoIkludGVnZXIgcmV0dXJuZWQ6ICVkXG4gIiwgZV9yZXNpc3RhbmNlKG9obSwgcF9hcnJheSkpOwoKIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspewogcHJpbnRmKCJPaG0tdmFsdWUgJWQ6ICVmXG4gIiwgaSsxLCBwX2FycmF5W2ldKTsKIH0KcmV0dXJuIDA7Cgp9CgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgovKmZ1bmN0aW9uIHRvIHJlcGxhY2UgcmVzaXN0b3ItdmFsdWVzIHdpdGggdGhlIGNsb3Nlc3Qgb25lCmZyb20gdGhlIGUxMi1zZXJpZXMsIHNhdmVkIGhhcmQtY29kZWQgYWJvdmUgKi8KaW50IGVfcmVzaXN0YW5jZShmbG9hdCBvcmlnX3Jlc2lzdGFuY2UsIGZsb2F0ICpyZXNfYXJyYXkpewoKZmxvYXQgcjEgPSAwOwpmbG9hdCByMiA9IDA7CmZsb2F0IHIzID0gMDsKCmZsb2F0IHRtcDsKCmludCBjb3VudGVyID0gMDsKIGlmKG9yaWdfcmVzaXN0YW5jZSA+IDApewogICByMSA9IGdldENsb3Nlc3RWYWx1ZShvcmlnX3Jlc2lzdGFuY2UpOwogICAgIHJlc19hcnJheVswXSA9IHIxOwogICAgIGlmKHIxID4gMCl7CiAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMTsKICAgICB9CgogICAgLy9kaWZmZXJlbmNlIHNhdmVkIGluIHRtcAogICB0bXAgPSBvcmlnX3Jlc2lzdGFuY2UgLSByMTsKICAgCiAgaWYodG1wICE9IDApewogICByMiA9IGdldENsb3Nlc3RWYWx1ZSh0bXApOwogICAgIHJlc19hcnJheVsxXSA9IHIyOwogICAgaWYocjIgPiAwKXsKICAgICBjb3VudGVyID0gY291bnRlciArIDE7CiAgICB9CiAgfQoKICAgdG1wID0gdG1wIC0gcjI7CgogIGlmKHRtcCAhPTApewogICByMyA9IGdldENsb3Nlc3RWYWx1ZSh0bXApOwogICAgcmVzX2FycmF5WzJdID0gcjM7CiAgICBpZihyMyA+IDApewogICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMTsKICAgIH0KICB9CiB9CiBwcmludGYoIlByaW50aW5nIGp1c3QgdG8gc2VlIHRoZSB2YWx1ZSBvZiBjb3VudGVyIGluIGVfcmVzaXN0YW5jZTogJWRcbiIsIGNvdW50ZXIpOwoKIHJldHVybiBjb3VudGVyOyAvL3RoaXMgY291bnRlciBpcyB1c3VhbGx5IHJldHVybmVkIGFzICIwIiwgZXZlbiB0aG91Z2ggdGhlIGNvdW50ZXIgYWJvdmUgaXMgZm9yIGV4YW1wbGUgIjIiCn0KCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLy9mdW5jdGlvbiB0byByZXR1cm4gdGhlIGNsb3Nlc3QgdmFsdWUgaW4gdGhlIGUxMi1zZXJpZSB0byB0aGUgaW5jb21pbmcgcGFyYW1ldGVyCmZsb2F0IGdldENsb3Nlc3RWYWx1ZShmbG9hdCBvaG0pewoJCiBmbG9hdCBlMTJbXSA9IHsxMCwgMTIsIDE1LCAxOCwgMjIsIDI3LCAzMywgMzksIDQ3LCA1NiwgNjgsIDgyLCAxMDAsIDEyMCwgMTUwLCAxODAsIDIyMCwgMjcwLCAzMzAsIDM5MCwgNDcwLCA1NjAsIDY4MCwgODIwLCAxMDAwLCAxMjAwLCAxNTAwLCAxODAwLCAyMjAwLCAyNzAwLCAzMzAwLCAzOTAwLCA0NzAwLCA1NjAwLCA2ODAwLCA4MjAwLCAxMDAwMCwgMTIwMDAsIDE1MDAwLCAxODAwMCwgMjIwMDAsIDI3MDAwLCAzMzAwMCwgMzkwMDAsIDQ3MDAwLCA1NjAwMCwgNjgwMDAsIDgyMDAwLCAxMDAwMDAsIDEyMDAwMCwgMTUwMDAwLCAxODAwMDAsIDIyMDAwMCwgMjcwMDAwLCAzMzAwMDAsIDM5MDAwMCwgNDcwMDAwLCA1NjAwMDAsIDY4MDAwMCwgODIwMDAwLCAxMDAwMDAwfTsJCiAKIGludCBpOwoKIGZvcihpPTA7IGk8KHNpemVvZihlMTIpL3NpemVvZihlMTIpWzBdKTsgaSsrKXsKICBpZihvaG0gPT0gZTEyW2ldKQogICByZXR1cm4gZTEyW2ldOwogIGVsc2UgaWYgKGUxMltpXSA+IG9obSkKICAgcmV0dXJuIGUxMltpLTFdOwogfQpyZXR1cm4gMDsKfQo=