Объединить две строки в одну, удалив все пробелы - C (СИ)

  1. Привет всем. Нужна помощь нубу. Ести небольшое начало программы:C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <stdio.h> #include <conio.h>   main() {     char str1[80], str2[80], str3[160];     int i, j, count; //Vvod strok       printf("Enter first string:\t");     gets(str1);       printf("Enter second string:\t");     gets(str2); //Podschet strok            i=0;     while(str1[i++]!='\0');     printf("First string length is:\t%d chars\n",i-1);       j=0;     while(str2[j++]!='\0');     printf("Second string length is:\t%d chars\n",j-1);нужно добить: 0. Объеденить две строки в одну, удалив все пробелы (через оператор for). 1. Заменить все пары букв X,Y на цифры 1,2(через оператор do-while). Замену прекратить если количество измененй будет больше 4. Желательно с максимально возможными комментариями Зарание спасибо!


textual

Код:

int a=0; //Переменная для итерации цикла 4 раза
int str=0; //Переменная для индексации строки
do
{
     if(str1[str]=='X' && str1[str+1]=='Y')
     {
             str1[str] = '1';
             str1[str+1] = '2';
             a++;
      };
} while(a<=4  && str<79)//Делать пока изменений меньше или равно 4


Похожие ответы
  1. Функция - Parse(s,t). Разделение строки s на две части: до первого вхождения символа t и после него Нужно разработать два варианта заданной функции - используя традиционную обработку массивов и используя адресную арифметику. ПОМОГИТЕ! Как можно сделать используя традиционную обработку массивов? " используя адресную арифметику" задача вроде бы решаеться так:C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 #include #include #include #include #define n 100   int c; char str1[n], str2[n]; char* tmp = 0;   void Parse(char *strr) {       for (char* p = strr; *p; p++)         printf("%c", *p);     printf("\n");     for (char* p = strr; *p; p++)         if (*p == 't') {             tmp = p;             printf("%d", p - strr);             printf("\n");             break;         }     for (char* p = strr, *p1 = str1, *p2 = str2; *p; p++)     {         if (p < tmp)         {             *p1 = *p;             p1++;         }         else if (p > tmp)         {             *p2 = *p;             p2++;         }     } }   int main() {     while (!(c == 27))     {           system("cls");         printf(" Enter - run the program.\n");         printf(" Esc - exit.\n");         printf(" Any other key - information about program.\n");         c = getch();         system("cls");         switch (c)         {         case 13:         {             char str[n];             fputs(" Vvedite tekst -> ", stdout);             fgets(str, sizeof(str), stdin);               Parse(str);             for (char* p = str1; *p; p++)                 printf("%c", *p);             printf("\n\t\t < - Pervaya chast'\n\n");             for (char* p = str2; *p; p++)                 printf("%c", *p);             printf("\t\t < - Vtoraya chast'\n");             printf("\n\n\n  Esc - exit.\n");             printf("  Any other - go to the main page.\n");             c = getch();             break;             system("cls");         }           case 27:             break;         default:         {             system("cls");             printf("     Funktsiya - Parse (s, t). Razdeleniye strok s na dve chasti: \n");             printf("          do pervogo vkhozhdeniya simvola t i posle nego\n");             printf("\n\n  Esc - exit.\n");             printf("  Any other - go to the main page.\n");             c = getch();             system("cls");             break;         }         }     }     return 0; }

  1. Создать процедуру, перемножающую две матрицы по правилам матричного умножения. Предусмотреть случай, когда размеры матриц заданы некорректно.Добавлено через 4 часа 50 минутC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 #include #include #include #include #include                   // прототипы функций   void vorm_mass(int pp, int yy,  int mass[pp][yy]); void multi (int pp, int yy, int aa, int bb, int mass[pp][yy], int massf [aa][bb]);   int main() {     int i, j,   p,  a, b, y;       printf("\nEnter the number of lines matrix A:");     scanf("%d", &p);     printf("\nEnter the number of columns matrix A:");     scanf("%d", &y);     printf("\nEnter the number of lines matrix B:");     scanf("%d", &a);     printf("\nEnter the number of columns matrix B:");     scanf("%d", &b);           int massiv[p][y];     int massivf[a][b];       printf("\nInitial array A:\n");      vorm_mass(p, y,  massiv);       for (i=0; i

  1. Привет, форумчане. Проблема следующая, бью число (пока двухзначное) на составляющие его цифры, с этим проблем нет, но вот дальше, когда пытаюсь совершить какую-либо операцию, будь то умножение, деление, сложение, вычитание в ответе выдаётся какое-то непонятное число. Использую devC++. Подскажите, как решить проблемку=)

  1. Доброго времени суток. Проблема в следующем. Как записать содержимое файла (txt) в динамический массив строк? Или же есть другой способ перенести всё содержимое файла? К сожалению, ничего из с++ использовать нельзя.

  1. Дана строка, содержащая латинские буквы и десятичные цифры. Получить две строки, одну из букв, другую из цифр данной строки, сохранив относительный порядок символов. Например, из строки “qwer4672ty01” получим “qwerty” и “467201”.

  1. Функция разделяет исходный массив in длиной n на 2 части и записывает их в массивы b и c , так чтобы для каждого элемента b функция f возвращает true , а для элементов c -false . Функция возвращает количество элементов , записанных в b. Int blabla( int *in, int *b , int*c , int n , bool (*f) ( int a ));

  1. Всем привет, мне нужно из файла прочитать две строки и записать их в два отдельных массива. То есть логин и пароль пользователя соответственно. Так как это данные администратора, то они заносятся в файл вручную. Я пытался прочитать таким образом, где proverka1[50] - это переменная для хранения логина, прочитанного из файла, proverka2[50] - для пароля.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 file_admin = fopen("f:\\Visual C++ projects\\Списки!\\Списки!\\PASSWORD ADMIN.txt", "r");     if (file_admin == NULL)         printf("Ошибка открытия файла!\n");     else     {         for (i = 0; i < 2; i++)         {             if (i == 0)             {                 fgets(proverka1, sizeof(login), file_admin);             }             if (i == 1)             {                 fgets(proverka2, sizeof(parol), file_admin);             }         }     }Проблема в данном случае совершенно понятна, первый вызов функции читает слово ADMIN из файла а потом ещё кучу каких-то пробелов, потом второй вызов читает вторую строку и опять же кучу пробелов. Из-за этого при сравнении массивов proverka1 и proverka2 с логином и паролем неправильное. Есть догадки что лишние пробелы берутся из-за sizeof. Видимо он вычисляет размер массива login, который равен 50. Но для функции fgets это ведь не проблема, потому как она читает до символа переноса строки, а получается что прочитывает 50 символов... Сколько не мучался, проблему не решил, получается только, если через пробел данные прочитать из одной строки и записать в один массив. Господа, надеюсь на вашу помощь!

  1. Всем привет, подскажите плиз чайнику как реализовать следующую задачку: пользователь должен ввести дату r (сохраняется в массив), так-же пользователь должен ввести скажем n-число дней (сохраняем в z прибавив к дате из массива r), затем полученную дату z нужно сравнить с текущей датой и если они совпадают или z больше вывести на экран статус Good в противном случае выводить Bad. Я пробовал сделать просто задав временной массив через: int day,mes,god - но все же хотелось более точной и автоматизированной системы расчетов этой самой даты (чтобы не было такого что к 18,02,2016 прибавив 20 дней получаем 38,02,2016 а не 09,03,2016)

  1. Помогите написать программу, содержащую две пользовательские функции объединения строк, эквивалентные стандартной функции strcat, пожалуйста. Первая из них должна использовать индексацию массива, вторая – указатели и арифметические операции с ними.

  1. Добрый вечер, многоуважаемые гуру программирования. Прошу помочь написать одну программу, собственно, вот она: "Написать программу, содержащую две пользовательские функции сравнения строк, эквивалентные стандартной функции strcmp. Первая из них должна использовать индексацию массива, вторая – указатели и арифметические операции с ними." На форуме уже есть похожая тема(Написать функции сравнения строк, эквивалентные стандартной функции strcmp), в ней скинули ссылку на другую тема, в которой есть решение данной задачи, но я, к сожалению, не с мог в ней разобраться. Если кто то может объяснить или знает, как написать эту программу, пожалуйста помогите, буду очень признателен, заранее спасибо.