#include <stdio.h>
#include <conio.h>
#define Y sizeof(struct sheet)
#include <string.h>
void main(void) {
void del(void);
void show(void);
void add(void);
void edit(void);
struct sheet {
char fio[15];
int dr;
float score;
int qf;
} mm [100]; ;
struct sheet x;
int n;
int i, j;
int m,l;
float sqx;
while(1) {
printf("1 - add element \n");
printf("2 - delete element \n");
printf("3 - edit element \n");
printf("4 - show all \n");
scanf("%d",&n);
switch(n) {
case 1:
add();
break;
case 2:
del();
break;
case 3:
edit();
break;
case 4:
show();
break;
default:
printf("Error input\n");
break;
}
getch();
}
}
void add(void)
{
{ printf(" Number strings:");
scanf("%d",l);
printf(" Enter:FIO, Year of Birtday, result,Qualification >");
for (n=0; n<l; n++)
scanf("%s",&mm[n].fio);
scanf("%d",&mm[n].dr);
scanf("%f",&sqx);mm[n].score=sqx;
scanf("%d",&mm[n].qf);
}
for (i=0; i<n-1; i++) {
m=i;
for (j=i+1; j<n; j++)
if (strcmp (mm[m].fio,mm[j].fio)<0) m=j;
if (m>i)
{
strcpy(x.fio,mm.fio); x.dr=mm.dr;
x.score=mm.score; x.qf=mm.qf;
strcpy(mm.fio,mm[m].fio); mm.dr=mm[m].dr;
mm.score=mm[m].score; mm.qf=mm[m].qf;
strcpy(mm[m].fio,x.fio); mm[m].dr=x.dr;
mm[m].score=x.score; mm[m].qf=x.qf;
}
}
printf("---------------------------------------------\n");
printf("|Sheets about assignment of qualification |\n");
printf("|--------------------------------------------|\n");
printf("| FIO | Year |Score |Qualification|\n");
printf("| | | | |\n");
printf("|-----------|-------|----------|-------------|\n");
for (i=0; i<n; i++)
printf(" %9s %d %2.1f %d \n",
mm.fio,mm.dr,mm.score,mm.qf);
printf("---------------------------------------------\n");
printf("The note: the final estimation by results of \n");
printf("examinations on theor. and practical is shown\n");
printf("---------------------------------------------\n");
}
void del(void){
int h;
printf("Enter deleted string");
scanf("%d",h);
for (; h<n; h++)
memcpy(mm+h-1,mm+h,Y);
}
void edit(void);
{ int a,stop;
printf("Number of string or break for exit\n");
while(1)
{ scanf("%d",a);
if(a==stop){break;}
printf("New string");
scanf("%s",&mm[n].fio);
scanf("%d",&mm[n].dr);
scanf("%f",&sqx);mm[n].score=sqx;
scanf("%d",&mm[n].qf);
}
}
void show(void);{
printf("---------------------------------------------\n");
printf("|Sheets about assignment of qualification |\n");
printf("|--------------------------------------------|\n");
printf("| FIO | Year |Score |Qualification|\n");
printf("| | | | |\n");
printf("|-----------|-------|----------|-------------|\n");
for (i=0; i<n; i++)
printf(" %9s %d %2.1f %d \n",
mm.fio,mm.dr,mm.score,mm.qf);
}
[C++] функции удаления, добавления, редактирования в таблице
Задание было:сделать программу, с функциями, добавления, удаления, корретировки строки, вывод на экран всей таблицы.
Код:
Цитата:
как сделать глобальные переменные, чтоб один раз объявил и они во всех функция могли определяться
Вынеси описание структуры на строку после
Код:
#include <string.h>
Почему не работает программа на С
Код:
#include <stdio.h>
#include <conio.h>
#define Y sizeof(struct sheet)
#include <string.h>
#include <stdlib.h>
struct sheet {
char fio[15];
int dr;
float score;
int qf;
} mm [100]; ;
struct sheet x;
int n;
int i, j;
int m;
float sqx;
char numb[15];
void del(int);
void show(void);
void add(void);
void edit(int);
void add(void)
{
for (n=0; n<3; n++) {
printf(" Enter:FIO, Year of Birtday, result,Qualification >",n+1);
scanf("%s",&mm[n].fio);
scanf("%d",&mm[n].dr);
scanf("%f",&sqx);mm[n].score=sqx;
scanf("%d",&mm[n].qf);
}
}
int get_number() {
int b;
printf("Number>");
scanf("%d",&b);
return b;
}
void del(int m) {
for (; m<n; m++)
memcpy(mm+m-1,mm+m,Y);
}
void edit(int [COLOR=black]m[/COLOR]) {
printf(" Enter:FIO, Year of Birtday, result,Qualification >");
[COLOR=black]scanf("%s",&mm[n].fio);[/COLOR]
scanf("%d",&mm[[COLOR=black]n[/COLOR]].dr);
scanf("%f",&sqx);mm[[COLOR=black]n[/COLOR]].score=sqx;
scanf("%d",&mm[[COLOR=black]n[/COLOR]].qf);
[COLOR=black]strcpy(mm[n].fio, mm[m].fio); mm[n].dr=mm[m].dr;[/COLOR]
[COLOR=black] mm[n].score=mm[m].score; mm[n].qf=mm[m].qf; [/COLOR]
}
void show(void){
for (i=0; i<n-1; i++) {
m=i;
for (j=i+1; j<n; j++)
if (strcmp (mm[m].fio,mm[j].fio)<0) m=j;
if (m>i)
{
strcpy(x.fio,mm.fio); x.dr=mm.dr;
x.score=mm.score; x.qf=mm.qf;
strcpy(mm.fio,mm[m].fio); mm.dr=mm[m].dr;
mm.score=mm[m].score; mm.qf=mm[m].qf;
strcpy(mm[m].fio,x.fio); mm[m].dr=x.dr;
mm[m].score=x.score; mm[m].qf=x.qf;
}
}
printf("---------------------------------------------\n");
printf("|Sheets about assignment of qualification |\n");
printf("|--------------------------------------------|\n");
printf("| FIO | Year |Score |Qualification|\n");
printf("| | | | |\n");
printf("|-----------|-------|----------|-------------|\n");
for (i=0; i<n; i++)
printf(" %9s %d %2.1f %d \n",
mm.fio,mm.dr,mm.score,mm.qf);
}
void main(void) {
int num;
while(1) {
printf("MENU: \n");
printf("1 - add element \n");
printf("2 - delete element \n");
printf("3 - edit element \n");
printf("4 - show all \n");
printf("5 - exit \n");
scanf("%d",&numb);
switch(numb[0]) {
case 1:
add(); n++;
break;
case 2:
num=get_number();
del(num); n--;
break;
case 3:
num=get_number();
edit(num);
break;
case 4:
show();
break;
case 5:
exit(1);
default:
printf("Error input\n");
break;
}
getch();
}
}
#include <conio.h>
#define Y sizeof(struct sheet)
#include <string.h>
#include <stdlib.h>
struct sheet {
char fio[15];
int dr;
float score;
int qf;
} mm [100]; ;
struct sheet x;
int n;
int i, j;
int m;
float sqx;
char numb[15];
void del(int);
void show(void);
void add(void);
void edit(int);
void add(void)
{
for (n=0; n<3; n++) {
printf(" Enter:FIO, Year of Birtday, result,Qualification >",n+1);
scanf("%s",&mm[n].fio);
scanf("%d",&mm[n].dr);
scanf("%f",&sqx);mm[n].score=sqx;
scanf("%d",&mm[n].qf);
}
}
int get_number() {
int b;
printf("Number>");
scanf("%d",&b);
return b;
}
void del(int m) {
for (; m<n; m++)
memcpy(mm+m-1,mm+m,Y);
}
void edit(int [COLOR=black]m[/COLOR]) {
printf(" Enter:FIO, Year of Birtday, result,Qualification >");
[COLOR=black]scanf("%s",&mm[n].fio);[/COLOR]
scanf("%d",&mm[[COLOR=black]n[/COLOR]].dr);
scanf("%f",&sqx);mm[[COLOR=black]n[/COLOR]].score=sqx;
scanf("%d",&mm[[COLOR=black]n[/COLOR]].qf);
[COLOR=black]strcpy(mm[n].fio, mm[m].fio); mm[n].dr=mm[m].dr;[/COLOR]
[COLOR=black] mm[n].score=mm[m].score; mm[n].qf=mm[m].qf; [/COLOR]
}
void show(void){
for (i=0; i<n-1; i++) {
m=i;
for (j=i+1; j<n; j++)
if (strcmp (mm[m].fio,mm[j].fio)<0) m=j;
if (m>i)
{
strcpy(x.fio,mm.fio); x.dr=mm.dr;
x.score=mm.score; x.qf=mm.qf;
strcpy(mm.fio,mm[m].fio); mm.dr=mm[m].dr;
mm.score=mm[m].score; mm.qf=mm[m].qf;
strcpy(mm[m].fio,x.fio); mm[m].dr=x.dr;
mm[m].score=x.score; mm[m].qf=x.qf;
}
}
printf("---------------------------------------------\n");
printf("|Sheets about assignment of qualification |\n");
printf("|--------------------------------------------|\n");
printf("| FIO | Year |Score |Qualification|\n");
printf("| | | | |\n");
printf("|-----------|-------|----------|-------------|\n");
for (i=0; i<n; i++)
printf(" %9s %d %2.1f %d \n",
mm.fio,mm.dr,mm.score,mm.qf);
}
void main(void) {
int num;
while(1) {
printf("MENU: \n");
printf("1 - add element \n");
printf("2 - delete element \n");
printf("3 - edit element \n");
printf("4 - show all \n");
printf("5 - exit \n");
scanf("%d",&numb);
switch(numb[0]) {
case 1:
add(); n++;
break;
case 2:
num=get_number();
del(num); n--;
break;
case 3:
num=get_number();
edit(num);
break;
case 4:
show();
break;
case 5:
exit(1);
default:
printf("Error input\n");
break;
}
getch();
}
}
Код:
void edit(int [COLOR=red]m[/COLOR]) {
printf(" Enter:FIO, Year of Birtday, result,Qualification >");
scanf("%s",mm[[COLOR=red]m[/COLOR]].fio); [COLOR=teal]//scanf("%s",[COLOR=red]&[/COLOR]mm[[COLOR=teal]m[/COLOR]].fio); <= [/COLOR][COLOR=#000000]грубая ошибка - знак & перед переменной типа char*[/COLOR]
scanf("%d",&mm[[COLOR=red]m[/COLOR]].dr);
scanf("%f",&mm[[COLOR=red]m[/COLOR]].score);
scanf("%d",&mm[[COLOR=red]m[/COLOR]].qf);
}
printf(" Enter:FIO, Year of Birtday, result,Qualification >");
scanf("%s",mm[[COLOR=red]m[/COLOR]].fio); [COLOR=teal]//scanf("%s",[COLOR=red]&[/COLOR]mm[[COLOR=teal]m[/COLOR]].fio); <= [/COLOR][COLOR=#000000]грубая ошибка - знак & перед переменной типа char*[/COLOR]
scanf("%d",&mm[[COLOR=red]m[/COLOR]].dr);
scanf("%f",&mm[[COLOR=red]m[/COLOR]].score);
scanf("%d",&mm[[COLOR=red]m[/COLOR]].qf);
}
а использование memcpy это твоя инициатива, или требование учителя?
не легче ли менять значение указателей на структуры?