Форум программистов, компьютерный форум CyberForum.ru

Написать программу удаления книги из массива структур с введенным именем автора - C++

Восстановить пароль Регистрация
 
J_I
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 9
17.04.2013, 15:26     Написать программу удаления книги из массива структур с введенным именем автора #1
Написать программу удаления книги из массива структур с введенным именем автора

я ввожу массив структур, потом ищу совпадения с именем автора и эти элементы заменяю на какой-то символ, т.к. именно функцию УДАЛЕНИЯ мы ещё типа не проходили
а он выводит всю структуру без изменений. что подправить? почему он не хочет заменять?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream.h>
#include <conio.h>
main ()
{ struct library
{ char avtor[30];
char book[30];}
p[5];
int i;
char o;
char A[30];
for (i=0; i<5; i++)
{ cout<<" Vvedi avtora ";
cin>>p[i].avtor;
cout<<" Vvedi knigu ";
cin>>p[i].book;}
cout<<" Vvedi imya avtora ";
cin>>A;
for (i=0; i<5; i++)
{if (p[i].avtor==A)
p[i].avtor==o;
p[i].book==o;}
for (i=0; i<5; i++)
cout<<" \n"<<p[i].avtor<<" \t"<<p[i].book;
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 15:26     Написать программу удаления книги из массива структур с введенным именем автора
Посмотрите здесь:

Как создать файл с именем введенным с клавиатуры. нужна помощь. C++
Написать программу удаления книги из массива структур с введенным именем автора C++
Написать программу удаления заданного числового значения из массива объединений C++
Написать программу добавления новой книги в начало массива структур. C++
C++ Программа удаления учреждений с указанным весом из массива структур с объединением
C++ Вывести на экраны все книги указанного автора
С какого автора и какой книги начать изучение программирования C++
Как назвать переменную именем, введенным пользователем? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
17.04.2013, 19:10     Написать программу удаления книги из массива структур с введенным именем автора #2
if (p[i].avtor==A)
Это сравнение адресов первых элементов массивов, а не строк. Сравнивать C-строки можно только посимвольно(например, c помощью функции strcmp).
p[i].avtor==o;
p[i].book==o;
Здесь вы, как я понимаю, подразумевали присваивание(символ =), а не сравнение... Во-первых переменная o у вас ничем не инициализирована, а во-вторых, присвоить что-либо массиву используя его имя нельзя. Если вы хотите "обнулить" строки, то можно просто записать первым элементом символ '\0'(естественно, сами элементы массива p от этого никуда не "удаляться").
Цитата Сообщение от J_I Посмотреть сообщение
именно функцию УДАЛЕНИЯ мы ещё типа не проходили
Удалить из массива ничего нельзя. Весь процесс "удаления" сводится к сдвигу элементов массива влево и затеранию тем самым "удаляемых" элементов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <string.h>
#include <iostream.h>
#include <conio.h>
 
int main ()
{
    struct library
    {
        char author[30];
        char book[30];
    } p[5];
 
    int i, j;
    char author[30];
    int n = sizeof(p) / sizeof(library);
 
    for(i = 0; i < n; ++i)
    {
        cout << " Vvedi avtora ";
        cin >> p[i].author;
        cout << " Vvedi knigu ";
        cin >> p[i].book;
    }
 
    cout<<" Vvedi imya avtora ";
    cin >> author;
 
    //.....................
    for(i = 0, j = 0; i < n; ++i)
    {
        if(strcmp(p[i].author, author) != 0)
        {
            p[j] = p[i];
            ++j;
        }
    }
    n = j;
    //.....................
 
    for(i = 0; i < n; ++i)
        cout << p[i].author << " \t" << p[i].book << "\n";
    getch();
 
    return 0;
}
Yandex
Объявления
17.04.2013, 19:10     Написать программу удаления книги из массива структур с введенным именем автора
Ответ Создать тему
Опции темы

Текущее время: 05:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru