Воскресенье, 03 Августа 2025, 21:01

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
vasua99Дата: Воскресенье, 14 Октября 2012, 12:45 | Сообщение # 321 | Тема: Покоментируйте код)
GNU follower
Сейчас нет на сайте
После выходного думаю добавлю интерактивный режим помимо параметровно(ну который сейчас) + поиск по части имена и телефона) и посмотрю что еще можно сделать...

Добавлено (14.10.2012, 12:45)
---------------------------------------------
Наверное небольшой рефакторинг сделаю))


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Суббота, 13 Октября 2012, 15:29 | Сообщение # 322 | Тема: Покоментируйте код)
GNU follower
Сейчас нет на сайте
насчет пустых параметров - уже вчера сам заметил и исправлил

Добавлено (13.10.2012, 15:29)
---------------------------------------------
исправил баги вроде)


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Пятница, 12 Октября 2012, 21:10 | Сообщение # 323 | Тема: Покоментируйте код)
GNU follower
Сейчас нет на сайте
хех, я уже разобрался - меня сейчас интересуют 2 вещи - utf-8 в виндовской консоле и tolower() для юникода(двухбайтового)

Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Пятница, 12 Октября 2012, 20:23 | Сообщение # 324 | Тема: Покоментируйте код)
GNU follower
Сейчас нет на сайте
я тоже самое заметил, только не пойму почему - пробовал и кодовую страницу менять и setlocale()

может потому что у меня исходники(файлы) в UTF-8?

Добавлено (12.10.2012, 18:47)
---------------------------------------------
Опять мне нужна помощь - есть 2 функции:

Code

// приводим строку str к нижнему регистру, сохраняем ее в dest, и возвращаем указатель на него
char *tolower_str(char *str, char *dest) {
  char *tmp = dest;
  for(; *str; *tmp = tolower(*str), str++, tmp++);
  if(*(str - 1) == '\n')
   *(tmp - 1) = '\0';
  return dest;
}

// сравнение без учета регистра
int unregister_strcmp(char *s1, char *s2) {
  char *tmp1 = calloc(64, sizeof(char));
  char *tmp2 = calloc(64, sizeof(char));
  tolower_str(s1, tmp1);
  tolower_str(s2, tmp2);
  printf("s1 = %s\ns2 = %s\n", tmp1, tmp2);
  int i = strcmp(tmp1, tmp2);
  free(tmp1), free(tmp2);
  return i;
}


Но при вызове:
Code

int i = unregister_strcmp("Привет", "ПриВеТ");


Code

i > 0

Значит, строка при вызове функции tolower_str() не меняется!
Простестировав его "внутрипрограмным" отладчиком - оказалось что так на самом деле, но почему?

Добавлено (12.10.2012, 18:58)
---------------------------------------------
при этом такое только с русскими символами

Добавлено (12.10.2012, 20:23)
---------------------------------------------
решил пока не заходить дальше, т.к с кодировками проблема.

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


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Четверг, 11 Октября 2012, 22:44 | Сообщение # 325 | Тема: Покоментируйте код)
GNU follower
Сейчас нет на сайте
ну мне это надо на конкурс по программированию и времени мало, поэтому писал - как мысли в голову приходили, позже перепишу с использованием односвязного списка может быть)

и еще вопрос - как платформо-независимо очистить файл от данных, а то в результате моей очистки и записи получается что то вроде этого, что не очень приятно:

Добавлено (11.10.2012, 21:21)
---------------------------------------------
хех, после исправление небольшой другой ошибки(при добавлении нового элемента в БД он писался в одной строке с другим) баг исправлся сам как то)

Есть желающие потестить программу?просто не охото сдавать на конкурс лажную прогу))

бинарник под Linux, под винду чуть позже будет - т.к нету пока времени перезапускать оси)

Бинарник(Linux)

файл phonebook.db скидывать в одну папку с бинарником.

P.S как платформо-независимо создать пустой файл?

Добавлено (11.10.2012, 22:44)
---------------------------------------------
Бинарник для винды:

Ссылка

конкретно интересует - отображаются ли нормально русские символы в винде и ошибки с псевдо БД(phonebook.db)


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Четверг, 11 Октября 2012, 18:43 | Сообщение # 326 | Тема: Покоментируйте код)
GNU follower
Сейчас нет на сайте
всмысле, можно отрывок из кода, чтобы понятнее было)

Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Среда, 10 Октября 2012, 19:06 | Сообщение # 327 | Тема: Покоментируйте код)
GNU follower
Сейчас нет на сайте
Итак, сегодня я написал свою первую программу размеров +200 строк кода))
Это консольный телефонный справочник, кто может покоментируйте код - т.е что где можно оптимизировать заменить и т.д
Скачать(Исходники + Бинарник для Linux) biggrin


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Среда, 10 Октября 2012, 18:58 | Сообщение # 328 | Тема: И снова у меня проблема))
GNU follower
Сейчас нет на сайте
Вообщем был код и работал он нормально:

Code

i++;
add_db_elem(argv[i], argv[i + 1]);
argc -= 3;
i += 2;


И заменили его на этот:

Code

char *name = malloc(sizeof(char) * 64);
i++;
strcpy(name, argv[i]);
while(i++, !isdigit(argv[i][0])) {
                strcat(name, " ");
                strcat(name, argv[i]);
  }
add_db_elem(name, argv[i]);
argc -= 3;
i++;
free(name);
continue;

теперь тоже все работает как надо, но выкидывает Segmentation fault (core dumped)
кто найдет ошибку, 2 часа бьюсь уже(:-

Добавлено (10.10.2012, 17:19)
---------------------------------------------
выяснил что Segmentation fault вылетает изза этих строк:

Code

while(i++, !isdigit(argv[i][0])) {
  strcat(name, " ");
  strcat(name, argv[i]);
  }

Но почему/ eek

Добавлено (10.10.2012, 18:58)
---------------------------------------------
Проблема решена, что то я туплю сегодня))


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Вторник, 09 Октября 2012, 22:13 | Сообщение # 329 | Тема: fscanf() и чтение отдельных частей строки
GNU follower
Сейчас нет на сайте
Спасибо, теперь работает, сделал так;
Code

char *tmp_str = malloc(sizeof(char) * 256);
for(i = 0; i < count_element; i++) {
   tmp.name = malloc(sizeof(char) * 64);
   tmp.phone = malloc(sizeof(char) * 20);
   fgets(tmp_str, 256, db_file);
   tmp.index = atoi(strtok(tmp_str, ":"));
   strcpy(tmp.name, strtok(NULL, ":"));
   strcpy(tmp.phone, strtok(NULL, ":"));
   add(&db, (void*)(&tmp));
  }


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Вторник, 09 Октября 2012, 20:36 | Сообщение # 330 | Тема: fscanf() и чтение отдельных частей строки
GNU follower
Сейчас нет на сайте
Здравствуйте, сейчас я пишу телефонный справочник на конкурс по программированию, и возникла одна проблема:

Имеется структура:
Code

typedef struct {
  int index; // используется для более быстрого поиска
  char *name; // ФИО
  char *phone; // номер телефона
} element;


и следующий код:

Code

for(i = 0; i < count_element; i++) {
   tmp.name = malloc(sizeof(char) * 64);
   tmp.phone = malloc(sizeof(char) * 20);
   fscanf(db_file, "%d:%s:%s\n", &(tmp.index), tmp.name, tmp.phone);
   add(&db, (void*)(&tmp));
  }


после пытуаюсь вывести данные следующим способом:
Code

element *e = get_element(&db, 0);
  printf("%s - %s\n", e->name, e->phone);

в результате входит примерно это:
Code
Vasiliy:+79871111111 -


а должно:
Code
Vasiliy Kozlov - +79871111111


формат элемента в файле таблицы данных таков:
Code
index:name:phone


подскажите пожалуйста, где тут ошибка и каким образом ее можно исправить, уже 2 часа сижу думаю? Скорее всего это при чтении данных из файла(fscanf) но каким образом тогда читать чтобы правильно получалось.


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Понедельник, 08 Октября 2012, 15:35 | Сообщение # 331 | Тема: Вопрос-Ответ (C++)
GNU follower
Сейчас нет на сайте
решил так)):

Code

#include <iostream>
using namespace std;

int main() {
  bool simple;
  for(int i = 2; i < 10000; i++) {
   simple = true;
   for(int j = 2; i > j; j++)
    if(!(i % j))
     simple = false;
   if(simple)
    cout << i << ' ';
  }
  cout << '\n';
  return 0;
}


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Понедельник, 08 Октября 2012, 15:02 | Сообщение # 332 | Тема: Вопрос-Ответ (C++)
GNU follower
Сейчас нет на сайте
Подскажиет что за проблема в моем коде:

Code

// вычисление простых чисел
#include <iostream>
using namespace std;

int main() {
  for(int i = 0; i < 1000000; i++) {
   bool simple = true;
   for(int j = 0; j < 1000000; j++)
    if(i % j)
     simple = false;
   if(simple)
    cout << i << ' ';
  }
  return 0;
}

Компилится нормально, но при запуске выдает -
Code
Floating point exception (core dumped)


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Воскресенье, 07 Октября 2012, 21:03 | Сообщение # 333 | Тема: Эккель. Философия С++
GNU follower
Сейчас нет на сайте
Разобрался, все работает))

Code

// Вывод файла по строчкам - после каждой требуется нажатие enter
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
  string line;
  int ch;
  ifstream in("outfile.cpp");
  while(getline(in, line)) {
   cout << line;
   while((ch = getchar()) != 10);
  }
  return 0;
}



Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Воскресенье, 07 Октября 2012, 21:00 | Сообщение # 334 | Тема: Эккель. Философия С++
GNU follower
Сейчас нет на сайте
Для проверки написал тест-программу которая выводит код символа, но при нажатии enter ничего не выводится, почему?(Fedora 17 Xfce, Xfce Terminal Emulator 0.4.8)

Code

// Вывод файла по строчкам - после каждой требуется нажатие enter
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
  //~ string line;
  char chs[2];
  cin >> chs;
  cout << static_cast<int>(chs[0]) << " " << static_cast<int>(chs[1]) << "\n";
  //~ ifstream in("outfile.cpp");
  //~ while(in >> line) {
   //~ cout << line;
   //~ cin >> ch;
   //~ while(ch != char(13)) cin >> ch; // 13 - ASCII код Enter
  //~ }
  return 0;
}

Добавлено (07.10.2012, 21:00)
---------------------------------------------
хотя нет, getchar() выдал 10 10, сейчас проверю)


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Воскресенье, 07 Октября 2012, 19:56 | Сообщение # 335 | Тема: Ваша ОС
GNU follower
Сейчас нет на сайте
Использую Fedora 17(Xfce) для работы/инета/просмотра фильмов/прослушивания музыки и т.д
и windows 7 для игрушек(1-2 раза в неделю)))


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Воскресенье, 07 Октября 2012, 19:28 | Сообщение # 336 | Тема: Эккель. Философия С++
GNU follower
Сейчас нет на сайте
а если обойтись C++ стандартной билиотекой? - на момент где задана эта задача - эта функция не изучена еще.

Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Воскресенье, 07 Октября 2012, 19:05 | Сообщение # 337 | Тема: Эккель. Философия С++
GNU follower
Сейчас нет на сайте
ну это уже личные предпочтения)

Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Воскресенье, 07 Октября 2012, 18:12 | Сообщение # 338 | Тема: Эккель. Философия С++
GNU follower
Сейчас нет на сайте
Помогите решить, вот само задание:

Выводите содержимое файла по строкам.
После вывода каждой строки программа должна ждать,
пока пользователь нажмет клавишу Enter

Мое решение, которое не работает(ошибка скорее всего в сравнение символа с кодом Enter'а'):

Code

// Вывод файла по строчкам - после каждой требуется нажатие enter
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
  string line;
  char ch;
  ifstream in("outfile.cpp");
  while(in >> line) {
   cout << line;
   cin >> ch;
   while(ch != char(13)) cin >> ch; // 13 - ASCII код Enter
  }
  return 0;
}
cry


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Пятница, 10 Августа 2012, 10:12 | Сообщение # 339 | Тема: Керриган & Ритчи.Язык Программирования C
GNU follower
Сейчас нет на сайте
спасибо всем - вроде получилось:

Code

#include <stdio.h>
#include <stdlib.h>
#define MAXHINST 10 /* максимальное количество самых длинных слов */

int compare(const void *a,const void *b)
{
   return (*(int*)b - *(int*)a);
}

int main()
{
   int c, length, hinst_table[256], i, h;
   length = i = 0;
   while((c = getchar()) != EOF) {
     if(c == ' ' || c == '\n' || c == '\t') {
       if(length) {
  hinst_table[i] = length;
  ++i;
       }
       length = 0;
     }
     else
       length++;
   }
   qsort(hinst_table, 256, sizeof(int), compare);
   for(i = hinst_table[0]; i > 0; --i) {
     for(h = 0; h < MAXHINST; ++h) {
       if(hinst_table[h] < i)
  putchar(' ');
       else
  putchar('*');
     }
     putchar('\n');
   }
}


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
vasua99Дата: Пятница, 10 Августа 2012, 09:36 | Сообщение # 340 | Тема: Да,но...
GNU follower
Сейчас нет на сайте
да,но у нас уже 22:30)))

Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
Поиск:

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