есть некоторые ошибки
сначала с этим l oop:
for (int i = 1; i <= n; i++)
{
an[i] = i;
}
каждый элемент ввода будет существовать, и поэтому у вас не может быть больше элементов. Вам нужно сравнить t
с e[i].atno
.
вы должны использовать &
в scanf
для float. scanf("%lf", e[t - 1].bp);
это должно быть scanf("%lf", &e[t - 1].bp);
(это не похоже на строки)
наконец, так как вы назначаете double vlaue
в main для вашего bp
, я конвертирую float в double.
struct element {
int atno;
char name[20];
char symbol[20];
char mn[20];
double bp;//warning since you have assigned double type to it in main
char state[20];
};
int n = 118, i = 0;
void add(struct element e[], int n);
int main() {
struct element e[n];
e[0].atno = 1;
strcpy(e[0].name, "Hydrogen");
strcpy(e[0].symbol, "H");
strcpy(e[0].mn, "Metal");
e[0].bp = -252.879;
strcpy(e[0].state, "Gas");
e[1].atno = 2;
strcpy(e[1].name, "Helium");
strcpy(e[1].symbol, "He");
strcpy(e[1].mn, "Non-Metal");
e[1].bp = -268.28;
strcpy(e[1].state, "Gas");
add(e, n);
}
void add(struct element e[], int n)
{
int t;
int an[150];
/* for (int i = 1; i <= n; i++)
{
an[i] = i;
}*///every element will exits with your method
printf("Enter the atomic number of the element you want to add: ");
scanf("%d", &t);
int check = 0;
for (int i = 0; i < n; i++)
{
if (e[i].atno == t)
{
printf("The element already exists");
check = 1;
break;
}
}
if (check == 0)
{
e[t - 1].atno = t;
printf("Enter the Name:");
scanf("%s", (e[t - 1].name));
printf("Enter the Symbol:");
scanf("%s", (e[t - 1].symbol));
printf("Enter the Boiling Point:");
scanf("%lf", &e[t - 1].bp);
printf("Enter whether it is metal/non metal:");
scanf("%s", (e[t - 1].mn));
printf("Enter the state at room temperature:");
scanf("%s", (e[t - 1].state));
//call menu function
}
}