Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Работа со строками.. по идее элементарная задача


Автор: bubnoplyass 22.10.2007, 16:22
Народ плиз помогите.. а то я себя уже замучал ... Задача не сложная  а решить не могу(
вот часть задачи: Нужно из строки удалить все нули например если мы ввели строку 1020401002 то должно получиться 12412 .  

Вот мой вариант решения но он не верный я даже не понимаю почему если не щитать что там цикл лишний раз прокручивается(зависит от количества нулей) то должно работать но не работает(
Код


#include<stdio.h>
#include<conio.h>
#include<string.h>



 main()
 {
  char a[100];
  char b[100];
  int n=0,k,i;
  clrscr();
  printf("Vvedite stroku\n");
  gets(a);
  k=strlen(a);

   {
  for (i=0;i<k;i++)

  {
   if (a[i]!='0')
   

   b[i]=a[i];
   

  
    }
   }


 printf("%s",b);
 getch ();

 return 0;

}





зарание  СПАСИБО!!!

Автор: Lazin 22.10.2007, 16:37
У тебя символы в строку b, копировались в те-же позиции что и в исходной строке, помимо, в конец строки b не добавлялся 0
Код

#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
    char a[100];
    char b[100];
    int n=0,k,i;
    //clrscr();
    printf("Vvedite stroku\n");
    gets(a);
    k=strlen(a);
    int pos = 0;
    {
        for (i=0;i<k;i++)
        {
            if (a[i]!='0')
            {
                b[pos++]=a[i];
            }

        }
    }
    b[pos] = '\0';
    printf("%s",b);
    getch ();
    return 0;
}

Автор: FREEDEV 22.10.2007, 16:45
буквально недавно был похожий вопрос:
http://forum.vingrad.ru/topic-177469.html

вот код для твоего варианта

Код

#include <iostream>
#include <algorithm>
#include <string>
#include <conio.h>
            
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    string s1 = "1020401002"; 
    while(s1.erase(find(s1.begin(),s1.end(),'0')) != s1.end());
    cout << s1 << endl;
    getch();
    
    return 0;
}

Автор: bubnoplyass 22.10.2007, 17:39
Большое спасибо) всё работает ) smile 

Автор: Vyacheslav 23.10.2007, 12:00
Цитата(FREEDEV @  22.10.2007,  16:45 Найти цитируемый пост)
буквально недавно был похожий вопрос:
http://forum.vingrad.ru/topic-177469.html

вот код для твоего варианта

Я конечно извиняюсь, но раз  в задаче разрешено использовать stl,то почему бы не использовать его в полной мере, не заморачиваясь с циклом
Код

#include <iostream>
#include <algorithm>
#include <string>
#include <conio.h>
            
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    string s1 = "1020401002"; 
    s1.erase(remove(s1.begin(),s1.end(),'0'), s1.end());
    cout << s1 << endl;
    getch();
    
    return 0;
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)