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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2010, 22:22   #1
ТриСемёрки
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 61
По умолчанию Проблема с созданием или выводом строк

#pragma hdrstop

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

//---------------------------------------------------------------------------


char*** Funct_Tab(int n, int k, int x, int s); //получение таблицы смежных классов
void free_Funct_Tab(char ***A2, int x, int s);
void write_Tab(char ***A2, int x, int s);
char* rus (char* str) ; // преобразует ANSI-строку в строку ASCII

#pragma argsused
int main(int argc, char* argv[]) {
int n, k, x, s; //зарезевированы!!!
int i, j;
char str[25]="";
char ***A2; //массив таблицы смежных классов

M1: printf(rus("Для получения кодового слова, закодированного кодом с повторениями нажмите '1'.\n"));
printf(rus("Для декодирования вектора нажмите '2'.\n"));
printf(rus("Для декодирования вектора, с использованием таблицы смежных классов нажмите '3'.\n"));
printf(rus("Для декодирования векторов ошибок нажмите '4'.\n"));
printf(rus("Для декодирования векторов ошибок с использованием таблицы смежных классов нажмите '5'.\n"));
printf(rus("Для выхода из программы нажмите '6'.\n"));
printf(rus("Введите команду: "));
scanf("%d", &i);
switch(i) {
case 3: {
M4: printf(rus("Введите закодированное сообщение (кодовое слово), состоящее из '1' и '0': \n"));
scanf("%s", str);
n=strlen(str);
for (i=0;i<n;i++)
if ((str[i]!='0')&(str[i]!='1')) {
printf(rus("Введён некорректный символ:%c\n"),str[i]);
putchar('\n');
goto M4;
}
printf(rus("Введите длинну сообщения, т.е. k : "));
scanf("%d", &k);
if ((n%k)!=0) {
printf(rus("Введено некорректное значение длинны сообщения или кодовое слово некорректной длины.\n"));
putchar('\n');
goto M4;
}
x=pow(2,k);
s=(pow(2,n))/x;
A2=Funct_Tab(n, k, x, s);
printf(rus("Создана следующая таблица смежных классов:\n"));
write_Tab(A2, x, s);
free_Funct_Tab(A2, x, s);
putchar('\n');

goto M1;
}
case 6:
return 1;
default: {
printf(rus("Введена некорректная программа.\n"));
goto M1;
}
}

}

char*** Funct_Tab(int n, int k, int x, int s) {

char ***A2;
int i, j, y, r, m, z;

A2=(char ***)malloc(s*sizeof(char**));
for (i=0; i<s; i++) {
A2[i]=(char**)malloc(x*sizeof(char*));
for (j=0; j<x; j++)
A2[i][j]=(char*)malloc(n*sizeof(char));
}



for (i=0; i<s; i++) //инициализируем нулями
for (j=0; j<x; j++)
for (y=0; y<n; y++)
A2[i][j][y]='0';



return A2;
}

char* Funct3(char *str, char ***A2, int x, int s) {
int i, j;
char str1[25]="";
for(i=0; i<s; i++)
for(j=0; j<x; j++)
if(strcmp(str,A2[i][j])==0)
strcpy(str1, A2[0][j]);
strcpy(str,str1);
return str;
}

void free_Funct_Tab(char ***A2, int x, int s) {
int i, j;
for(i=0; i<s; i++)
for(j=0; j<x; j++)
free(A2[i][j]);
for(i=0; i<s; i++)
free(A2[i]);
free(A2);
}

void write_Tab(char ***A2, int x, int s) {
int i, j;
for (i=0; i<s; i++) {
for(j=0; j<x; j++) {
printf(A2[i][j]);
putchar(' ');
}
putchar('\n');
}
}



char* rus(char* str) {
unsigned char *p=NULL;
char *str2="";
strcpy(str2,str);
p=str2;
/* при объявлении символов как char русские буквы
кодируются отрицательными числами */
while (*p) {
if (*p>=192) // здесь русская буква
if ((*p)<=239) // А, Б, ... Я, а, б, ... п
(*p)=(*p)-64;
else // p ... я
(*p)=(*p)-16;

p++;
}
return str2;
}
ТриСемёрки вне форума Ответить с цитированием
Старый 12.05.2010, 22:30   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
#include <telepat.h>
Что должна делать программа и в чем именно состоит проблема?
А код оформите в тег CODE (значок #)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 13.05.2010, 10:55   #3
ТриСемёрки
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 61
По умолчанию Проблема с созданием или выводом строк.

Программмa (а точнее этот кусок) создаёт массив А[][][] типа char, инициализирует их нулями и выводит на экран.

Код:
#pragma hdrstop

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

//---------------------------------------------------------------------------


char*** Funct_Tab(int n, int k, int x, int s);     //получение таблицы смежных классов
void free_Funct_Tab(char ***A2, int x, int s);
void write_Tab(char ***A2, int x, int s);
char* rus (char* str) ;                             // преобразует ANSI-строку в строку ASCII

#pragma argsused
int main(int argc, char* argv[])    {
        int n, k, x, s;                                         //зарезевированы!!!
	int i, j;
	char str[25]="";
	char ***A2;                                             //массив таблицы смежных классов
	
M1:	printf(rus("Для получения кодового слова, закодированного кодом с повторениями нажмите '1'.\n"));
	printf(rus("Для декодирования вектора нажмите '2'.\n"));
	printf(rus("Для декодирования вектора, с использованием таблицы смежных классов нажмите '3'.\n"));
	printf(rus("Для декодирования векторов ошибок нажмите '4'.\n"));
	printf(rus("Для декодирования векторов ошибок с использованием таблицы смежных классов нажмите '5'.\n"));
	printf(rus("Для выхода из программы нажмите '6'.\n"));
	printf(rus("Введите команду: "));
	scanf("%d", &i);
	switch(i)	 {

		case 3:    {
M4:			printf(rus("Введите закодированное сообщение (кодовое слово), состоящее из '1' и '0': \n"));
			scanf("%s", str);
			n=strlen(str);
			for (i=0;i<n;i++)
				if ((str[i]!='0')&(str[i]!='1'))	{
					printf(rus("Введён некорректный символ:%c\n"),str[i]);
					putchar('\n');
					goto M4;
				}
			printf(rus("Введите длинну сообщения, т.е. k : "));
			scanf("%d", &k);
			if ((n%k)!=0)	   {
				printf(rus("Введено некорректное значение длинны сообщения или кодовое слово некорректной длины.\n"));
				putchar('\n');
				goto M4;
			}
			x=pow(2,k);	                                
			s=(pow(2,n))/x;						
			A2=Funct_Tab(n, k, x, s);
			printf(rus("Создана следующая таблица смежных классов:\n"));
			write_Tab(A2, x, s);
			free_Funct_Tab(A2, x, s);
			putchar('\n');

		goto M1;
		}	
	

		case 6:
			return 1;
		default:    {
			printf(rus("Введена некорректная программа.\n"));
			goto M1;
		}
	}

}


	
char*** Funct_Tab(int n, int k, int x, int s)    {

	char ***A2;
	int i, j, y, r, m, z;


	A2=(char ***)malloc(s*sizeof(char**)); 
	for (i=0; i<s; i++)	   {
		A2[i]=(char**)malloc(x*sizeof(char*));  
		for (j=0; j<x; j++)	   
			A2[i][j]=(char*)malloc(n*sizeof(char));  
	}


	for (i=0; i<s; i++)                                        //инициализируем нулями
		for (j=0; j<x; j++)	
			for (y=0; y<n; y++)
                              A2[i][j][y]='0';
			

	return A2;
}


void free_Funct_Tab(char ***A2, int x, int s)    {
	int i, j;	
 	for(i=0; i<s; i++)
 		for(j=0; j<x; j++)
 			free(A2[i][j]);
	for(i=0; i<s; i++)
		free(A2[i]);
	free(A2);
}

void write_Tab(char ***A2, int x, int s)     {
	int i, j;			
	for (i=0; i<s; i++)	   {
		for(j=0; j<x; j++)	  {
			printf(A2[i][j]);
			putchar(' ');
	    }
	    putchar('\n');
	}	
}



char* rus(char* str)    {
        unsigned char *p=NULL;
        char *str2="";
        strcpy(str2,str);
        p=str2;

        while (*p)    {
                if (*p>=192)    // здесь русская буква
                        if  ((*p)<=239)   // А, Б, ... Я, а, б, ... п
                                (*p)=(*p)-64;
                        else              // p ... я
                                (*p)=(*p)-16;

                p++;
        }
        return str2;
}
ТриСемёрки вне форума Ответить с цитированием
Старый 13.05.2010, 15:42   #4
ТриСемёрки
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 61
По умолчанию

Всё ещё нужна помощь!!!
ТриСемёрки вне форума Ответить с цитированием
Старый 13.05.2010, 18:17   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Все еще непонятно, в чем именно проблема. Хотя бы как она проявляется? Вслепую копаться в таком довольно объемистом коде нет как-то никакого желания.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с созданием или выводом строк ТриСемёрки Помощь студентам 2 13.05.2010 15:41
проблема с выводом на экран Sined121 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 08.05.2010 16:48
Структура, содержащая массивы и матрицу данных - проблема с записью и/или выводом flexin Общие вопросы C/C++ 6 09.01.2010 19:42
проблема с выводом информацыи Betman Общие вопросы Delphi 2 29.10.2009 17:09
проблема с выводом результата Nyutka PHP 2 16.04.2009 11:58