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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2013, 18:13   #1
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию проверки с++

Здравствуйте,помогите пожалуйста сделать проверки на пустые строки и на максимальную длину
Код:
#include "stdafx.h"
#include <stdio.h>
#include <iostream> 
#include <cstring>
#include <locale>
using namespace std;


char * my_strcat(char * dst, const char * src)
{

    char * p = dst;
    while ( *p )
        ++p;
    while ( *p++ = *src++ )
        ;
    return dst;
}
 
int main(void)
	
{


    char str1[BUFSIZ], str2[BUFSIZ];
   
	cout<<"введите строки,длины которых не равны 0";
	
    setlocale(0,"rus");
    printf("First: ");
    scanf("%s",str1);
    printf("Second: ");
    scanf("%s",str2);
    printf("Together: %s\n", my_strcat(str1, str2));
    system ("pause");
    return 0;
}

Последний раз редактировалось lialia; 25.10.2013 в 19:38.
lialia вне форума Ответить с цитированием
Старый 26.10.2013, 10:10   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Функцию strlen() применить для введенной строки, примерно так:
Код:
if (strlen(str1) == 0) { вернуться ко вводу строки }
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 26.10.2013, 17:41   #3
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

извините,я не уточнила,стандартными функциями пользоваться нельзя
lialia вне форума Ответить с цитированием
Старый 26.10.2013, 18:04   #4
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Код:
if (str[0] == '\0') then
Еще попробовать символы '\r' - возврат на начало строки и '\n' - конец строки.
'\0' - конечный терминатор, насколько я помню.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 26.10.2013, 18:11   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Так пойдёт?
Код:
int i=j=0;
while(strl1[i] != 0)  i++;

while(strl2[j] != 0)  j++;

char *rez;
if(i != 0 && j != 0)  i>j ? rez = "i больше j" : rez = "j меньше или равно i";
else rez = "Одна из переменных равна нулю";
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 26.10.2013 в 18:16.
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.10.2013, 18:41   #6
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

Дело в том что когда вводишь enter один раз -- нужно вывести ошибку и начать заново,а в этой программе кода вводишь enter она не останавливается ,а просто не реагирует и нажимай enter сколько хочешь((
я сколько пробую переделать ничего не получается((

Код:
setlocale(0,"rus");
    char str1[BUFSIZ], str2[BUFSIZ];
	
	while  (str1[0] == '\0') 
	{
       printf("errorr ");
	  
	}
    printf("First: ");
    scanf("%s",str1);
    printf("Second: ");
    scanf("%s",str2);
    printf("Together: %s\n", my_strcat(str1, str2));
    system ("pause");
    return 0;
так тоже не правильно

Последний раз редактировалось Stilet; 26.10.2013 в 20:34.
lialia вне форума Ответить с цитированием
Старый 26.10.2013, 19:51   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Вот Вам полностью рабочий код:

Код:
#include <stdio.h>
#include <iostream> 
#include <cstring>
#include <locale>
using namespace std;

char * my_strcat(char * dst, char * src)
{
int i=0,j=0;
while(dst[i] != 0)  i++;

while(src[j] != 0)  j++;

char *rez;

if(i == j) rez = "строки равны";
else i>j ? rez = dst : rez = src;
return rez;
}

typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);     // прототип недокументированый функции
 SETCONSOLEFONT SetConsoleFont;
 
int main(void)
{
  HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");     // функция здесь
  SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");   // берем ее адрес
  if (!SetConsoleFont) {cout<<"error\n" ; exit(1);}   //   если ошибка
  SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE), 8);  // устанавливаем 8-й шрифт..
  //эксперементально установил что в обычной XP  это Lucida  Console = 6 или 8.
  // разница только в размерах 6-и помельче
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251) ;  // устанавливаем кодировку вывода

   char str1[BUFSIZ], str2[BUFSIZ];
   
   cout<<"введите строки,длины которых не равны 0 \n";

    printf("First: ");
    scanf("%s",str1);
    printf("Second: ");
    scanf("%s",str2);
    printf("Together: %s\n", my_strcat(str1, str2));
    system ("pause");
    return 0;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.10.2013, 22:48   #8
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

спасибо)
lialia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
idHTTP и яваскрипт проверки _ZixeL_ Общие вопросы Delphi 23 12.03.2013 16:50
Нуждаюсь в проверки программиста. jawD Помощь студентам 4 09.10.2011 20:05
Функция проверки emal Fok Общие вопросы Delphi 2 06.11.2010 05:25
Продолжение после проверки painkiller Общие вопросы C/C++ 1 17.10.2010 23:43
Функция проверки монотонности ax1d Общие вопросы Delphi 3 27.10.2009 12:44