Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск в одномерном массиве

17K
08 мая 2006 года
Saruwatari
5 / / 08.05.2006
Всем доброе время суток. Мне очень нужна Ваша помощь в решении одной задачки. Буду очччень благодарен всем тем, кто мне поможет.

Составить программу, в которой составляется массив C[1..100] из псевдослучайных символов из диапазона CHR(65)-CHR(90) и определить, какие символы встречаются в этом массиве 2, 3 или 4 раза.

Если что - с меня пиво :)
242
08 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Saruwatari
Всем доброе время суток. Мне очень нужна Ваша помощь в решении одной задачки. Буду очччень благодарен всем тем, кто мне поможет.

Составить программу, в которой составляется массив C[1..100] из псевдослучайных символов из диапазона CHR(65)-CHR(90) и определить, какие символы встречаются в этом массиве 2, 3 или 4 раза.

Если что - с меня пиво :)



для начала с тебя код который можешь написать+язык на котором тебе нужно написать :)
обычно для таких прог удобно использовать массив счетчик

243
08 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by OlgaKr
для начала с тебя код который можешь написать+язык на котором тебе нужно написать :)
обычно для таких прог удобно использовать массив счетчик


Ставлю свой старый тапок, на то, что язык - Паскаль.
Но суть в другом - что то я в не понял, что за "массив счетчик"?

242
08 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by pacific_7
Ставлю свой старый тапок, на то, что язык - Паскаль.
Но суть в другом - что то я в не понял, что за "массив счетчик"?


так зачем мне твой старый тапок что бы отвечать, ты ченибудь посерьезней предложи

243
08 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by OlgaKr
так зачем мне твой старый тапок что бы отвечать, ты ченибудь посерьезней предложи


Писать за студента? Нееее....когда. Тапок то тебе не зачем. Меня заинтересовал "массив счетчи" - я тебя про него и спросил. А ты не колешься.

242
08 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by pacific_7
Писать за студента? Нееее....когда. Тапок то тебе не зачем. Меня заинтересовал "массив счетчи" - я тебя про него и спросил. А ты не колешься.



Учитывая что у меня должек - колюсь :), и тапочек не надо, себе оставь

Код:
#include <stdio.h>
 
int main(void)
{
    int i, counter[26] = {0};
    char str[] = "ABBTYUEWWFDSCBAAMR";
 
    for( i = 0; str != '\0'; i++)
        counter[str-'A']++;
 
 
    for( i = 0; i < 26; i++)
        printf("%3c - %d\n\n", (i+'A'), counter);
    return 0;
}
243
08 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by OlgaKr
Учитывая что у меня должек - колюсь :), и тапочек не надо, себе оставь
Код:
#include <stdio.h>
 
int main(void)
{
   int i, counter[26] = {0};
   char str[] = "ABBTYUEWWFDSCBAAMR";
 
   for( i = 0; str != '\0'; i++)
       counter[str-'A']++;
 
 
   for( i = 0; i < 26; i++)
       printf("%3C - %d\n\n", (i+'A'), counter);
   return 0;
}


Ясно. Я бы по другому сделал.

242
08 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by pacific_7
Ясно. Я бы по другому сделал.



Так поделись, если не жалко

1.8K
08 мая 2006 года
LastSoul
279 / / 28.12.2005
У кого там тапок лишний есть, дайте мне...

Не будем отвлекаться от темы...
Pascal:
 
Код:
Var i:Integer;
    A:Array [65..90] Of Integer;
...
 Randomize;
 For i:=1 To 100 Do Inc(A[Random(25)+65]);
 For i:=65 To 90 Do If (A>1) And (A<5) Then Write(Chr(i),' ');
...
17K
08 мая 2006 года
Saruwatari
5 / / 08.05.2006
[quote=OlgaKr]для начала с тебя код который можешь написать+язык на котором тебе нужно написать
обычно для таких прог удобно использовать массив счетчик[/quote]

Ой, прошу прощения... Borland С++.

[quote=pacific_7]Писать за студента? Нееее....когда.[/quote]

Да, Вы в принцыпе правы, на кой, мол, я должен мучаться, ничего не получая в замен. Но просто мне нужна помощь, вот и все. Не помогать - ваше право. Моя прога, по сути, не отличается сложностью, я попросту не могу понять алгоритм поиска ...

Спасибо OlgaKr за помощь, но что-то тут не то. На экран выводится какая-то чертовщина...

Давайте будем отталкиваться от следующего. Вот на экран выводиться одномерный массив из 100 элементов ( меня только на это и хватило :D...)

Код:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#define col 100 // Количество элементов в массиве
main ()
{
 clrscr ();
 randomize ();
 char a[col];
 int i;
 for (i=0; i<col; i++)
{
 a=65+random(25);
 cout <<" " << a;
}
  getch ();
}


В результате на экране появится типа
----------------------
ABFIEJDFDFAS ну и т.д.
----------------------

А вот алгоритм поиска у меня и не выходит. На экране должно быть что-то вроде этого :

------------------------------------
Такие-то символы повторяются 4 раза
такие-то только 3
А вот такие-то всего-лишь 2
------------------------------------

P.S. Как правильно тут у вас оформлять цитаты?
243
08 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Saruwatari
Да, Вы в принцыпе правы,


Ой, ну не надо такого официоза! Можно и на "ты".

Цитата:
Originally posted by Saruwatari
Моя прога, по сути, не отличается сложностью, я попросту не могу понять алгоритм поиска ...


Какая конкретно строчка из того, что написала тебе Ольга, не ясна?

Цитата:
Originally posted by Saruwatari

Спасибо OlgaKr за помощь, но что-то тут не то. На экран выводится какая-то чертовщина...


Да ладно тебе! Всё правильно выводится. Только думали, что ты сам доделаешь, но ты какой-то нерешительный.
В общем, тебе повезло - у меня сегодня хорошее очень настроение создалось после того как вздремнул. Наверное от того, что сон приснился хороший :)
Держи, совместная сборка твоего и Олиного решения. С небольшими патчами от меня:

Код:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#define COUNT   1000

int main(void)
{
    char a[COUNT];
    int i;
    for (i=0; i<COUNT; i++)
    {
        a=65+(rand()%26);
        printf("%c|%d ",a,a);
    }
    getch ();
     
    int counter[26] = {0};
    for( i = 0; a != '\0'; i++)
    counter[a-'A']++;
    printf("\nSummary:\n");
    for( i = 0; i < 26; i++)
        if(counter)printf("%3C - %d\n\n", (i+'A'), counter);
    return 0;
}

Если чего-то недопонял - спрашивай.
ЗЫ По поводу цитат - посмотри как они автоматом оформляются когда нажимаешь ссылку "ответить".
17K
09 мая 2006 года
Saruwatari
5 / / 08.05.2006
Цитата:
Originally posted by pacific_7
Ой, ну не надо такого официоза! Можно и на "ты".



ОК, wharever you say.

Цитата:
Originally posted by pacific_7
Если чего-то недопонял - спрашивай.



Мне непонятен результат того, что выводиться на экран ( здесь кол-во элементов для наглядности сделал равным 10:

243
09 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Saruwatari
Мне непонятен результат того, что выводиться на экран ( здесь кол-во элементов для наглядности сделал равным 10:


Блин, хорошую ты траву куришь :) Как ты добился такого результата? Я специально для тебя в билдере пересобрал пример. Вот что получилось:

17K
09 мая 2006 года
Saruwatari
5 / / 08.05.2006
Цитата:
Originally posted by pacific_7
Блин, хорошую ты траву куришь



Моя анаша называется С++ 3.1
К сожаленью, CBuilder'a нет. В чем у меня обшибка?

243
09 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Saruwatari
Моя анаша называется С++ 3.1
К сожаленью, CBuilder'a нет. В чем у меня обшибка?


Ты точно функцией printf() выводишь эту информацию? Потому что бред какой-то получается. Почему-то она как будто бы не понимает стандартные спецификаторы, и вместо того, что бы вывести аргументы согласно этим спецификаторам, выводит сами спецификаторы. Бред. Совет - найди нормальный компилятор. Хотя бы VC++ 6.0

242
09 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Saruwatari
Моя анаша называется С++ 3.1
К сожаленью, CBuilder'a нет. В чем у меня обшибка?



переделай вывод как принято в С++
%С - вывод символа(на 3 не обращай внимание)
%d - вывод целого числа
printf() - функция вывода

9.4K
09 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by Saruwatari
... На экране должно быть что-то вроде этого :
------------------------------------
Такие-то символы повторяются 4 раза
такие-то только 3
А вот такие-то всего-лишь 2
------------------------------------


Код:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#define COUNT   100

int compare(const void *arg1, const void *arg2)
{
  if((*(int *)arg1&0xFFFF0000)==(*(int *)arg2&0xFFFF0000))
    return (*(int *)arg1&0xFFFF) - (*(int *)arg2&0xFFFF);
  else
    return *(int *)arg2 - *(int *)arg1;
}

int main(void)
{
  char a[COUNT];
  int i;
  for (i=0; i<COUNT; i++)
  {
    if(i%10==0)printf("\n");
    a=65+(rand()%26);
    printf("%c|%4d ",a, i);
  }
  getch ();
     
  int counter[26]={0};

  for(i=0;i<COUNT;i++)
    counter[a-'A']++;

  for(i=0;i<COUNT;i++)
    counter = (counter<<16) + i;

  qsort(counter, 26, sizeof(int), compare);

  printf("\n-----------------------------------------------------");

  int n = -1;
  for(i=0;i<26;i++)
  {
    int j = (counter&0xFFFF0000)>>16;
    if(j==0)break;
    if(j!=n)
    {
      n = j;
      printf("\npovtorjajutsza %3d raz: ", n);    
    }
    printf("%3C", 'A' + counter&0xFFFF);
  }
  printf("\n-----------------------------------------------------\n");
  getch();
  return 0;
}
17K
09 мая 2006 года
Saruwatari
5 / / 08.05.2006
Цитата:
Originally posted by OlgaKr
переделай вывод как принято в С++
%С - вывод символа(на 3 не обращай внимание)
%d - вывод целого числа
printf() - функция вывода



%с, а не %С - с маленькой буквы надо было писать. Теперь все вроде работает. Фух... Всем аригато годзаимас!!!

243
09 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by _nоrth_
Код:
for(i=0;i<COUNT;i++)
    counter = (counter<<16) + i;

  qsort(counter, 26, sizeof(int), compare);

  printf("\n-----------------------------------------------------");

  int n = -1;
  for(i=0;i<26;i++)
  {
    int j = (counter&0xFFFF0000)>>16;
    if(j==0)break;
    if(j!=n)
    {
      n = j;
      printf("\npovtorjajutsza %3d raz: ", n);    
    }
    printf("%3C", 'A' + counter&0xFFFF);
  }
  printf("\n-----------------------------------------------------\n");
  getch();
  return 0;
}


И для чего необходим этот кусок?

242
09 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Saruwatari
%с, а не %С - с маленькой буквы надо было писать. Теперь все вроде работает. Фух... Всем аригато годзаимас!!!



а в С 6.0 это нормально: %С :)

243
09 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Saruwatari
%с, а не %С - с маленькой буквы надо было писать. Теперь все вроде работает. Фух... Всем аригато годзаимас!!!


Почему то мне так и казалось, но решил не спорить с некоторыми :) А в доку лень лезть было.
Но всё равно компилер у тебя убогий. Почему он второе число не выводил?

242
09 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by pacific_7
Почему то мне так и казалось, но решил не спорить с некоторыми ...


ну так ясно дело, ведь ты спорить не любишь :)

9.4K
09 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by pacific_7
И для чего необходим этот кусок?

Чтоб вывод имел вид:
----------------------------------
povtorjajutsza 8 raz : F
povtorjajutsza 6 raz : K N R S Y
povtorjajutsza 5 raz : C E G P V X
...
...
----------------------------------

243
09 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by _nоrth_
Чтоб вывод имел вид:


Скажем так, это не задумано ТЗ - это раз. И студентам обычно не разрешают использовать библиотечные функции сортировки. Это два.

9.4K
09 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by pacific_7
Скажем так, это не задумано ТЗ - это раз.


Цитата:
Originally posted by Saruwatari
...А вот алгоритм поиска у меня и не выходит. На экране должно быть что-то вроде этого :[color=red]

------------------------------------
Такие-то символы повторяются 4 раза
такие-то только 3
А вот такие-то всего-лишь 2
------------------------------------

[/color]

Цитата:
Originally posted by pacific_7
И студентам обычно не разрешают использовать библиотечные функции сортировки. Это два.

можно и без qsort().

243
09 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Видимо каждый понял это по своему.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог