Пятница, 29 Марта 2024, 09:40

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Форум игроделов » Программирование » C/C++ » Решаем задачки вместе.
Решаем задачки вместе.
PesetsДата: Суббота, 27 Августа 2011, 03:15 | Сообщение # 41
постоянный участник
Сейчас нет на сайте
Пусть num of operations = 100 000. Тогда у тебя создасться 100 000 стеков по 10000 элементов в каждом, ага? 3,8Мб+ оперативки вместо 750Кб лимита.

Добавлено (27.08.2011, 03:15)
---------------------------------------------
Собссно с копии мана по itoa - тык
Quote
Non-standard (i.e. non-ISO C) functions.

Ага? Так что ищем замену)





Сообщение отредактировал Pesets - Суббота, 27 Августа 2011, 03:15
KornivalДата: Суббота, 27 Августа 2011, 03:17 | Сообщение # 42
The Witcher
Сейчас нет на сайте
исправил код, попробуй еще раз.
PesetsДата: Суббота, 27 Августа 2011, 03:19 | Сообщение # 43
постоянный участник
Сейчас нет на сайте
Code
e4ea61d4-503b-40f3-ab98-81ac177b4a26
e4ea61d4-503b-40f3-ab98-81ac177b4a26(80) : warning C4996: 'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _itoa. See online help for details.
         S:\checker\compile\vc10\include\stdlib.h(867) : see declaration of 'itoa'
e4ea61d4-503b-40f3-ab98-81ac177b4a26(102) : warning C4996: 'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _itoa. See online help for details.
         S:\checker\compile\vc10\include\stdlib.h(867) : see declaration of 'itoa'
e4ea61d4-503b-40f3-ab98-81ac177b4a26.obj : error LNK2019: unresolved external symbol _itoa referenced in function "void __cdecl perform_task(void)" (?perform_task@@YAXXZ)
e4ea61d4-503b-40f3-ab98-81ac177b4a26.exe : fatal error LNK1120: 1 unresolved externals

Ну, то, что я писал выше. Функции, которых нет в стандарте, идут лесом.



KornivalДата: Суббота, 27 Августа 2011, 03:21 | Сообщение # 44
The Witcher
Сейчас нет на сайте
ок, исправлю и выолжу код.
PesetsДата: Суббота, 27 Августа 2011, 03:30 | Сообщение # 45
постоянный участник
Сейчас нет на сайте
Ради интереса допилил твой код, попутно убрал еще один баг и отправил тестировщику. Тестировщик сказал, что программа обрушилась по сегфолту на втором же тесте.


KornivalДата: Суббота, 27 Августа 2011, 03:40 | Сообщение # 46
The Witcher
Сейчас нет на сайте
код, исправил, itoa тоже убрал, но лучше сначала протестирую, дай адресс тестировщика
PesetsДата: Суббота, 27 Августа 2011, 03:42 | Сообщение # 47
постоянный участник
Сейчас нет на сайте
http://acm.timus.ru/submit.aspx?space=1&num=1220
Только я хз как там сейчас с регистрацией. И ввод-вывод там не в файлы а в stdin/stdout, но это правится в твоем случае двумя строчками.



KornivalДата: Суббота, 27 Августа 2011, 06:47 | Сообщение # 48
The Witcher
Сейчас нет на сайте
Блин, на 16 тесте рушится из-за нехватки памяти angry
froexДата: Суббота, 27 Августа 2011, 09:39 | Сообщение # 49
Руководитель Froexilize team
Сейчас нет на сайте
Pesets, кстати, такого рода задачи и помогают осмыслить работу гораздо яснее.
Приведу несколько простых задачек. Везде надо выяснить, что будет выведено на экран БЕЗ использования компилятора. Т.е. решить в уме.




Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.


Сообщение отредактировал froex - Суббота, 27 Августа 2011, 09:40
IIIypukДата: Суббота, 27 Августа 2011, 10:25 | Сообщение # 50
-- ArchLinux Fan --
Сейчас нет на сайте
Здравствуйте форумчане!
Нужна помощь в упрощении данного кода, если это возможно:
Code
#include <stdio.h>

int main()
{
   int num = 0, x, y;

   while(num <= 1)
   {
     printf("Enter numer:\n");
     scanf("%d", &num);
     x = num;
   }

   while(x >= 1)
   {
     --x;
     printf("*");
   }

   printf("\n");
   x = num;

   while(x >= 1)
   {
     --x;
     printf("*");
     y = num - 2;
     while(y >= 1)
     {
       --y;
       printf(" ");
     }
     printf("*\n");
   }

   x = num;

   while(x >= 1)
   {
     --x;
     printf("*");
   }

   return(0);
}


Одинокий юзер
froexДата: Суббота, 27 Августа 2011, 11:33 | Сообщение # 51
Руководитель Froexilize team
Сейчас нет на сайте
IIIypuk,
Чтобы квадрат рисовался, вот код:

Чтобы было также, как у тебя:


Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.


Сообщение отредактировал froex - Суббота, 27 Августа 2011, 12:11
DemeronДата: Суббота, 27 Августа 2011, 11:42 | Сообщение # 52
User created in C++
Сейчас нет на сайте
froex, А нельзя
Code

printf("%c", '*');  
else printf("%c", ' ');

Заменить на
Code

printf("*");  
else printf(" ");

???
froexДата: Суббота, 27 Августа 2011, 11:46 | Сообщение # 53
Руководитель Froexilize team
Сейчас нет на сайте
Demeron, можно. Погугли различия.

Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.
IIIypukДата: Суббота, 27 Августа 2011, 12:01 | Сообщение # 54
-- ArchLinux Fan --
Сейчас нет на сайте
froex, за попрошайничество стоило бы не давать...
Ну ладно, лови.


Одинокий юзер
PesetsДата: Суббота, 27 Августа 2011, 12:56 | Сообщение # 55
постоянный участник
Сейчас нет на сайте
Как насчет чего-то в духе:
Code
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
   int x = 0;
   while (x <= 1)
   {
    cin >> x;
   }

   char *buf = new char[x + 1];
   buf[x] = 0;
   memset(buf, '*', x);
     
   cout << buf << endl;

   char *buf2 = new char[x + 2];
   buf2[x + 1] = 0;

   memset(buf2, ' ', x);
   buf2[0] = '*';
   buf2[x - 1] = '*';
   buf2[x] = '\n';

   for (int i=0; i < x; i++)
   {
    cout << buf2;
   }

   cout << buf << endl;

   delete[] buf;
   delete[] buf2;

   return 0;
}

При х=100 работает уже заметно быстрее.





Сообщение отредактировал Pesets - Суббота, 27 Августа 2011, 12:58
froexДата: Суббота, 27 Августа 2011, 13:13 | Сообщение # 56
Руководитель Froexilize team
Сейчас нет на сайте
Pesets, исходя из стиля авора, я посчитал, что писать надо на Си, твой на С++. Я ещё старался не использовать больше переменных, чем у него задано. Твой вариант ещё не компилировал - вечерком проверю быстродействие и память.
Есть несколько видов оптимизации - по используемой памяти, по объему кода, по скорости выполнения и т.п. для каждого из них можно сделать свою оптимизацию. Довольно интересно разбираться в таких вещах.


Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.


Сообщение отредактировал froex - Суббота, 27 Августа 2011, 13:13
PesetsДата: Суббота, 27 Августа 2011, 13:35 | Сообщение # 57
постоянный участник
Сейчас нет на сайте
froex
Прогнал 1ю задачку через компилятор, долго втыкал, почему не 10) Минту через пять только вспомнил, что делает оператор ++. Зачет)
Вторую задачу решил почти правильно, вместо sheep 2001 в третьей строчке написал cat 2001, но это типа невнимательность) Остальное как компилятор сказал.
В третьей задаче написал venus mars venus вместо mars venus venus...
В общем, ты меня сделал... я нубайко)

Добавлено (27.08.2011, 13:30)
---------------------------------------------
Вариант на С:
Code
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()  
{  
    int x = 0;  
    char *buf;
    int i;
    while (x <= 1)  
    {  
   scanf("%d", &x);
    }  

    buf = (char*)malloc(x + 2);
    buf[x] = '\n';  
    buf[x + 1] = 0;
    memset(buf, '*', x);  
       
    fputs(buf, stdout);

    memset(buf, ' ', x);  
    buf[0] = '*';  
    buf[x - 1] = '*';   

    for (i=0; i < x; i++)  
    {  
     fputs(buf, stdout);
    }  

  memset(buf, '*', x);  
  fputs(buf, stdout);

    free(buf);

    return 0;  
}  


Кстати, тут можно обойтись одним буфером, но тогда его надо будет в конце еще раз заполнять. Зато памяти вдвое меньше.

Добавлено (27.08.2011, 13:35)
---------------------------------------------
Упс, че-то я совсем забыл, что в С нету new delete и переменные в начале функции задавать надо. Ща запилю





Сообщение отредактировал Pesets - Суббота, 27 Августа 2011, 13:38
froexДата: Суббота, 27 Августа 2011, 13:38 | Сообщение # 58
Руководитель Froexilize team
Сейчас нет на сайте
Pesets,
Quote (Pesets)
В общем, ты меня сделал... я нубайко)

Все задачи я решил сразу правильно, когда их дали. Первую мне предложили на форуме программистов. Вторые две - это зачётные задачи в университете были.
Я могу попробовать отыскать ещё такие задачи. Кстати, первую задачу даже программист лучше нас вместе взятых не сразу верно решил ))) Зато после решения таких задач сразу осознаёшь, что происходит и как.
Да, надо поискать ещё задачи. Сейчас буду прогонять твои исходники через nemiver. Посмотрим, что покажется.


Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.
PesetsДата: Суббота, 27 Августа 2011, 13:38 | Сообщение # 59
постоянный участник
Сейчас нет на сайте
Запилил. Заодно второй буффер выпилил.


froexДата: Суббота, 27 Августа 2011, 13:40 | Сообщение # 60
Руководитель Froexilize team
Сейчас нет на сайте
Quote (Pesets)
Упс, че-то я совсем забыл, что в С нету new delete и переменные в начале функции задавать надо. Ща запилю

Да, это частая ошибка. Ещё в заголовке оператора for() не объявишь переменных.


Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.
Форум игроделов » Программирование » C/C++ » Решаем задачки вместе.
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг