Click here to Skip to main content
15,890,897 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
The only thing that can cause problem is probably the string.
the code is malfunctioning when we enter the first acid_choice loop
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
	int choice,ans_acid,ans_basic,counter=0;
	char acid[100];
	char basic[100];
	printf("\nThis helps in finding out which salt is present\nThe present process identifies acid radicals cl, br and nitrate\n bacic radicals are lead and silver\n salts which can be detected are:- 1.lead chloride\n2.silver chloride\n3lead bromide \n4.silver bromide\n5.silver nitrate\n6. lead nitrate");
	printf("\npress 1 for acid radical and 2 for basic radical check\n");
	scanf("%d",&choice);
	that:
		if(choice==1)
		{
			printf("\nAdd concentrated sulphuric acid to the solution");
			counter++;
			printf("\nexpose it to glass rod diped in ammonium hydroxide. if colorless gas with pungent gas press 1 \nbrown gs and solution is not blue press 2\nlight brown gas and brown gas with pieces of copper turning and solution turns blue in test tube press 3");
			scanf("%d",ans_acid);
			switch(ans_acid)
			{
				case 1:
					strcpy(acid, "chroride");
					//confirmatiory test space
					break;
				case 2:
					strcpy(acid, "bromide");
					//confirmatiory test space
					break;
				case 3:
					strcpy(acid, "nitrate");
					//confirmatiory test space
					break;
			}	
		}
		else if(choice==2)
		{
			printf("\n add dilute hydro chloric acid to the salt");
			counter++;
			printf("\nif ppt disolves in water press 1. \n if ppt is unsolube in water press 2.");
			scanf("%d",&ans_basic);
			switch(ans_basic)
			{
				case 1:
					strcpy(basic, "lead");
					//confirmatiory test space
					break;
				case 2:
					strcpy(basic, "silver");
					//confirmatory test space
				break;
			}
		}
	if(counter==1)
	{
		if(choice==1)
		{
			choice=2;
			goto that;
		}
		if(choice==2)
		{
			choice=1;
			goto that;
		}
	}
	printf("salt is %s %s", basic, acid);
	return 0;
}


What I have tried:

tried changing structure of code.
swithced from switch to if else,
used malloc.
Posted
Updated 9-May-17 12:51pm
Comments
[no name] 9-May-17 16:24pm    
Try debugging your code.
jeron1 9-May-17 16:46pm    
What does "Windows display the file has stopped functioning" mean?
Mohibur Rashid 9-May-17 18:45pm    
scanf("%d",ans_acid);
Should be
scanf("%d",&ans_acid);

1 solution

When you don't understand what your code is doing or why it does what it does, the answer is debugger.
Use the debugger to see what your code is doing. Just set a breakpoint and see your code performing, the debugger allow you to execute lines 1 by 1 and to inspect variables as it execute, it is an incredible learning tool.

Debugger - Wikipedia, the free encyclopedia[^]
Mastering Debugging in Visual Studio 2010 - A Beginner's Guide[^]
Basic Debugging with Visual Studio 2010 - YouTube[^]
The debugger is here to show you what your code is doing and your task is to compare with what it should do.
There is no magic in the debugger, it don't find bugs, it just help you to. When the code don't do what is expected, you are close to a bug.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900