Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2012, 13:03   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
2 массива, это минус
С чего бы? Все там в порядке.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2012, 14:34   #12
interfeys
Пользователь
 
Регистрация: 31.12.2010
Сообщений: 29
По умолчанию

Если кому-то интересно, вот задачи в количестве 44шт
Код:
Скачать файл тут 
http://tempfile.ru/file/2617980
Сайт автора
http://kpolyakov.narod.ru/
interfeys вне форума Ответить с цитированием
Старый 20.11.2012, 14:39   #13
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Если кому-то интересно
"Иначе ..." забыли.
Abstraction вне форума Ответить с цитированием
Старый 21.11.2012, 19:28   #14
interfeys
Пользователь
 
Регистрация: 31.12.2010
Сообщений: 29
По умолчанию С4-3

//На повторение, тут все хорошо

На вход программы подаются произвольные алфавитно-цифровые символы. Ввод этих символов заканчивается точкой. Требуется написать программу, которая будет печатать последовательность строчных английских букв ('a' 'b'... 'z') из входной последовательности и частот их повторения. Печать должна происходить в алфавитном порядке. Например, пусть на вход подаются следующие символы:
fhb5kbfыshfm.
В этом случае программа должна вывести
b2
f3
h2
kl
ml
s1


Код:
#include<stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
    char s[255]; //Все-таки, если кто-то целый документ хочет подсчитать?
    int abc[128]={0};
    gets(s);
    int g=0;
    for(int i=0;s[i]!='.';i++)
    {
        g=tolower(s[i]);
        if(isalpha(g))
            abc[g]++;
    }
    for(int f='a';f<='z';f++)
    {
        if(abc[f]!=0)
        {
            putchar(f);
            printf(" %d\n", abc[f]);
        }
    }
}
interfeys вне форума Ответить с цитированием
Старый 21.11.2012, 19:30   #15
interfeys
Пользователь
 
Регистрация: 31.12.2010
Сообщений: 29
По умолчанию С4-4

На вход программы подаются фамилии и имена учеников. Известно, что общее количество учеников не превосходит 100. В первой строке вводится количество учеников, принимавших участие в соревнованиях, N. Далее следуют N строк, имеющих следующий формат:
<Фамилия> <Имя>
Здесь <Фамилия> – строка, состоящая не более чем из 20 символов; <Имя> – строка, состоящая не более чем из 15 символов. При этом <Фамилия> и <Имя> разделены одним пробелом. Примеры входных строк:
Иванова Мария
Петров Сергей
Требуется написать программу, которая формирует и печатает уникальный логин для каждого ученика по следующему правилу: если фамилия встречается первый раз, то логин – это данная фамилия, если фамилия встречается второй раз, то логин – это фамилия, в конец которой приписывается число 2 и т.д. Например, для входной последовательности
Иванова Мария
Петров Сергей
Бойцова Екатерина
Петров Иван
Иванова Наташа
будут сформированы следующие логины:
Иванова
Петров
Бойцова
Петров2
Иванова2

Код:
#include<stdio.h>
#include <string.h>
struct info{
   char fam[20];
   char name[15];
};
int main(void)
{
    info arr[100];
    int N, e=0;
    scanf("%d",&N);
    for(int i=0;i<N;i++)
       scanf("%s %s",&arr[i].fam,&arr[i].name);
    for(int j=0;j<N;j++)
    {
        for(int z=0;z<j;z++) //Сложность O(N^2) 
        {
            if(0==strcmp(arr[j].fam,arr[z].fam))
               e++;
        }
        if(e==0) //Вот без этого возможно обойтись ?
            printf("%s\n",arr[j].fam);
        else
            printf("%s%d\n",arr[j].fam,e+1); 
        e=0;
    }
    scanf("%d",&N);
    
}

Последний раз редактировалось interfeys; 21.11.2012 в 19:33.
interfeys вне форума Ответить с цитированием
Старый 21.11.2012, 19:31   #16
interfeys
Пользователь
 
Регистрация: 31.12.2010
Сообщений: 29
По умолчанию С4-5

На городской олимпиаде по информатике участникам было предложено выполнить 3 задания, каждое из которых оценивалось по 25-балльной шкале. Известно, что общее количество участников первого тура олимпиады не превосходит 250 человек. На вход программы подаются сведения о результатах олимпиады. В первой строке вводится количество участников N. Далее следуют N строк, имеющих следующий формат:
<Фамилия> <Имя> <Баллы>
Здесь <Фамилия> – строка, состоящая не более чем из 20 символов; <Имя> – строка, состоящая не более чем из 15 символов; <Баллы> – строка, содержащая три целых числа, разделенных пробелом, соответствующих баллам, полученным участником за каждое задание первого тура. При этом <Фамилия> и <Имя>, <Имя> и <Баллы> разделены одним пробелом. Примеры входных строк:
Петрова Ольга 25 18 16
Калиниченко Иван 14 19 15
Напишите программу, которая будет выводить на экран фамилию и имя участника, набравшего максимальное количество баллов. Если среди остальных участников есть ученики, набравшие такое же количество баллов, то их фамилии и имена также следует вывести. При этом имена и фамилии можно выводить в произвольном порядке.

Код:
#include<stdio.h>
struct info{
       char fam[20];
       char name[15];
       int ball;};
int main(void)
{
    int N,x,y,z, max=0;
    info arr[250];
    scanf("%d",&N);
    for(int i=0;i<N;i++)
    {
        scanf("%s %s %d %d %d", &arr[i].fam,&arr[i].name,&x,&y,&z);
        arr[i].ball=x+z+y;
        if(arr[i].ball>max)
           max=arr[i].ball;
    }
    for(int h=0;h<N;h++)
    {
       if(arr[h].ball=max)
          printf("%s %s\n", arr[h].fam,arr[h].name);
    }
}
interfeys вне форума Ответить с цитированием
Старый 23.11.2012, 14:53   #17
interfeys
Пользователь
 
Регистрация: 31.12.2010
Сообщений: 29
По умолчанию

Нашел способ исправить проблему 255 символов

Код:
char s[255]; 
gets(s);
Заменить на
Код:
while(1)
   {
      c[0]=getchar();
         if(c[0]=='.')
            break;
         a[c[0]-'0']++;
   }
И тогда можно вводить строку любой длины.
interfeys вне форума Ответить с цитированием
Старый 23.11.2012, 15:29   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
a[c[0]-'0']++
С русскими символами скорее всего будет облом при таком методе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.11.2012, 13:47   #19
interfeys
Пользователь
 
Регистрация: 31.12.2010
Сообщений: 29
По умолчанию

В командных олимпиадах по программированию для решения предлагается не больше 11 задач. Команда может решать предложенные задачи в любом порядке. Подготовленные решения команда посылает в единую проверяющую систему соревнований. Вам предлагается написать эффективную, в том числе по используемой памяти, программу, которая будет статистически обрабатывать пришедшие запросы, чтобы определить наиболее популярные задачи. Следует учитывать, что количество запросов в списке может быть очень велико, так как многие соревнования проходят с использованием Интернет.
Перед текстом программы кратко опишите используемый вами алгоритмрешения задачи.
На вход программе в первой строке подаётся количество пришедших запросов N. В каждой из последующих N строк записано название задачи в виде текстовой строки. Длина строки не превосходит 100 символов, название может содержать буквы, цифры, пробелы и знаки препинания.
Пример входных данных:
6
А+B
Крестики-Нолики
Прямоугольник
Простой делитель
А+В
Простой делитель


Программа должна вывести список из трёх наиболее популярных задач с указанием количества запросов по ним. Если в запросах упоминаются менее трех задач, то выведите информацию об имеющихся задачах. Если несколько задач имеют ту же частоту встречаемости, что и третья по частоте встречаемости задача, их тоже нужно вывести.
Пример выходных данных для приведённого выше примера входных данных:
А+В 2
Простой делитель 2
Крестики-Нолики 1
Прямоугольник 1

Код:
#include <stdio.h>
#include <string.h>
#include <alloc.h>   
/*DevC++ не стал компилить*/
/*C:\Dev-Cpp\include\c++\3.4.2\backward\alloc.h:46
 #warning This file includes at least one deprecated or antiquated header.
 Please consider using one of the 32 headers found in section 17.4.1.2 of the
 C++ standard. Examples include substituting the <X> header for the <X.h>
 header for C++ includes, or <iostream> instead of the deprecated header
 <iostream.h>. To disable this warning use -Wno-deprecated.*/
/* В С же нет <iostream.h>?*/
#include <conio.h>
void main()
{
   int i,j,numRazZad,n,t;
   int count[12];
   char *str=(char *)malloc(101);        //Для чего эта магия, разве нельзя было использовать просто Массив?
   char **names=(char**)malloc(13);  // 13? Это что-то вроде конструктивной бесконечности?
   numRazZad=0;
   scanf("%d\n",&n);
   for(i=1;i<(n+1);i++){
     gets(str);
       j=1;
       while((j<=numRazZad)&&(strcmp(names[j],str)!=0)){
         j++;
       }
       if(j<=numRazZad)
         count[j]=count[j]+1;
       else{
         strcpy(names[j],str);
         count[j]=1;
         numRazZad=numRazZad+1;
       }
   }
    for(i=numRazZad;i>1;i--){
      for(j=2;j<(i+1);j++){
        if(count[j-1]<count[j]){
          t=count[j];
          count[j]=count[j-1];
          count[j-1]=t;
          strcpy(str,names[j]);
          strcpy(names[j],names[j-1]);
          strcpy(names[j-1],str);
        }
      }
    }
    if(numRazZad>=3) j=3;
    else j=numRazZad;
    i=1;
    printf("\n");
    while((i<=numRazZad)&&(count[i]>=count[j])){
      printf("%s %d\n",names[i],count[i]);
      i++;
    }
    for(i=0;i<13;i++){
      free(names[i]);
      free(names);
    }
    free(str);
   getch();
}
interfeys вне форума Ответить с цитированием
Старый 29.11.2012, 14:10   #20
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Возможно, Вам следовало бы яснее задать вопрос.
Цитата:
Please consider using one of the 32 headers found in section 17.4.1.2 of the
C++ standard.
Перевод: "Пожалуйста, используйте заголовочные файлы, указанные в разделе 17.4.1.2 стандарта C++."
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подготовка к егэ - C1, с2, с4 VaMpIR1111 Помощь студентам 2 12.04.2011 19:51
ЕГЭ часть В Xcopy Помощь студентам 8 24.02.2010 21:00
ЕГЭ (Логика) Xcopy Помощь студентам 6 07.02.2010 18:59
ЕГЭ Xcopy Помощь студентам 6 05.02.2010 14:44