Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конверт Паскаль->C 
:(
    Опции темы
psyco
Дата 25.6.2009, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



помогите пожалуйста конвертировать код Паскаля в С
Код

s:string[1];
for i:=0 to 7 do
begin
          s[1]:=chr(ord('A')+i);
          writeln(s[1]);
end;

Это для того,чтобы сделать цикл по строкам,т.е
а
б
в
г
...

PM MAIL   Вверх
vinick
Дата 26.6.2009, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: нет
Всего: 22



Код

  char c = 'A';
  int i;
  for(i = 0; i< 7;++i,++c)
    printf("%c\n",c);

или 
Код

  char c;
  for(c='A'; c < 'H';++c)
    printf("%c\n",c);



Но это только для символов ASCII.  С русскими буквами такой фокус уже не пройдет.
PM MAIL ICQ Jabber   Вверх
psyco
Дата 26.6.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Цитата(vinick @ 26.6.2009,  00:08)
Но это только для символов ASCII.  С русскими буквами такой фокус уже не пройдет.

спасибо большое))я случайно показал пример на русских буквах,имелось в виду a,b,c,... Хых,простенько так оказалось,а я парился smile спасибо еще раз!

Добавлено через 11 минут и 29 секунд
а если эти бсимволы a,b,c - переменные,например
char a[]={bla1},b[]={bla2},c={bla3};
и я хочу выводить их на текстовый экран через цикл?символы a,b,c будут считаться за переменные или за символы?
PM MAIL   Вверх
baldina
Дата 26.6.2009, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



перевод не точный: 
Код

for i:=0 to 7 do

это цикл, включающий 7:
Код

for(i=0; i <= 7; ++i)


итого:

Код

int i;
for (i=0; i <=7; ++i)
  printf ("%c\n", 'A'+i);

PM MAIL   Вверх
psyco
Дата 26.6.2009, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



да проблема не в цикле,зачем придираться к деталям,мне вот интересно как связать в цикле имена переменных,к примеру:
Код

char a[]="bla1",b[]="bla2"...
for(i='a';i<='j';i++)
   printf("%s",i)

вот как это правильно написать?
PM MAIL   Вверх
vinick
Дата 26.6.2009, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: нет
Всего: 22



Цитата(psyco @  26.6.2009,  02:08 Найти цитируемый пост)
вот как это правильно написать? 

Так нельзя. Используй массив строк.
Код

  const char* str[3] = {"bla1","bla2","bla3"};
  int i;
  for(i = 0; i< 3;++i)
    printf("%s\n",str[i]);


Если нужны неконстантные строки, то надо выделять память под них и вручную инициализировать.
PM MAIL ICQ Jabber   Вверх
psyco
Дата 26.6.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



vinick спасибо,очень помогло)хочу еще сделать такую штуку с выбором
Код

const char* str[3]={"1","2","3"};
for(i=0;i<3;i++)
{
    if(keypressed=str[i])
         <операторы i>
} 

в if'е чтобы был выбор:если нажал 1,то выполнять оператор1,если нажал 2 - оператор2, и т.д. но в цикле.Ключевое слово keypressed помню с Паскаля,а как в Си не знаю,подскажите пожалуйста
PM MAIL   Вверх
baldina
Дата 26.6.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



так:
Код

typedef void (*ftype)();
void f1 () { printf ("f1()\n"); }
void f2 () { printf ("f2()\n"); }
void f4 () { printf ("f4()\n"); }
.............
const char keys[]={'1','2','3','4'};
const ftype f[] = {f1, f2, 0, f4};
.............
for (i=0;i<sizeof keys / sizeof keys[0]; ++i)
{
    if(keypressed=keys[i])
         if (f[i])
            (*f[i]) ();
}



или так:

Код

switch (keypressed)
{
   case '1':
       // операторы 1
       break;
   case '2':
       // операторы 2
       break;
   case '3':
       // операторы 3
       break;
   case '4':
       // операторы 4
       break;
}


psyco, может тебе книжку почитать, обучение быстрее будет
PM MAIL   Вверх
jonie
Дата 26.6.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



baldina паралельные массиы - один из антипаттернов.
Т.е. минимально это:
Код


const char keys[]={'1','2','3','4'};
const ftype f[] = {f1, f2, 0, f4};
стоит объявить как структуру вроде:
Код

typedef struct tagItem {
 char* key;
 ftype f;
}item,*pitem;

ну а далее работать с массивом структур...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
baldina
Дата 26.6.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



jonie, спасибо что объяснил.
PM MAIL   Вверх
psyco
Дата 26.6.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



спасибо всем за помощь,книгу параллельно читаю,но данного примера не видел,извините если отвлекаю
PM MAIL   Вверх
psyco
Дата 28.6.2009, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



привет,я к сожалению столкнулся с очередной проблемой,конкретно - функции как параметры других функций
Код

void func(const char* str1[],int mat[],const char* str2[],int misc[],
          int zal[],int zabr[],void (*compare)(const char*,int,const char*,
          int,int,int))
{
    int k;
    for(k=0;k<10;k++)
    {
          (*compare)(str1[k],mat[k],str2[k],misc[k],zal[k],zabr[k]);
            }
}
void fprint(const char* str1[],int mat[],const char* str2[],int misc[],
          int zal[],int zabr[])
{
    FILE *fp;
    int k;
    fp=fopen("c:\\bd.data","w");
    fprintf(fp,"є%2dі%17sі%3d.06.2009і%6sі%7dі%11dі%13dі%2dє\n",
    k+1,str1[k],mat[k],str2[k],misc[k],zal[k],zabr[k],k+1);
    fclose(fp);
}
void fscan(const char* str1[],int mat[],const char* str2[],int misc[],int zal[],int zabr[])
{
    FILE *fp;
    int k;
    fp=fopen("c:\\bd.data","r");
    fscanf(fp,"є%2dі%17sі%3d.06.2009і%6sі%7dі%11dі%13dі%2dє\n",
    k+1,str1[k],mat[k],str2[k],misc[k],zal[k],zabr[k],k+1);
    fclose(fp);
}

fprint,fscan -это функции записи и чтения с файла,а функция func - это функция с указателем на другую функцию.В главной программе(в main()) у меня на этом на месте вызова функции func():
Код

func(str1,mat,str2,misc,zal,zabr,fprint);
func(str1,mat,str2,misc,zal,zabr,fscan);

вот такие ошибки:
"Cannot convert 'void (*)(const char * *,int*,const char* *,int *,int *,int *)'to 'void(*)(const char *,int,const char *,int,int,int)'"
и
"Type mismatch in parameter 'compare' in call to func(const char * *,int*,const char* *,int *,int *,int *,void(*)(const char *,int,const char *,int,int,int)'"
Помогите пожалуйста,буду очень благодарен
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.