Тема: рядки
допоможіть   с 7  варінтом  жодних  ідей  
ввести рядки s1   та  s2   другу  половину  s2  зєднати    з першою половиною s1 в  отриманому рядку  порахувати кількість  0
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → рядки
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
допоможіть   с 7  варінтом  жодних  ідей  
ввести рядки s1   та  s2   другу  половину  s2  зєднати    з першою половиною s1 в  отриманому рядку  порахувати кількість  0
допоможіть с 7 варінтом жодних ідей
Потрібно с чи с++ ?
Обмеження у довжині рядків якісь мають бути ?
А який у вас рівень знання С/С++ на даний момент, reywwe95?
Від цього залежить, яким методом ліпше реалізувати задачу.
З.І: мається на увазі: чи вчили string-клас, чи є темним лісом функції strcpy(), strcat() і т.п., тощо.
#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;
}мучився довго може кому знадобиться
Вітаю - ви демонструєте добрі показники. 
Якщо цікаво - от ще можливі шляхи:
    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;Для підрахування кількості нулів у рядку можна також застосувати можливості STL:
/*...*/
#include <algorithm>
int main()
{
string s1, s2;
/*...*/
cout<<"Count of zero: "<<std::count(s1.begin(), s1.end(), '0')<<endl;
/*...*/
return 0;
}чесно кажучи я не розумію в чому така велика проблема)
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;Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися