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

char_t и как он связан с оперативкой? - C++

Восстановить пароль Регистрация
 
МИШЛЯНДИЯ
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 12
13.01.2011, 22:29     char_t и как он связан с оперативкой? #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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <stdio.h>
#include <stdlib.h>
 
struct stack
{
        char data;
        struct stack* next;
};
 
struct stack* push(struct stack*, char);
char pop(struct stack**);
void del(struct stack**);
 
char openingP(char);
int checkP(const char*);
 
int main(int argc, char** argv)
{
        if(argc == 1)
        {
                fprintf(stderr, "Использование: %s Выражение...\n", argv[0]);
                exit(1);
        }
 
for(size_t i = 1; i < argc; ++i)
                printf("Расстановка скобок в выражении \'%s\': %s\n",
                                argv[i], (checkP(argv[i]) ? "правильная" : "неправильная"));
 
exit(0);
}
 
struct stack* push(struct stack* stk, char c)
{
        struct stack* newNode;
        if(!(newNode = (struct stack*) malloc(sizeof(struct stack))))
        {
                fprintf(stderr, "malloc: не удалось выделить память под узел стека\n");
                exit(2);
        }
        newNode->data = c;
        newNode->next = stk;
        return newNode;
}
 
char pop(struct stack** stk)
{
        if(!stk)
        {
                fprintf(stderr, "pop: стек уже пуст\n");
                exit(3);
        }
        char retVal = (*stk)->data;
        struct stack* delNode = *stk;
        *stk = (*stk)->next;
        free(delNode);
        return retVal;
}
 
void del(struct stack** stk)
{
        while(*stk)
        {
                struct stack* delNode = *stk;
                *stk = (*stk)->next;
                free(delNode);
        }
}
 
char openingP(char c)
{
        switch(c)
        {
        case '}':
                return '{';
        case ')':
                return '(';
        case '>':
                return '<';
        }
        return 0;
}
 
int checkP(const char* str)
{
        struct stack* stk = NULL;
        while(*str)
        {
                if((*str == '{') || (*str == '(') || (*str == '<'))
                        stk = push(stk, *str++);
                else if((*str == '}') || (*str == ')') || (*str == '>'))
                {
                        char o = openingP(*str++);
 
if(stk == NULL)
                                return 0;
                        else if(pop(&stk) != o)
                        {
                                del(&stk);
                                return 0;
                        }
                }
                else
                        ++str;
        }
        if(stk != NULL)
        {
                del(&stk);
                return 0;
        }
        return 1;
}


строка 25

for(size_t i = 1; i < argc; ++i)

при компиляции выдает ошибку с системой типов в данной строке. а именно size_t

как можно избежать ошибки?



и еще вопрос: как вообще связана разрядность(32-бит 64-бит) с программированием??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2011, 22:29     char_t и как он связан с оперативкой?
Посмотрите здесь:

WMI & C++ (связан и с делфи) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
13.01.2011, 22:33     char_t и как он связан с оперативкой? #2
Цитата Сообщение от МИШЛЯНДИЯ Посмотреть сообщение
при компиляции выдает ошибку с системой типов в данной строке. а именно size_t
как можно избежать ошибки?
Как красноречиво.
#include <cstddef>
МИШЛЯНДИЯ
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 12
13.01.2011, 22:51  [ТС]     char_t и как он связан с оперативкой? #3
ниче не изменилось

------ Построение начато: проект: 2222222, Конфигурация: Debug Win32 ------
222222222.cpp
c:\users\92381\documents\visual studio 2010\projects\2222222\2222222\222222222.cpp(28): warning C4018: <: несоответствие типов со знаком и без знака
LINK : не найден или не выполнена сборка C:\Users\92381\documents\visual studio 2010\Projects\2222222\Debug\2222222.exe при последней инкрементной компоновке; выполняется полная компоновка
2222222.vcxproj -> C:\Users\92381\documents\visual studio 2010\Projects\2222222\Debug\2222222.exe
========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========


и в консоленке большая и толстая DEBUG )))
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
13.01.2011, 23:16     char_t и как он связан с оперативкой? #4
Это не ошибка, это -- предупреждение. О том, что сравниваются числа со знаком и без знака. Приложение вполне собралось, судя по логам. Если хотите избавиться от предупреждения, либо переменная i в цикле должна быть типа int, либо переменная argc должна быть беззнакового типа (size_t).
МИШЛЯНДИЯ
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 12
14.01.2011, 00:04  [ТС]     char_t и как он связан с оперативкой? #5
int вообще не в тему

с ним уже проект не строится вообще
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
14.01.2011, 00:47     char_t и как он связан с оперативкой? #6
И что пишет?

Добавлено через 6 минут
Собирается и, кажется, даже корректно работает.

Добавлено через 2 минуты
А не, нагнал. Косячит логика.
Код
Расстановка скобок в выражении '[()[{}][': правильная
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.01.2011, 11:10     char_t и как он связан с оперативкой? #7
C++
1
for(size_t i = 1; i < (size_t) argc; ++i)
Yandex
Объявления
14.01.2011, 11:10     char_t и как он связан с оперативкой?
Ответ Создать тему
Опции темы

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