roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 06:19

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 01:20 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2009, 23:39
Сообщения: 26
Откуда: K-Jarve, Estonia
прог. языки: PHP, C.
ФИО: Alex Po
Можно-ли сравнить два массива символов (две строки) без перебора по символам?
т.е

Значит сначала -
Код:
char Array_1[]="ABC";
char Array_2[]="ABC";


Не работает !
Код:
if(Array_1 == Array_2);


Работает -
Код:
if(Array_1[0] == Array_2[0] &&
           Array_1[1] == Array_2[1] &&
                     Array_1[2] == Array_2[2]);


Это тоже работает -
Код:
int result = 1;
for(int a=0; a<=2; a++){
if(Array_1[a] != Array_2[a])result =0; // если хоть одно не совпадение то result = 0
}
//result = 1 т.е. всё совпало.



Есть другие идеи?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 01:32 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
А как по твоему процессор должен сравнить сразу две строки? Конечно по символам.

Добавлено спустя 2 минуты 25 секунд:
redcat писал(а):
Не работает !
Код:
if(Array_1 == Array_2);


И не будет работать, если ты внимательно изучишь Си, то поймешь - что в данном случае ты просто сравниваешь два адреса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 01:37 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2009, 23:39
Сообщения: 26
Откуда: K-Jarve, Estonia
прог. языки: PHP, C.
ФИО: Alex Po
Сергей писал(а):
И не будет работать, если ты внимательно изучишь Си, то поймешь - что в данном случае ты просто сравниваешь два адреса.


Спасибо, я "знал" но надеялся)))
Помоему, в дельфи, две строки сравнивать можно. Там, если мне память не изменяет, тип string есть


Последний раз редактировалось redcat 02 фев 2009, 01:39, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 01:38 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Кури стандартную библиотеку Си, в часности: [[en:string.h]]

(Сергей, это просто пхп головного мозга : )

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 01:43 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2009, 23:39
Сообщения: 26
Откуда: K-Jarve, Estonia
прог. языки: PHP, C.
ФИО: Alex Po
Пхп однако хорошо, но для МК слишком жирно)))

Vooon Спасибо за подсказку, но я пожалуй быстрее функцию сваяю, чем в дебрях string.h разберусь. Ленивый я.


Последний раз редактировалось redcat 02 фев 2009, 01:46, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 01:47 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Все где ты видел где "типо" сравнивают две строки - это просто типы, операторы, и тп.
В процессе выполнения сравнения, который тебе кажеца будто сравнивает сразу всю строку, в любом случае идет сравнение символов, просто этот процесс сокрыт от тебя для удобства. А в Си такого нет, здесь можно наглядно видеть что происходит :)

Добавлено спустя 1 минуту 5 секунд:
redcat писал(а):
я пожалуй быстрее функцию сваяю, чем в дебрях string.h разберусь. Ленивый я.

С учетом твоих познаний в Си, ЛУЧШЕ будет использовать ГОТОВУЮ функцию, есть очень большая вероятность того что ты просто криво это напишешь.

Добавлено спустя 1 минуту 9 секунд:
И еще совет, попробуй сначала просто под ПК научица писать на Си, а потом уже на МК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 01:50 
Не в сети

Зарегистрирован: 20 ноя 2008, 19:31
Сообщения: 431
Откуда: Чернобыль
прог. языки: асмемблер
ФИО: Валентин Семенович
у нас демократическая страна. Пусть пишет. Будет о чем поговорить :)

_________________
За здравый смысл у нас принимается мнение большинства.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 01:55 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
А смысл писать велосипед?
И поиском compare [[en:strcmp]] совсем не видать?
Лучше разберись что предоставляет стандартная библиотека, благо все хорошо документировано.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 02:00 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Еще лучше записаца на курсы по Си, только именно Си, а не С++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 02:02 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2009, 23:39
Сообщения: 26
Откуда: K-Jarve, Estonia
прог. языки: PHP, C.
ФИО: Alex Po
блин...
Вот функция, может кому сгодицца
Код:
int StrCompare(const char *str1,const char *str2){
        while(*str1){
          if(*str1!=*str2)return 0;
        *str1++; *str2++;
        }
   return 1;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 02:12 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
А зачем ты инкрементируешь первый символ строк?

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 02:15 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
спасибо, но по-моему она аналогична стандартной strcmp

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 02:16 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
и кроме того что сказал Vooon, я могу сломать твою функцию, вот так
Код:
StrCompare( NULL, NULL );


Добавлено спустя 34 секунды:
galex1981 писал(а):
спасибо, но по-моему она аналогична стандартной strcmp

Она не аналогична, потому что она не работает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 02:28 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2009, 23:39
Сообщения: 26
Откуда: K-Jarve, Estonia
прог. языки: PHP, C.
ФИО: Alex Po
Злой форум однако. Все готовы новичков сожрать.
Сергей Я в этой функции не делал проверок, т.к
1 - заведомо извесно, что сравниваемые строки не будут пустыми;
2 - Эта функции будет работать быстрее, займёт меньше процессорного времени и памяти (опять-же из-за отсутствия проверки)

Vooon писал(а):
А зачем ты инкрементируешь первый символ строк?

Так иначе не будет перебора массива по символам, и while зациклится... Если я всё правильно понял...

Добавлено спустя 1 минуту 46 секунд:
Сергей писал(а):

galex1981 писал(а):
спасибо, но по-моему она аналогична стандартной strcmp

Она не аналогична, потому что она не работает


Всёже galex1981 прав, функция аналогична, но не идентична.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнение двух массивов.
СообщениеДобавлено: 02 фев 2009, 02:31 
Не в сети

Зарегистрирован: 20 ноя 2008, 19:31
Сообщения: 431
Откуда: Чернобыль
прог. языки: асмемблер
ФИО: Валентин Семенович
Vooon писал(а):
А зачем ты инкрементируешь первый символ строк?

он хотел все попортить, но не смог. инкремент раньше разыменовывания сработал.
Велик у нас будет о 7 колесах?

_________________
За здравый смысл у нас принимается мнение большинства.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO