the issue I have is if there are not enough arguments supplied from the command line I want the program to request all the values instead. For some reason, it works when I supply 2 out of the 3 arguments but I want it to work if 1 or none of the arguments are supplied.
My Code
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float areaOfcircle(float radius_circle)
{
float area_circle;
area_circle = M_PI * radius_circle * radius_circle;
return area_circle;
}
void resitance_current(float length, float area_circle, float voltage, float* resistance, float* current)
{
float resistivity;
resistivity = 1.782*pow(10, -8);
*resistance = ((resistivity*length) / area_circle);
*current = (voltage / *resistance);
}
void radius_check(float radius)
{
if (radius <= 0)
{
printf("Radius cant be less than or equal to 0");
exit(1);
}
}
void voltage_check(float voltage)
{
if (voltage <= 0)
{
printf("Voltage cant be less than or equal to 0");
exit(1);
}
}
void length_check(float length)
{
if (length <= 0)
{
printf("Length cant be less than or equal to 0");
exit(1);
}
}
void validation(float radius, float voltage, float length)
{
radius_check(radius);
voltage_check(voltage);
length_check(length);
}
int main(int argc, char *argv[])
{
float radius, voltage, length, current, resistance;
float length_u, length_l;
//dumpargs(argc, argv);
radius = atof(argv[1]);
voltage = atof(argv[2]);
length = atof(argv[3]);
if (argc != 4)
{
printf("Not enough arguments supplied\n");
printf("Enter the radius of wire : ");
scanf("%f", &radius);
radius_check(radius);
printf("Enter the Voltage of circuit : ");
scanf("%f", &voltage);
voltage_check(voltage);
printf("Enter the Length of Wire : ");
scanf("%f", &length);
length_check(length);
}
validation(radius, voltage, length);
resitance_current(length, areaOfcircle(radius), voltage, &resistance, ¤t);
printf("Resistance = %f , Current = %f\n", resistance, current);
printf("\nEnter the Upper Length of Wire : ");
scanf("%f", &length_u);
printf("\nEnter the Lower Length of Wire : ");
scanf("%f", &length_l);
if ((length_l < 0) || (length_l >= length_u))
{
printf("\nImpossible for Lower Length < 0 or to be larger then Length Upper");
exit(1);
}
else
{
for(length_l = length_l; length_l<=length_u; length_l++)
{
resitance_current(length, areaOfcircle(radius), voltage, &resistance, ¤t);
printf("\nLength = %0.3f Resistance = %0.3f , Current = %0.3f", length, resistance, current);
length = (length_l + 1);
}
}
return 0;
}
As you can see from the code "if (argc != 4)" then the values are requested again and over written if they were supplied via command line. im trying to find a sulution to this so if the program on its own was run from CMD the the values would be requested but if all values were supplied the code would work its way through. Other than the argc iss the code opperates as reqired.
Thanks for any help in advance