Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2009, 20:54   #1
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию С++. не могу найти ошибку

Здарствуйте уважаемые форумчанины... Я написал прогу, которая переводит слово в цифры. Но она не работает. я не могу найти ошибку. подскажите в чем проблема....
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>



long int** Transformation(char *code)
{ int i,j;
  int massiv_symbols[33];
  long int matrix_symbols[7];
  int temp;
  char slovo[255];

  slovo[27]="abcdefghijklmnopqastuvwxyz";

  for (j=1;j<34;j++){
	  temp= pow(2,j);
	  massiv_symbols[j]=temp;}
  temp=0;
  for(i=1;i<7;i++)
	  for (j=1;j<34;j++)
		  if(code[i]==slovo[j]){
			  matrix_symbols[i]=massiv_symbols[j];}
		
  return matrix_symbols;
}

void main ()
{
 char code[6];
 long int matrix_symbols[7];
 int i;

 
    printf ("vvedite slovo\n");
	scanf("%s",&code);

 matrix_symbols[7]=Transformation(code); 
 
 for(i=1;i<7;i++){
	 printf(matrix_symbols[i]);
	 printf("/n");}
 getch();
}
world12_tk вне форума Ответить с цитированием
Старый 21.07.2009, 23:35   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Перечислять все ошибки будет очень долго, десяток есть точно...
Я так понял нужно побуквенно преобразовать слово в соответствии с таблицей:
2^1 - a
2^2 - b
2^3 - c
....

я бы сделал так:
Код:
#include <stdio.h>
#include <conio.h>

void main ()
{
char code[6];
long int matrix_symbols[6];
int i;
printf ("vvedite slovo\n");
scanf("%s",&code);
for(i=0;i<6;i++)
  {
  matrix_symbols[i]= 2 << (code[i]-'a');
  printf("%ld\n",matrix_symbols[i]);
  }
 getch();
}
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 24.07.2009, 17:21   #3
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию

спасибо вам за помощь, но у меня возникло два вопроса....
1. на символе v он выдает значения 0. Увеличел значение до unsigned long int, но выдает тоже значение
2. как это сделать с русскими буквами...
еще раз спасибо..
world12_tk вне форума Ответить с цитированием
Старый 25.07.2009, 10:47   #4
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Цитата:
на символе v он выдает значения 0. Увеличел значение до unsigned long int, но выдает тоже значение
Можно использовать long long int(в соответствии со стандартом) или __int64 в vc++.
Цитата:
как это сделать с русскими буквами...
Интересное наблюдение: если от кода русской 'а'(-96) отнять код английской 'a'(97)(все операции проводятся с signed char'ом), то получится -193(минус 193, а не тире; в char не лезет, но присваивается long int'у) и сдвиг 2 на -193 позиции влево даёт 0, а на -192(у 'б' код -95) даёт... 2(!). И т.д. Итак, вместо
Код:
matrix_symbols[i]= 2 << (code[i]-'a');
пишем
Код:
matrix_symbols[i]= 2 << (code[i]-'a' + 1);
И программа теперь работает с русскими буквами, но не работает с английскими.
Если что, у меня vc++, у других компиляторов поведение может отличаться.
Как вариант можно написать русскую 'а' в кавычках, не добавляя единицы.

Последний раз редактировалось megachuhancer; 25.07.2009 в 12:26.
megachuhancer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти ошибку Tesmont Помощь студентам 2 20.05.2009 21:00
Не могу найти ошибку(С++) Yura_n Помощь студентам 8 20.01.2009 12:36
Не могу найти ошибку. Picaso18 Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 17:05
Не могу найти ошибку . KVANTOM Общие вопросы Delphi 2 08.01.2009 17:15
Не могу найти ошибку! Эдуард Общие вопросы C/C++ 7 27.02.2008 16:34