Удобнее всего начертить табличку: в строках - фамилии, в столбцах - профессии. По ходу рассужления на пересечении и фамилии ставить ×, если человек с такой фамилией не работает по данной специальности,и +, если работает. Так будет гораздо нагляднее.
Ход рассуждений будет следующим:
Петров и Иванов никогда не держали в руках малярной кисти, значит они не маляры.
Петров и Борисов живут в одном доме со штукатуром, значит сами они не штукатуры.
Андреев и Петров подарили электрику вазу, значит сами они не электрики.
Борисов и Петров помогали плотнику, значит сами они не плотники.
Итак, Петров не маляр, не плотник, не штукатур и не электрик. Следовательно, он каменщик.
Значит, все остальные каменщиками не являются.
Борисов и Сидоров по субботам встречаются у электрика, значит сами они не электрики.
Таким образом, Борисов не плотник, не штукатур, не каменщик и не электрик. Следовательно, он маляр.
Соответственно, остальные малярами не являются.
Также нам уже известно, что Андреев, Борисов, Петров и Сидоров - не электрики. Значит, электрик - Иванов.
Остались 2 профессии: плотник и штукатур, а также 2 фамилии: Андреев и Сидоров.
По условию, штукатур ходит в гости к Андрееву, значит Андреев - не штукатур, а плотник. Тогда Сидоров - штукатур.
Ответ: Андреев -плотник, Борисов - маляр, Иванов - электрик, Петров - каменщик, Сидоров - штукатур.