Реализовать проверку корректности введенных пользователем данных, то бишь чтобы например если пользователь вводит с клавиатуры вместо цифры букву, то выскакивала ошибка. Правильно ли получилось? И
После запуска прогрпммы добавляет еще какую то строку, как убрать ее?
Код:
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
struct AGR
{
char name[13];
char tip;
float sq;
unsigned int ur;
} A[12];
int main()
{
struct AGR x;
int n,i,j;
//clrscr();
for(n=0;n<3;n++)
{
printf("%d.Vvedite naimenovanie tovara, tip tovara, cena, minimalnoe koli4estvo v partii ",n+1);
scanf("%s", A[n].name);
if (!strcmp(A[n].name,"exit")) break; //сравнивает 2 строки
scanf("%s %f %u",&A[n].tip, &A[n].sq, &A[n].ur);
if (scanf("%f",&A[n].ur, &A[n].sq)!=1)
{
printf("Oshibka vvoda");
getch();
return 0;
}
}
printf("|-------------------------------------------------------------------------------|\n");
printf("| Price List |\n");
printf("|-------------------------------------------------------------------------------|\n");
printf("|naimenovanie tovara|tip tovara| cena za 1 sht (grn) |minimalnoe kol-vo v partii|\n");
printf("|------------------ |----------|---------------------|--------------------------|\n");
for (i=0;i<n;i++)
printf("|%-12s |%-3c | %9.2f | %-17u |\n",A[i].name,A[i].tip,A[i].sq,A[i].ur);
printf("|-----------------------------------------------------------------------------|\n");
for (i=0;i<n-1;i++)
{
for (j=i+1;j<n;j++)
{
if((strcmp(A[i].name,A[j].name))>0) //сравнивает 2 строки
{
strcpy(x.name,A[i].name); //копирует одну строку в другую
strcpy(A[i].name,A[j].name);
strcpy(A[j].name,x.name);
x.tip=A[i].tip;
A[i].tip=A[j].tip;
A[j].tip=x.tip;
x.sq=A[i].sq;
A[i].sq=A[j].sq;
A[j].sq=x.sq;
x.ur=A[i].ur;
A[i].ur=A[j].ur;
A[j].ur=x.ur;
}
}
}
printf("|-------------------------------------------------------------------------------|\n");
printf("| Price List |\n");
printf("|-------------------------------------------------------------------------------|\n");
printf("|naimenovanie tovara|tip tovara| cena za 1 sht (grn) |minimalnoe kol-vo v partii|\n");
printf("|------------------ |----------|---------------------|--------------------------|\n");
for (i=0;i<n;i++)
printf("|%-12s |%-3c | %9.2f | %-17u |\n",A[i].name,A[i].tip,A[i].sq,A[i].ur);
printf("|-------------------------------------------------------------------------------|\n");
getch();
return 0;
}