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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 20:05   #1
Донат
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 22
По умолчанию Не могу сделать функцию для строки

При вводе символов программа дает ошибку...
Пишет невозвожно вычислить "int len = strlen(s);" в setArray и labArray

Вот код:

// Functions.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <clocale>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <string.h>
#include <windows.h>

#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>

int printMenu(int x);
void setArray (char *s, int len);
void printArray (char *s);
void labArray (char *s);
void casenull(char *s);


int _tmain(int argc, _TCHAR* argv[])
{
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

int menu = 0;
char *s = NULL;
int len = 0;



do
{
menu = printMenu(1);
switch (menu)
{
case 1:
setArray (s, len); // Параметры
break;

case 2:
printArray (s); // Параметры
break;

case 3:
labArray (s); // Параметры
break;

case 0:
casenull (s); // Параметры
break;

default:
{
printf("\n");
printf("\n");
printf("\n");
printf("-------------------\n");
printf("Неверный пункт меню\n");
printf("-------------------\n");
printf("\n");
printf("\n");
printf("\n");

break;
}

}
}while (menu != 0);

if (s != NULL)
{
delete [] s;
}

return 0;
}
int printMenu(int x)
{
if (1 == x)
{
printf(" Menu \n");
printf("1. Ввести строку.\n");
printf("2. Вывод строки\n");
printf("3. Задание к Лабораторной работе\n");
printf("0. Выход\n");
}

if (3 == x)
{
printf("1. Преобразовать строку (отразить)\n");
printf("2. Вывод\n");
}

int m = 0;
scanf ("%d", &m);

return m;
}

void setArray (char *s, int len)
{
int i = 0;

printf("Введите строку: ");
char ch = 0;

while(true)
{
ch = getch();
printf("%c", ch);

if (ch == 13)
{
printf("\n");
break;
}

int len = strlen(s);
char *tmp = new char[len+2];

strcpy (tmp, s);
tmp[len] = ch;
tmp[len + 1] = '\0';

s = tmp;
}
}

void printArray (char *s)
{
printf("Вы ввели: \"%s\"\n", s);
}

void labArray (char *s)
{
int subMenu = 0;
do
{
subMenu = printMenu(3);

if (subMenu != 1 && subMenu != 2)
{
printf("Неверный пункт меню!\n");
}

}while (subMenu != 1 && subMenu != 2);

if (1 == subMenu)
{
int len = strlen(s);
char t = 0;

for (int i = 0; i < len/2; i++)
{
t = s[i];
s[i] = s[len - 1 - i];
s[len - 1 - i] = t;
}
}

else if (2 == subMenu)
{
printf("Ответ: \"%s\"\n", s);
}
}

void casenull(char *s)
{
delete []s;
}
Донат вне форума Ответить с цитированием
Старый 07.12.2011, 20:08   #2
Донат
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 22
По умолчанию

Я новичок, так что пож-а не судите строго)
Донат вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу создать функцию ziganurov2011 Паскаль, Turbo Pascal, PascalABC.NET 2 26.07.2011 19:45
Сумма ряда с точностью Е=10-4, Сформировать обномерный массив, написать функцию для удаления строки... Dasha M Паскаль, Turbo Pascal, PascalABC.NET 1 06.05.2011 18:33
Хочу сделать форму для ввода паролей! Для этого текст должен быть зашифрован в (*****) ! Как сделать vitaaly Visual C++ 2 12.02.2011 12:29
как сделать функцию-друга для вложенного класа? Pord Общие вопросы C/C++ 0 13.09.2009 16:57
Не могу сделать на Delphi аналог phpMyAdmin для MySQL 4 Daniel_90 БД в Delphi 3 05.03.2009 09:57