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
|
|
« Ответ #1 : 05-06-2009 15:41 » |
|
const N = 5; Что это за чудо-юдо? Такого в C/C++ нет. Под Constant expression подразумевается константа, а не переменная. Можно использовать макрос.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
zellos
Гость
|
|
« Ответ #2 : 05-06-2009 15:53 » |
|
const N = 5; Что это за чудо-юдо? Такого в C/C++ нет. Под Constant expression подразумевается константа, а не переменная. Можно использовать макрос. получается вот что
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #3 : 05-06-2009 15:56 » |
|
Оно есть, только надо обязательно еше и тип определять
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
zellos
Гость
|
|
« Ответ #4 : 05-06-2009 16:01 » |
|
Оно есть, только надо обязательно еше и тип определять не помогает, та же самая ошибка
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
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
|
|
« Ответ #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
Спокойный
Администратор
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
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #10 : 05-06-2009 17:05 » |
|
У тебя что, компилятор на typedef спотыкается?
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
RXL
|
|
« Ответ #11 : 05-06-2009 17:10 » |
|
Finch, так BC++ 3.1 работает по довольно древнему стандарту C. Вполне возможно, что и typedef не поддерживает.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Finch
Спокойный
Администратор
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
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #15 : 05-06-2009 17:27 » |
|
Возьми нормальный компилятор, тем более сидиш под вистой. У тебя ошибка не в структуре, а в константе, которую компилятор почему то считает не константой.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
zellos
Гость
|
|
« Ответ #16 : 05-06-2009 17:33 » |
|
а можешь кинуть ссылку на нормальный компилятор?
|
|
|
Записан
|
|
|
|
|
zellos
Гость
|
|
« Ответ #18 : 05-06-2009 18:07 » |
|
|
|
|
Записан
|
|
|
|
Anchorite
Гость
|
|
« Ответ #19 : 06-06-2009 14:04 » |
|
Попробуй сменить расширение файла с C на CPP.
|
|
|
Записан
|
|
|
|
|