Помогите новечку

  • Автор темы kyCa4ka
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

kyCa4ka

#1
Вобщем пацаны дело такое надо написать прогу на си, а язык я начал изучать недавно может чем поможите пожалуйста вот задачка:

Ввести строку и определить все входящие в неё символы. Например: строка «abccbbbabba» состоит из символов «а», «Ь» и «с». Результат вы-вести на экран. Стандартных функций работы со строками не использо-вать.

З.Ы. зарание благодарен всем откликнувшимся и сори за детские вопросы.. :blink:
 
P

pushkin

#2
Прогу писать тут никто не будет, ибо это вообще азы, а на мысль навести попробую:
  1. Ввести строку с клавиатуры при помощи gets и запомнить ее в переменной-массиве (например, char str[1024])
  2. Определить длину строки вызовом функции strlen(str) и запомнить в переменной len
  3. Отсортировать символы в строке по возрастанию, работая со строкой как с массивом переменных типа char (можно воспользовать методом пузырька - см. google)
  4. А дальше уже дело техники - все повторяющиеся символы в строке будут находиться рядом
З. Ы. Наверное, не стоит обращаться к программистам словом "патсаны", тут же есть люди и постарше, которым было бы неприятно услышать такое к себе обращение. Честно признаться, я именно поэтому сразу вообще пропустил твое сообщение, но потом у меня возникло чувство жалости к человеку (сродни жалости к маленикой замерзающей на улице голодной собаченке), который не может написать такую простую программу и из-за этого ему, наверняка, грозит длинный зачет (точнее незачет) по информатике на первом курсе (я угадал?). Если нужно, афтар, пешы исчо - могу тут привести программу целиком.
 
K

kyCa4ka

#3
пацаны - это образное выражение если обидил сори, а насчёт проги то я уже написал прикинь!
посотри вроде всё путём:
Код:
#include <stdio.h>
main()
{
int i,a[255]={0};
char str[1000];
gets(str);
for(i=0;str[i];i++) a[str[i]]++;
for(i=0;i<255;i++)
if(a[i]) printf("%c %d\n",(char)i,a[i] );
getchar();
return 0;
}
зы. у меня работоет
 
6

62316e

#5
Для: pushkin
Да, тоже нормальное решение smile.gif
Вместо того что бы на "мысли наводить" и писать мемуары проще было 8-15 строчек кода накидать. Решение нормальное но вот рузультат может быть не предсказуем.
Для: kyCa4ka
Код:
char str[1000];
gets(str)
Плохой тон. Проверь сам: введи больше 1000 символов и увидиш что будет или если повезет то не будет<_< Или ты уверен на все 100% что кто-то будет вводить 1000 символов?
 
K

kyCa4ka

#7
Для: 62316e
<!--QuoteBegin-62316e+10:11:2006, 18:12 -->
<span class="vbquote">(62316e @ 10:11:2006, 18:12 )</span><!--QuoteEBegin-->Для: pushkin
Цитата
Да, тоже нормальное решение smile.gif
Вместо того что бы на "мысли наводить" и писать мемуары проще было 8-15 строчек кода накидать.
[snapback]47687" rel="nofollow" target="_blank[/snapback]​
[/quote]
даты прав лучше помоч чем дбаты тут устраивать <_<
 
Z

zausb

#8
Может и мне поможите нужно в консольном приложении написать программу , которая после ввода некоторого текста , выводит все разные слова т.е. повторные слова не печатает.Во внимание прописные и строчные буквы не принимать.
 
C

Creo

#9
Может и мне поможите нужно в консольном приложении написать программу , которая после ввода некоторого текста , выводит все разные слова т.е. повторные слова не печатает.Во внимание прописные и строчные буквы не принимать.
Если на С++, то
Код:
#include <map>
#include <iostream>
#include <string>
int main (void)
{
string str;
map<string,int> count;

while(cin>>s) 
{
for (int i=0; i<s.size(); i++) 
{ 
s[i]=tolower(s[i]);
}
++count[s];
}
for (map<string, int>::const_iterator it = counters.begin(); it != counters.end(); ++it) 
{ 
cout << it->first << "\t" << it->second << endl; 
} 
return 0; 
}
Чтобы прекратить ввод жми Ctrl+Z
 
Статус
Закрыто для дальнейших ответов.