Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с константой  (Прочитано 17138 раз)
0 Пользователей и 7 Гостей смотрят эту тему.
zellos
Гость
« : 05-06-2009 15:05 » 

Код:
#include <stdio.h>
const N = 5;
struct ABC{
                char word[40];
                int letter;
                }
typedef  ABC *PABC;     
void SortLetter ( PABS p[], int n )
{
int i, j;
PABC temp;
for ( i = 0; i < n-1; i ++ )
  for ( j = n-2; j >= i; j -- )
if ( p[j+1]->letter < p[j]->letter )
             {
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}   
void main()
{
ABC a[N];
PABC p[N];
for ( i = 0; i < N; i ++ )
gets(a[i].word);
 
for ( i = 0; i < N; i ++ )
   p[i] = &a[i];
 
for ( i = 0; i < N; i ++ )
switch (a[i].word)
{
case 'A':
case 'a':
a[i].letter=1;
case 'B':
case 'b':
a[i].letter=2;
case 'C':
case 'C':
a[i].letter=3;
case 'D':
case 'd':
a[i].letter=4;
case 'E':
case 'e':
a[i].letter=5;
case 'F':
case 'f':
a[i].letter=6;
case 'G':
case 'g':
a[i].letter=7;
case 'H':
case 'h':
a[i].letter=8;
case 'I':
case 'i':
a[i].letter=9;
case 'J':
case 'j':
a[i].letter=10;
case 'K':
case 'k':
a[i].letter=11;
case 'L':
case 'l':
a[i].letter=12;
case 'M':
case 'm':
a[i].letter=13;
case 'N':
case 'n':
a[i].letter=14;
case 'O':
case 'o':
a[i].letter=15;
case 'P':
case 'p':
a[i].letter=16;
case 'Q':
case 'q':
a[i].letter=17;
case 'R':
case 'r':
a[i].letter=18;
case 'S':
case 's':
a[i].letter=19;
case 'T':
case 't':
a[i].letter=20;
case 'U':
case 'u':
a[i].letter=21;
case 'V':
case 'v':
a[i].letter=22;
case 'W':
case 'w':
a[i].letter=23;
case 'X':
case 'x':
a[i].letter=24;
case 'Y':
case 'y':
a[i].letter=25;
case 'Z':
case 'z':
a[i].letter=26;
}
SortLetter ( p, N );
for ( i = 0; i < N; i ++ )
   printf("%s\n", p[i]->word);
}
Выдаёт такую ошибку
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 05-06-2009 15:41 » 

Цитата
const N = 5;
Что это за чудо-юдо? Такого в C/C++ нет.

Под Constant expression подразумевается константа, а не переменная.

Можно использовать макрос.
Код:
#define N 5
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zellos
Гость
« Ответ #2 : 05-06-2009 15:53 » new

Цитата
const N = 5;
Что это за чудо-юдо? Такого в C/C++ нет.

Под Constant expression подразумевается константа, а не переменная.

Можно использовать макрос.
Код:
#define N 5

получается вот что
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 05-06-2009 15:56 » 

Оно есть, только надо обязательно еше и тип определять
Код:
const int N = 5;
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zellos
Гость
« Ответ #4 : 05-06-2009 16:01 » 

Оно есть, только надо обязательно еше и тип определять
Код:
const int N = 5;
не помогает, та же самая ошибка
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 05-06-2009 16:03 » 

Код:
switch (a[i].word)
{
case 'A':
case 'a':
a[i].letter=1;
case 'B':
case 'b':
a[i].letter=2;
case 'C':
case 'C':
a[i].letter=3;
case 'D':
case 'd':
a[i].letter=4;
case 'E':
case 'e':
a[i].letter=5;
case 'F':
case 'f':
a[i].letter=6;
case 'G':
case 'g':
a[i].letter=7;
case 'H':
case 'h':
a[i].letter=8;
case 'I':
case 'i':
a[i].letter=9;
case 'J':
case 'j':
a[i].letter=10;
case 'K':
case 'k':
a[i].letter=11;
case 'L':
case 'l':
a[i].letter=12;
case 'M':
case 'm':
a[i].letter=13;
case 'N':
case 'n':
a[i].letter=14;
case 'O':
case 'o':
a[i].letter=15;
case 'P':
case 'p':
a[i].letter=16;
case 'Q':
case 'q':
a[i].letter=17;
case 'R':
case 'r':
a[i].letter=18;
case 'S':
case 's':
a[i].letter=19;
case 'T':
case 't':
a[i].letter=20;
case 'U':
case 'u':
a[i].letter=21;
case 'V':
case 'v':
a[i].letter=22;
case 'W':
case 'w':
a[i].letter=23;
case 'X':
case 'x':
a[i].letter=24;
case 'Y':
case 'y':
a[i].letter=25;
case 'Z':
case 'z':
a[i].letter=26;
}
Ой, а зачем так жестоко?
Код:
if ((a[i].word>='a') && (a[i].word <= 'z')) a[i].letter = a[i].word - 'a' + 1;
if ((a[i].word>='A') && (a[i].word <= 'Z')) a[i].letter = a[i].word - 'A' + 1;
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 05-06-2009 16:04 » 

zellos, покажи текущий код.

Это ты в Borland C++ 3.1 пишешь?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zellos
Гость
« Ответ #7 : 05-06-2009 16:08 » 

zellos, покажи текущий код.

Это ты в Borland C++ 3.1 пишешь?
текущий код тот который изначательно в теме, да в  Borland C++ 3.1
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #8 : 05-06-2009 16:13 » 

Ошибки в другом.
Вот код, который у меня компилируется. Сразу скажу. логику не менял. Но она с ошибками.
Код:
#include <stdio.h>
const int N = 5;
struct ABC{
                char word;
                int letter;
                };
typedef  ABC *PABS;    

void SortLetter ( PABS p[], int n )
{
int i, j;
PABS temp;
for ( i = 0; i < n-1; i ++ )
  for ( j = n-2; j >= i; j -- )
if ( p[j+1]->letter < p[j]->letter )
             {
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}  
int main()
{
ABC a[N];
PABS p[N];
for ( int i = 0; i < N; i ++ )
gets(&a[i].word);
 
for (int i = 0; i < N; i ++ )
   p[i] = &a[i];
 
for (int i = 0; i < N; i ++ )
{
   if ((a[i].word>='a') && (a[i].word <= 'z')) a[i].letter = a[i].word - 'a' + 1;
   if ((a[i].word>='A') && (a[i].word <= 'Z')) a[i].letter = a[i].word - 'A' + 1;
}
SortLetter ( p, N );
for (int i = 0; i < N; i ++ )
   printf("%s\n", p[i]->word);
   return 0;
}
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zellos
Гость
« Ответ #9 : 05-06-2009 16:57 » 


а уменя не компилится (((
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #10 : 05-06-2009 17:05 » 

У тебя что, компилятор на typedef спотыкается?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 05-06-2009 17:10 » 

Finch, так BC++ 3.1 работает по довольно древнему стандарту C. Вполне возможно, что и typedef не поддерживает.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #12 : 05-06-2009 17:17 » 

Насколько я знаю typedef был еше в С чистом.

zellos, Запиши структуру так
Код:
typedef struct {
                char word;
                int letter;
                } ABC, *PABS;
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zellos
Гость
« Ответ #13 : 05-06-2009 17:23 » 

код:
Код:
#include <stdio.h>
const int N = 5;
typedef struct {
                char word;
                int letter;
                } ABC, *PABS;  

void SortLetter ( PABS p[], int n )
{
int i, j;
PABS temp;
for ( i = 0; i < n-1; i ++ )
  for ( j = n-2; j >= i; j -- )
if ( p[j+1]->letter < p[j]->letter )
             {
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}  
int main()
{
ABC a[N];
PABS p[N];
for ( int i = 0; i < N; i ++ )
gets(&a[i].word);
 
for (int i = 0; i < N; i ++ )
   p[i] = &a[i];
 
for (int i = 0; i < N; i ++ )
{
   if ((a[i].word>='a') && (a[i].word <= 'z')) a[i].letter = a[i].word - 'a' + 1;
   if ((a[i].word>='A') && (a[i].word <= 'Z')) a[i].letter = a[i].word - 'A' + 1;
}
SortLetter ( p, N );
for (int i = 0; i < N; i ++ )
   printf("%s\n", p[i]->word);
   return 0;
}
Ошибка:
« Последнее редактирование: 05-06-2009 17:25 от Finch » Записан
zellos
Гость
« Ответ #14 : 05-06-2009 17:26 » 

пробовал ещё так
Код:
#include <stdio.h>
const int N = 5;
typedef struct {
    char word[40];
    int letter;
} ABC;  
 
void SortLetter ( ABC* p[], int n )
{
int i, j;
ABC* temp;
for ( i = 0; i < n-1; i ++ )
  for ( j = n-2; j >= i; j -- )
if ( p[j+1]->letter < p[j]->letter )
             {
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}  
void main()
{
        int i, j;
ABC a[N];
ABC* p[N];
for ( i = 0; i < N; i ++ )
gets(a[i].word);
 
for ( i = 0; i < N; i ++ )
   p[i] = &a[i];
 
for ( i = 0; i < N; i ++ )
{
if ((a[i].word>='a') && (a[i].word <= 'z')) a[i].letter = a[i].word - 'a' + 1;
if ((a[i].word>='A') && (a[i].word <= 'Z')) a[i].letter = a[i].word - 'A' + 1;
}
SortLetter ( p, N );
for ( i = 0; i < N; i ++ )
   printf("%s\n", p[i]->word);
}

но ошибка та же что и в первом посте
« Последнее редактирование: 05-06-2009 19:02 от Вад » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #15 : 05-06-2009 17:27 » 

Возьми нормальный компилятор, тем более сидиш под вистой. У тебя ошибка не в структуре, а в константе, которую компилятор почему то считает не константой.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zellos
Гость
« Ответ #16 : 05-06-2009 17:33 » 

а можешь кинуть ссылку на нормальный компилятор?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #17 : 05-06-2009 17:48 » 

Если Интернет хороший http://www.microsoft.com/express/download/#webInstall Выбери Visual Studio C++ Express Edition
Если нет интернета. То поиши у товаришей. Хотя бы 6 версию.

Можно еше из бесплатных поставить MinGW http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite
Но честно говоря, не знаю. Там скорее всего нет IDE. И ты не сможеш работать в нем.
« Последнее редактирование: 05-06-2009 17:50 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zellos
Гость
« Ответ #18 : 05-06-2009 18:07 » 

Если Интернет хороший http://www.microsoft.com/express/download/#webInstall Выбери Visual Studio C++ Express Edition
Если нет интернета. То поиши у товаришей. Хотя бы 6 версию.

Можно еше из бесплатных поставить MinGW http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite
Но честно говоря, не знаю. Там скорее всего нет IDE. И ты не сможеш работать в нем.

спасибо
Записан
Anchorite
Гость
« Ответ #19 : 06-06-2009 14:04 » 

Попробуй сменить расширение файла с C на CPP.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines