Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2010, 21:02   #1
euhenia
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 18
По умолчанию структура

не выходит с функцией удаления подскажите, где у меня ошибка!
Цитата:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct Adres
{
char city[15];
char street[15];
int nomer_doma,
kvartira;
};

const N=10;
int vvod_dannih(Adres adres[], int n)
{
if(n<N)
{
printf("novaia zapisi:\n");
printf("city:");
scanf("%s",&adres[n].city);
printf("street:");
scanf("%s",&adres[n].street);
printf("nomer_doma:");
scanf("%d",&adres[n].nomer_doma);
printf("kvartira:");
scanf("%d",&adres[n].kvartira);
n++;
}
else
{
printf("\nmassiv perepolnen!");
getch();
}
return n;
}
void vivod_dannih(Adres adres[], int n)
{
int i;
if (n>0)
{
printf("\n_________________________ ___________________________________ ____________");

printf("\n|| city || street || nomer_doma || kvartira || \n");
for(i=0; i<n; i++)
printf(" %-20s%-20s%-20d%-20d\n",adres[i].city,adres[i].street,adres[i].nomer_doma,adres[i].kvartira);
printf("\n_________________________ ___________________________________ ____________");
printf("\npress any key to continue");
}
else
printf("\nmassiv pust!");
getch();
}
void sort(Adres adres[], int n)
{
int i,j;
char pole;
Adres temp;
if (n>1)
{
clrscr();
printf("Vyberite kriterii sortirovki:\n1.city\n2.nomer_doma\n 3.street\n4.Cancel\n");
pole=getch();
switch (pole)
{
case '1':
for (i=0; i<n; i++)
{
for (j=n-1; j>i; j--)
{
if (strcmp(adres[j-1].city,adres[j].city)>0)
{
temp=adres[j-1];
adres[j-1]=adres[j];
adres[j]=temp;
}
}
}
printf("\nReady!");
getchar();
break;
case '2':
for (i=0; i<n; i++)
{
for (j=n-1; j>i; j--)
{
if (adres[j-1].nomer_doma>adres[j].nomer_doma)
{
temp=adres[j-1];
adres[j-1]=adres[j];
adres[j]=temp;
}
}
}
printf("\nReady!");
getchar();
break;
case '3':
for (i=0; i<n; i++)
{
for (j=n-1; j>i; j--)
{
if (strcmp(adres[j-1].street,adres[j].street)>0)
{
temp=adres[j-1];
adres[j-1]=adres[j];
adres[j]=temp;
}
}
}
printf("\nReady!");
getchar();
break;
case '4': break;
default: printf("Undefined comand!"); getch();
}
}
else
if (n==1)
{
printf("V massive tolko odna zapisi, sortirovat necego!");
getch();
}
else
{
printf("Massiv pust");
getch();
}
}

void udalenie(Adres adres[], int n)
{
int i;
char s[10];
printf("udalenie zapisi po city:\n");
printf("vvedite city:\n");
gets(s);
for(i=0;i<n-1;i++)
if (strcmp(adres[i-1].city,adres[i].city)==0)

adres[i]=adres[i+1];
n--;

}
void main()
{
char c;
Adres adres[N];
int n=0;
clrscr();
do
{
clrscr();
printf("\n1-dobavlenie zapisi\n2-pokazati vse zapisi\n3-sortirovka\n4-udalenie zapisi\n5-vihod\n");
c=getch();
switch(c)
{
case '1' : n=vvod_dannih(adres,n); break;
case '2' : vivod_dannih(adres,n); break;
case '3' : sort(adres,n); break;
case '4' : udalenie(adres,n); break;
case '5' : break;
default : printf("neopoznanaia komanda!");
getch();
}
}
while (c!='5');
}

Последний раз редактировалось euhenia; 16.04.2010 в 21:03. Причина: код
euhenia вне форума Ответить с цитированием
Старый 16.04.2010, 21:55   #2
euhenia
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 18
По умолчанию

какие будут варианты??
euhenia вне форума Ответить с цитированием
Старый 16.04.2010, 22:22   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Сравнение строк ни с тем с чем надо. Я бы сделал так.
Код:
int udalenie(Adres adres[], int n)
{
int i;
char s[10];
printf("udalenie zapisi po city:\n");
printf("vvedite city:\n");
gets(s);
for(i=0;i<n;i++)
if (strcmp(s,adres[i].city)==0)
{
  adres[i]=adres[n-1];
  n--;
  i--;
}
return n;
}
Только порядок нарушается, зато просто

В программе
Код:
case '4' : n=udalenie(adres,n); break;
P.S. И код оформляется тегом [CODE], а не цитаты.

Последний раз редактировалось eoln; 16.04.2010 в 22:24.
eoln вне форума Ответить с цитированием
Старый 16.04.2010, 22:25   #4
euhenia
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 18
По умолчанию

спасибо за помощь!!
euhenia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура roknroll1 Помощь студентам 2 25.01.2010 18:45
C++. Структура. bpystep Помощь студентам 12 24.11.2009 00:28
Структура Superlotles Помощь студентам 5 14.09.2009 23:29
структура Cpluser Общие вопросы C/C++ 4 16.06.2009 17:42
структура cr1mson Общие вопросы C/C++ 3 14.01.2009 18:08