惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
A
About on SuperTechFans
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
月光博客
月光博客
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
Jina AI
Jina AI
有赞技术团队
有赞技术团队
博客园_首页

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Building a Simple Circuit Resistance Calculator in C++ (a...
Alexandru · 2026-06-15 · via DEV Community

Alexandru

Every programmer has, at some point, fallen into a logical trap. While building a simple console-based electrical circuit simulator in C++, I stumbled upon a classic boolean logic mistake that completely broke my code.

Here is how to build this useful engineering tool and, more importantly, how to avoid the infinite loop trap!


⚡ The Goal: An Equivalent Resistance Calculator

In physics, calculating the total resistance depends on how components are linked:

  • Series: R_total = R1 + R2 + ... + Rn
  • Parallel: R_total = (R1 * R2) / (R1 + R2)

We want a program where the user specifies the number of resistors, inputs their values, and chooses the connection mode (s for serial, p for parallel) interactively.


🚨 The Logical Trap: The Double Non-Equality Bug

When validating user input, my first instinct was to create a while loop that kept asking for the link mode if the user typed an invalid character. It looked like this:

// ❌ THE BUGGY CODE
while (link != 's' || link != 'p') {
    cout << "Invalid link mode. Enter 's' or 'p': ";
    cin >> link;
}

Why this creates an Infinite Loop:
The || (OR) operator means the condition is true if either side is true.
If the user types 's', the first check (link != 's') is False. But the second check (link != 'p') is True (because 's' is not 'p').
Since False OR True = True, the loop runs forever, blocking the program even if you type the correct letter!

🛠️ The Final, Bug-Proof Solution
To fix this, we must use the && (AND) operator. The loop should only run if the input is not 's' AND it is also not 'p'.

Here is the complete, working C++ source code:



#include <iostream>

using namespace std;

int main()
{ 
    int n;
    double R, Rc;
    char link;

    cout << "Enter the number of the resistances in the circuit: ";
    cin >> n;
    cout << "Enter the value of the first resistance (ohms): ";
    cin >> R;
    Rc = R;

    for(int i = 2; i <= n; i++){
        cout << "Enter the value of the current resistance (ohms): ";
        cin >> R;
        cout << "Enter the link mode (s-serial/p-parallel): ";
        cin >> link;

        while(link != 's' && link != 'p'){
            cout << "Invalid link mode. Enter the link mode (s-serial/p-parallel): ";
            cin >> link;
        }

        if(link == 's'){
            Rc = Rc + R;
        }
        else {
            Rc = Rc * R / (Rc + R);
        }
    }

    cout << "The equivalent resistance of the circuit is: " << Rc << " ohms" << endl;

    return 0;
}