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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция вывода листьев бинарного дерева http://www.cyberforum.ru/cpp-beginners/thread840553.html
Написал функцию вывода всего что есть в дереве. помогите переделать ее так чтобы она выводила только листья(без детей которые) void Node::Scan(void (*f)(void* n)) { f(this->Data); ...
C++ Написать функцию раньше мейна, через void. потом в мейне её вызывать Помогите. Нужно написать функцию раньше мейна, через void. потом в мейне её вызывать #include <iostream.h> #include <cstdlib.h> #include <ctime.h> using namespace std; int main() { ... http://www.cyberforum.ru/cpp-beginners/thread840536.html
C++ Перевод из Паскаля в Си++
uses crt; var kr:array of real; br:array of string; n,i:integer; begin clrscr; write('Количество бригад n='); readln(n); writeln('Введите данные:'); for i:=1 to n do
Как называется и что означает такая форма объявления объекта (конструктор) C++
Конструктор явно вызывать нельзя, но эта форма записи у меня часто ассоциируется с "явным" вызовом конструктора. Как правильно это называть и объяснить человеку что происходит? MyClass obb; obb...
C++ Определите поезда, которые отправляются с 21 до 23 часов http://www.cyberforum.ru/cpp-beginners/thread840508.html
Определите поезда, которые отправляются с 21 до 23 ч. Информация о поездах (город назначения и время отправления) хранится в соответствующих массивах.
C++ Задача в С++ Составьте программу для решения следующих задач. Программы снабдите подробными комментариями. Подготовьте блок-схему алгоритма. 1. Дана последовательность натуральных чисел а1, а2,..., аn.... подробнее

Показать сообщение отдельно
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
17.04.2013, 19:10
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;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru