We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you two Citrix podcasts. Learn about 2020 trends and get answers to your biggest Citrix questions!Listen Now

x

# Electronics calculations using C

on
Medium Priority
216 Views
I am looking for an appropriate data-structure to represent and calculate the values of electronic components that connected (wired) in a circuit.
Questions:
- How do I resolve data storage for components that have  many values (transistors) and for components that have a  only a few (resistors, capacitors, yet don't end up with a dozen different "typedef struct"?
- How do I represent nodes -e.g. wires - connecting each  components, since the components are
- not limited only to 2 nodes (transistors has 3 nodes)
- not limited to 2 wires (from a node any number of wires can origin)

- Is it the problem that I am thinking too pictorically, and problems of this nature should be derived into equations and solved algebrically?
- Wouldn't be better to use C++ and create classes of components to pass data between components to simulate voltage/current/resistance values through the circuit?
- Am I have gone nuts?
Comment
Watch Question

## View Solution Only

Commented:
I would much rather use C++ as a solution.  You can create electronic objects that have their behavior programmed in. Each component would have relationships to other components (representing the connections).

I don't remember enuf about electronics though to give you much further advice though..
Commented:
Use a dynamic Structure.

struct element {
unsigned node_anz;
struct **ppnodes;
... + any other info you need
}
/* Create a new element
* Returnvalue is pointer to the element */

struct element *create_new_element(int node_anz)
{
struct element *p;
p=(struct element*)calloc (sizeof(struct element),1);
p->node_anz = node_anz;
p->ppnodes = (struct element **)calloc (sizeof(struct element *),p->node_anz);
return (p);
}
/* Connect to elements at node1 of first element p1 and at node2
* of second element p2 */
void connect_elements (struct element *p1, struct element *p2,
unsigned node1, unsigned node2)
{
if ((node1 < p1->node_anz) && (node2 < p2->node_anz)) {
p1->ppnodes[node1]=p2;
p2->ppnodes[node2]=p1;
}
}

Not the solution you were looking for? Getting a personalized solution is easy.

Commented:
If you need wires this is just a dummy element which as many nodes as you need.

Commented:
A linked list provides only a partial solution, and I'll still end up with all those struct for different components. Traveling a list even more difficult, but this is the only solution I have found so far, and have to consider...
Thanks -san
##### Thanks for using Experts Exchange.

• View three pieces of content (articles, solutions, posts, and videos)
• Ask the experts questions (counted toward content limit)
• Customize your dashboard and profile