Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C++] функции удаления, добавления, редактирования в таблице

12K
21 ноября 2006 года
mortar89
25 / / 17.11.2006
Люди добрые, подскажите что не так в моем коде программы, она отказывается работать.:confused: И еще вопрос как сделать глобальные переменные, чтоб один раз объявил и они во всех функция могли определяться?
Задание было:сделать программу, с функциями, добавления, удаления, корретировки строки, вывод на экран всей таблицы.

Код:
#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);

      }
547
22 ноября 2006 года
Hydra
488 / / 20.06.2006
Цитата:
как сделать глобальные переменные, чтоб один раз объявил и они во всех функция могли определяться


Вынеси описание структуры на строку после

 
Код:
#include <string.h>
12K
22 ноября 2006 года
Belomorkan
59 / / 18.10.2006
А не пробывал поискать в соседних темах в этой например:
Почему не работает программа на С
12K
22 ноября 2006 года
mortar89
25 / / 17.11.2006
Народ помогите пожалуйста разобраться с функцией edit она работает неправильно, все остальные функции в программе рабочие!:confused:


Код:
#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();
    }
 
  }
242
23 ноября 2006 года
Оlga
2.2K / / 04.02.2006
попробуй этот вариант:

 
Код:
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);
 
 }


а использование memcpy это твоя инициатива, или требование учителя?
не легче ли менять значение указателей на структуры?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог