1 Востаннє редагувалося reywwe95 (24.02.2013 19:51:59)

Тема: рядки

допоможіть   с 7  варінтом  жодних  ідей 
ввести рядки s1   та  s2   другу  половину  s2  зєднати    з першою половиною s1 в  отриманому рядку  порахувати кількість  0

2

Re: рядки

http://smotr.im/cSF2

Re: рядки

reywwe95 написав:

допоможіть   с 7  варінтом  жодних  ідей

Потрібно с чи с++ ?
Обмеження у довжині рядків якісь мають бути ?

4

Re: рядки

без різниці       але    бажано  пояснити  мені    ні   обмежень  немає

5

Re: рядки

А який у вас рівень знання С/С++ на даний момент, reywwe95?
Від цього залежить, яким методом ліпше реалізувати задачу.

З.І: мається на увазі: чи вчили string-клас, чи є темним лісом функції strcpy(), strcat() і т.п., тощо.

6

Re: рядки

бажанно  найростішим

7

Re: рядки

strcpy(), strcat() теоритично  знаю як  працюють ці  функціії

8

Re: рядки

#include "conio.h"
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s, tmp, tmp2;
    char s1[255], s2[255];
    int nulls = 0;

    cout<<"Vvedite s1: ";
    cin.getline(s1,255);
    cout<<"Vvedite s2: ";
    cin.getline(s2,255);

    s = s1; // Переводим char[] в строчку
    tmp = s.substr(0, s.length()/2); // Обрезаем вторую часть строки s1
    s = s2; // Переводим char[] в строчку
    tmp2 = s.substr(s.length()/2, s.find("\n")); // Обрезаем первую часть строки s2

    s = tmp + tmp2; // Соединяем две части

    for (int i = 0; i < s.length()-1; i++) // Цикл для каждого символа в получившейся строке
    {
        if (s[i] == '0') { nulls++; } // Если попавшийся символ 0, то инкременируем переменную nulls
    }

    strcpy(s1, s.c_str()); // Переводим из строки в char[]

    cout<<"\n--------------------------------\n";
    cout<<"Poluchennaya stroka: "<<s1<<"\n";
    cout<<"Kolichestvo nuley: "<<nulls;

    getch();
    return 0;
}

мучився   довго  може   кому знадобиться

9

Re: рядки

Вітаю - ви демонструєте добрі показники. :)

Якщо цікаво - от ще можливі шляхи:

    s = s1; // Переводим char[] в строчку
    tmp = s.substr(0, s.length()/2);
    s = s2; // Переводим char[] в строчку
    tmp += s.substr(s.length()/2, s.find("\n"));

Або взагалі закрутити хіромантію:

string s1, s2;

std::getline(cin, s1);
std::getline(cin, s2);
s1 = s1.substr(0, s1.length()/2) + s2.substr(s2.length()/2);

cout<<s1<<endl;

10

Re: рядки

Для підрахування кількості нулів у рядку можна також застосувати можливості STL:

/*...*/
#include <algorithm>
int main()
{
string s1, s2;
/*...*/
cout<<"Count of zero: "<<std::count(s1.begin(), s1.end(), '0')<<endl;
/*...*/
return 0;
}

11 Востаннє редагувалося ADR (25.02.2013 00:42:07)

Re: рядки

чесно кажучи я не розумію в чому така велика проблема)

C/C++ не знаю. От придклад на тому що знаю: (правда троха пізно... вже є відповіді по темі)
(можливо десь треба було поставити +1 чи -1)
Пайтон:

a = str(raw_input())
b = str(raw_input())
c = b[len(b)/2:] + a[:len(a)/2]
        
print c
print c.count('0')

Паскаль/Делфі:

function ZeroCount(a, b: string): integer;
var
  c: string;
  i: Integer;
begin
  c := Copy(b, 1, Length(a) div 2) 
     + Copy(a, Length(a) div 2, MaxInt);
  
  Result := 0;
  for i := 1 to Length(c) -1 do
    if c[i] = '0' then
      Inc(Result);
end;