I've some issues with a basic C practice for school, I have to write a C program that calculates the replacement resistance of a ladder network.
This is my code (sorry for the dutch):
/*laddernetwerk calculator*/
#include <stdio.h>
#include <math.h>
float R1, R2, Rinvoer;
int groep; //hierin wordt het nummer van de groep opgeslagen
char c; //hierin wordt de keuze van of er nog meer groepen zijn opgeslagen
int main(void){
printf("Een laddernetwerk bestaat uit merdere goepen weerstanden in serie (zie tekening).\n");
printf("Na elke verticale weesrand of weerstanden dient een lijn recht naar beneden getrokken te worden.\n");
printf("In dit programma moeten alle weerstanden uit een bepaalde groep ingevoerd worden.\n");
printf("Groep 1 bestaat in dit voorbeeld uit R1 en R2, groep 2 bestaat uit R3, R4 en R5.\n");
printf("Er kunnen met dit programma natuurlijk veel meer dan 2 groepen opgelost worden, de afbeelding is slechts een voorbeeld\n");
printf("\n");
printf(" groep 1 | groep 2 |\n");
printf(" ----------- | ------------ ----------- |\n");
printf("---------- R1 -----------|---- R3 ---- R4 ------------|---\n");
printf(" ----------- | | ------------ ----------- | |\n");
printf(" | | | | | |\n");
printf(" | R | | | R | | etc.\n");
printf(" | 2 | | | 5 | |\n");
printf(" | | | | | |\n");
printf(" | | | |\n");
printf("--------------------------------|-------------------------------------------|---\n");
printf(" | |\n");
printf("\n");
printf("Druk op enter om door te gaan met het programma");
while( getchar() != '\n' ); //wachten om door te gaan
printf("Geef 1 voor 1 de weerstanden van groep 1, druk op een letter als alle waarden ingevuld zijn\n");
R1=0;
while (scanf("%f", &Rinvoer) == 1)
R1 = Rinvoer + R1;
printf("Zijn er nog meer groepen weerstanden? type j voor ja, n voor nee\n");
printf("%.2f",R1);
/*--here the program stops--*/
scanf("%s", &c);
groep = 2;
if (c == 'j')
{
/*this part isn't finished yet*/
printf("Geef 1 voor 1 de weerstanden van groep %d, druk op een letter als alle waarden ingevuld zijn\n",groep);
while (scanf("%f", &Rinvoer) == 1)
R2 = Rinvoer + R2;
}
if (c == 'n'){
printf("De totale weerstand van dit laddernetwerk is %.2f Ohm",R1);
}
}
After the while loop it prints the 2 lines, but then the program stops, it seems to disable the scanf. When I put the scanf between the both printf they both are printed, but the scanf still doesn't work. I've tried using a do loop, but without success. adding or removing curly braces also doesn't have any effect. Someone can tell me what I'm doing wrong?
scanf("%s", &c);
%s is for strings, you're passing a char by pointer. undefined behaviour asscanf
overwrites pastc
memory – Jean-François Fabredouble
type (which would require%lf
inscanf
) unless there is a good reason to usefloat
. – Weather Vane