Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
28 / 28 / 6
Регистрация: 25.12.2008
Сообщений: 186
1

Что выводит данные програмы

23.03.2009, 21:11. Показов 825. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
char *ch[]={"12345","ABCD","67800","3411"};
char **chp[]={ch+2, ch, ch+1, ch+3};
char ***chpp=chp+1;
main()
{
PRINTS(**chpp++);
PRINTS(*--*++chpp+3);
}

Етот и:
C++
1
2
3
4
5
6
7
8
main()
{
{struct A {int i; char *s; struct A *p;};
static struct A b[]={ {1, "ABCD",b+3}, {2, "ACB" b+2}, {3, "PQR", b+1}, {4, "PRQ", b}};
struct A *ptr=b;
PRINTS(++(ptr->s));
PRINTS(b[++(ptr->p->i)+1].s);
}
Не судите строго задал препод а я ету хрень в первый раз вижу
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2009, 21:11
Ответы с готовыми решениями:

Сохранить данные между вызовами програмы
Такой вопрос - как сохранить в программе данные? Ну например: телефонный справочник - пользователь...

Программа не выводит данные при том, что успешно компилируется
вот собственно код самой программы: program fdggf; var a,b,e,c,fa,fb,fc,: real; begin write...

Как в php сделать поиск? Вводить данные, нажимать на кнопку, скрипт по базе ищет данные и выводит
Можно ли в php сделать поиск? Вводить данные например, нажимать на кнопку и он по базе ищет эти...

в одной форме ввожу данные об ученике выводится результат со второй формы но не выводит данные с перовой форм
Тут такая проблема в одной форме ввожу данные об ученике на второй форме есть программа для...

7
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
23.03.2009, 21:34 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
#define PRINTS(s)  printf("%s\n", (s));
 
main()
{
    char *ch[] = { "12345", "ABCD", "67800", "3411" };
    char **chp[] = { ch+2, ch, ch+1, ch+3 };
    char ***chpp = chp+1;
 
    PRINTS(**chpp++);
    PRINTS(*--*++chpp+3);
    
    return 0;
}
вывод
Код
[guest@station src]$ ./test
12345
00
[guest@station src]$
он будет проверять насколько ты сам думал, так что, прежде чем сдавать, разберись как получились результаты
одноместные операции ++ -- * выполняются справа налево, двуместные операции + выполняются слева направо
0
28 / 28 / 6
Регистрация: 25.12.2008
Сообщений: 186
23.03.2009, 21:48  [ТС] 3
А 2й код?
и что делает ->
и что дает вот тут *--*++chpp+3 ответ 00?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
23.03.2009, 22:00 4
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 <stdio.h>
 
#define PRINTS(s)  printf("%s\n", (s));
 
main()
{
    struct A {
        int i;
        char *s;
        struct A *p;
    };
    static struct A b[] = {
        { 1, "ABCD", b+3 },
        { 2, "ACB",  b+2 },
        { 3, "PQR",  b+1 },
        { 4, "PRQ",  b   }
    };
    
    struct A *ptr = b;
    
    PRINTS(++(ptr->s));
    PRINTS(b[++(ptr->p->i)+1].s);
    
    return 0;
}
вывод
Код
[guest@station src]$ ./test
BCD
Ошибка сегментирования
[guest@station src]$
пытается получить доступ к 7ой структуре, а там всего 4

если дополнить, то всё ок

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
#include <stdio.h>
 
#define PRINTS(s)  printf("%s\n", (s));
 
main()
{
    struct A {
        int i;
        char *s;
        struct A *p;
    };
    static struct A b[] = {
        { 1, "ABCD", b+3 },
        { 2, "ACB",  b+2 },
        { 3, "PQR",  b+1 },
        { 4, "PRQ",  b   }
        
        , { 0, NULL,  NULL    }
        , { 0, NULL,  NULL    }
        , { 7, "hello",  NULL }
    };
    
    struct A *ptr = b;
    
    PRINTS(++(ptr->s));
    PRINTS(b[++(ptr->p->i)+1].s);
    
    return 0;
}
вывод
Код
[guest@station src]$ ./test
BCD
hello
[guest@station src]$
макрос #define перед сдачей ему не показывай, а то заставит объяснять как ты его составил

Добавлено через 3 минуты 6 секунд
*--*++chpp+3 ответ 00
это из третьего слова, он к нему проходит *--*++chpp, а потом смещается на три символа +3

Добавлено через 3 минуты 20 секунд
p->s делает то же самое, что и (*p).s , но в длинных выражениях компилятор не пропустит множественные разыменования в скобках, поэтому p->next->next->next работает а (*p).(*next).(*next).(*next) нет
0
28 / 28 / 6
Регистрация: 25.12.2008
Сообщений: 186
23.03.2009, 22:31  [ТС] 5
Нет
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
23.03.2009, 23:05 6
Код
main()
{
{struct A
вторая фигурная лишняя я её стёр
0
28 / 28 / 6
Регистрация: 25.12.2008
Сообщений: 186
23.03.2009, 23:56  [ТС] 7
Можеш вот ето по действиям обьяснить: *--*++chpp
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
24.03.2009, 01:39 8
справа налево

Код
++chpp :

(chpp = chpp + 1) == (chp+1 + 1) == (chp + 2) 

chp + 2 == &chp[0] + 2

chp[] = { ch+2, ch, ch+1, ch+3 }
            |          |
          chp[0]     chp[2] 
            |           |
        &chp[0] + 2 == &chp[2]  

++chpp == &chp[2]
Код
*++chpp :

*++chpp == *(&chp[2]) == chp[2]

chp[] = { ch+2, ch, ch+1, ch+3 }
                      |
                     chp[2]

chp[2] == ch+1 == &ch[0] + 1 (ch - это имя массива, а оно как известно превращается в указатель на самый первый элемент, потому ch == &ch[0] также, как chp == &chp[0])

&ch[0] + 1 == &ch[1] также, как &chp[0] + 2 == &chp[2]
Код
--*++chpp :

--*++chpp == --(&ch[0] + 1) == --(&ch[1])

так как мы работаем с chp[2] на данном этапе, оно является именующим выражением и поэтому его можно менять (операция -- содержит присваивание, поэтому требуется, чтобы выражение, к которому она применяется было именующим, то есть с которым возможно провести операцию присваивания)

--(&ch[1]) == --(chp[2]) == chp[2] = chp[2] - 1 == chp[2] = &ch[1] - 1 == chp[2] = &ch[0]
Код
*--*++chpp :

*(&ch[0]) == ch[0]

ch[] = { "12345", "ABCD", "67800", "3411" }
           |
          ch[0]

ch[0] хранит в себе адрес строки "12345", которая записана в неменяемом, но читаемом пространстве и которая называется строковым литералом, или строковой константой, при этом строковая константа относится к классу лексем компилятора, но не относится к константам языка

при выводе берётся адрес первого символа и выводится всё до символа '\0' , которым заканчивается любая строка в языке C
нули второй строки выводятся из-за того, что она доходит до адреса первого символа той строки и потом переходит на три адреса вправо и чтение начинает оттуда и тоже до нуль-символа выводит, у которого тоже адрес есть (если что )
0
24.03.2009, 01:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2009, 01:39
Помогаю со студенческими работами здесь

написала что могла, но код не правильный.нужно что бы в квадрат выводился ответ, а выводит какую то ерунду
пожалуйста можете помочь с задачей? stdin=0 stdout=1 stderr=2 data segment text1 db...

Не выводит данные
Здравствуйте, делаю скрипт, суть такова, есть таблица news, нужно выводить только те записи,...

Не выводит данные
не пойму что с кодом не так.есть сценарий в котором выводятся данные с БД с помощью...

Не выводит данные
$link = mysqli_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;1234&quot;, &quot;root&quot;); if (mysqli_connect_errno($link))...

не выводит данные
добрый день! есть 2 запроса: первый находит номера в определенной таблице, а второй из...

Не выводит данные
В чем ошибка кода? begin form7.show; form7.ADOQuery1.Close; form7.ADOQuery1.SQL.Clear;...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru