Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите с задачей (http://www.tehnari.ru/f41/t257462/)

semmmen98 07.01.2018 23:41

Помогите с задачей
 
помогите с экзаменом пожалуйста
номер 2 решите задачу на языке си и скрин скиньте пожалуйста
В символьном массиве хранятся фамилии и инициалы учеников класса. Напечатать список класса с указанием количества однофамильцев каждого ученика
номер 1
Дана строка. Преобразовать ее, удалив каждый символ (*) и повторив каждый символ, отличный от (*)

Студент-2000 08.01.2018 03:41

Работа со строками на Си
 
Код:

while (Str[i]<>0) if (Str[i]<>"*") {
strcat(Str2,Str[i]);
strcat(Str2,Str[i]);
++i;
}


Olej 14.01.2018 21:15

Цитата:

Сообщение от Студент-2000 (Сообщение 2546425)
Код:

while (Str[i]<>0) if (Str[i]<>"*") {
strcat(Str2,Str[i]);
strcat(Str2,Str[i]);
++i;
}


Глупость написана! tehno015
(хотя бы хоть компилятором на синтаксис проверил! - не strcat(), а strncat() возможно, но и это плохо)

Код:

char Str[] = "...", *p1 = Str,
        *Str2 = (char*)malloc( 2 * strlen( ) ), *p2;
while( *p1 ) {
  if( *p1 != '*' ) {
      *p2++ = *p1;
      *p2++ = *p1;
  }
  p1++;

*p2 = '\0';


Студент-2000 15.01.2018 08:40

Цитата:

Сообщение от Olej (Сообщение 2548217)
Глупость написана! tehno015
(хотя бы хоть компилятором на синтаксис проверил! - не strcat(), а strncat() возможно, но и это плохо)

Вы ошиблись в заголовке <string.h> есть
Код:

char *strcat (char *res, const char *src);
char *strncat(char *res, const char *src, size_t len);

если б был strncat, то надо указывать ещё количество копируемых символов.

Olej 15.01.2018 14:15

Цитата:

Сообщение от Студент-2000 (Сообщение 2548334)
Вы ошиблись в заголовке <string.h> есть

Я вовсе не ошибся, я вообще ошибаюсь редкосtehno025 :
Цитата:

Сообщение от Студент-2000 (Сообщение 2548334)
Код:

char *strcat (char *res, const char *src);

- 2-й параметр в прототипе strcat имеет тип const char* - строка ...
- а в показанном горе-"решении" 2-й параметр вызова имеет тип char - символ ...
Цитата:

Сообщение от Студент-2000 (Сообщение 2546425)
Код:

strcat(Str2,Str[i]);

- они даже по типу не соответствуют друг другу, и такую конструкцию компилятор просто не пропустит синтаксически: "грубая ошибка компиляции".

Olej 15.01.2018 15:26

Цитата:

Сообщение от Студент-2000 (Сообщение 2548334)
Код:

char *strncat(char *res, const char *src, size_t len);

Вот такой вариант:
Код:

strcat( Str2, Str[i], 1 );
Он хотя бы вернёт строку (char*) из 1-го символа, а не одиночный символ (char), что хотя бы будет соответствовать синтаксису по типам ... и станет хоть как-то компилироваться, проходя синтаксический контроль.
Но это бездарный способ по производительности - он просто чудовищно расточительный.
А делаются подобные задачи манипуляциями с символами, и никогда использованием строчных функций вида str*().


Часовой пояс GMT +4, время: 01:33.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.