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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2014, 17:53   #1
Nazar0135
 
Регистрация: 28.02.2014
Сообщений: 4
По умолчанию Помогите пожалуйста)

Эта программа сравнивает строки. в библиотеке <stdlib.h> есть готовая функция strcmp, но ей нельзя мне пользоваться. написал по одному шаблону такую прогу, но не могу понять почему тест 1 не проходит.
что нужно поменять, чтобы тесты были пройдены?
Вот исходник:
Код:
#include <stdio.h>  // библиотека ввода-вывода
#include <string.h>  // библиотека строк
#include <stdlib.h>  // библиотека функций общего назначения
#include "math.h"  // библиотека матем.функций

int str (char *a, char *b)
{
	int i, flag=0;
	do
	{
		if (a[i]>b[i])
		{
			flag=1;
		}
		else if (a[i]<b[i]) 
		{
			flag=-1;
		}
		i++;
	}
	while (a[i]==b[i]);
	return(flag);
}

main()
{
    char Stroka1[] = "алфавит"; // объявление двух массивов из символов
    char Stroka2[] = "алфавит";
	char Stroka3[] = "программа";
	char Stroka4[] = "программирование";
	char Stroka5[] = "хорошо";
	char Stroka6[] = "плохо";
    printf("\n\tТест 1\n\n"); // печать заголовка
	if(str(Stroka2,Stroka1)==0)
		{
		printf("Тест пройден!\n"); // печать результата
		printf("2 слова: '%s'", Stroka1);
		printf(" и ");
		printf(" '%s' одинаковы", Stroka2);
		}
		else
		printf("Тест не пройден!\n");
	
	printf("\n\tТест 2\n\n"); // печать заголовка
	if(str(Stroka4,Stroka3)==1)
		{
		printf("Тест пройден!\n"); // печать результата
		printf("У слова '%s'", Stroka3);
		printf(" первые символы раньше встречаются в алфавите,\nчем у слова");
		printf(" '%s'", Stroka4);
		}
		else
		printf("Тест не пройден!\n");
	
	printf("\n\tТест 3\n\n"); // печать заголовка
	if(str(Stroka5,Stroka6)==-1)
		{
		printf("Тест пройден!\n"); // печать результата
		printf("У слова: '%s'", Stroka5);
		printf(" первые символы позже встречаются в алфавите,\nчем у слова");
		printf(" '%s'", Stroka6);
		}
		else
		printf("Тест не пройден!\n");
	}
From Stilet: Я исправил, в следующий раз постарайся код выделять по правилам кнопкой # на панели инструментов поста.

Последний раз редактировалось Stilet; 23.04.2014 в 21:22.
Nazar0135 вне форума Ответить с цитированием
Старый 23.04.2014, 18:02   #2
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

код выдели и на кнопку # нажми.Так код удобней смотреть

Последний раз редактировалось alekopoko; 23.04.2014 в 18:17.
alekopoko вне форума Ответить с цитированием
Старый 23.04.2014, 18:45   #3
Nazar0135
 
Регистрация: 28.02.2014
Сообщений: 4
По умолчанию

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

Открой редактирование, выдели исходный код и шмякни кнопку . В результате получится что-то вида

Код:
тут_код
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 23.04.2014, 19:58   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Ну если строки равны - то твоя функция сработает неверно. Это точно.

Если одна строка короче другой - то тоже вроде бы результат может быть внезапным.

Твоя функция вообще никак не ожидает что строки кончатся. Когда они реально кончатся - функция будет сравнивать мусор, который физически расположен за строками. Это не детерминированное поведение.
rrrFer вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите создать програму для роботы с файлами, пожалуйста помогите нужно очень срочно Сергей Человек Фриланс 3 06.07.2009 19:30
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44