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

Ваш аккаунт

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

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

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

Почему не работает программа на С

12K
13 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Помогите мне пожалуйсто у меня прога не работает хотя вроде все правильно, может это глюк в TURBOC???
И как сделать так чтоб если прогу не вбивая в в TURBOC просто перенеся ее в файл рууский язык не читался как лабуда всякая???

Программа составления каталога компакт-дисков.

[COLOR="Red"]какие проблемы сообщение отредактировать?[/COLOR] (moderator)
Страницы:
242
13 ноября 2006 года
Оlga
2.2K / / 04.02.2006
оформи задачу как вложение - слишком длинная.
при написании кода в посте, используем тэги code.
если в программе ошибка: пишем на какие строки ругается компилятор(не забыв их отметить в коде при помощи коментариев) + содержание ошибки.
242
13 ноября 2006 года
Оlga
2.2K / / 04.02.2006
например функция
 
Код:
addcd()
{
int pause;
if(count[COLOR=red]>>[/COLOR]=MAX)
{
puts("К сожалению
свободных ячеек нет\n");
pause=getchar();
return;
}

также не указан тип функции, и вообще в какой среде программим?
нужно бы:

также непонятно зачем код : pause=getchar();
если нет свободного места, достаточно вывести сообщение об ошибке.
функция должна выгледеть что-то вроде
 
Код:
void addcd(void)
{
   if(count > MAX) //or count >= MAX
         puts("К сожалению свободных ячеек нет\n");
   else
   {
       [COLOR=teal]//код для добавления CД[/COLOR]
    }
 
}
242
13 ноября 2006 года
Оlga
2.2K / / 04.02.2006
просмотрела твою работу немного, если хочешь ее написать мой тебе совет:
пиши код частями, не надо пытаться реализовывать все функции одновременно, а потом искать ошибки. для начала реализуй опции: добавить ЦД в файл, расспечатать содержимое файла, выход из программы. справишься с этим - можешь сортировку добавлять и т.д.
иначе - зашьеся.
Оформляй нормально код, что бы легко было его читать, не забывай обьявлять прототипы функций, или пиши мэйн последней программой(но лучше так ненадо).
пример :
Код:
#include "stdio.h"
#include <stdlib.h> //здесь функция exit
#define FILENAME "CDfile.txt"
#define TEMPFILE "Temp"
#define MAX 20
 
/*----- Global Variables ----*/
struct CD
{
 char name[20];
 char description[40];
 char category[12];
 float cost;
 //int number;
} disc;
int slots[MAX];
int count;
FILE *fp, *tp, *printer;
 
/*----- прототипы функций --*/
void addcd(void); // add CD to collections
//не забудь написать прототипы для всех функций ...
 
main()
{
 char select;
// getslots();
 do
 {
  printf("\nМоя коллекция компакт-дисков\n");
  printf("\n1 Добавить карточку\n");
  printf("\n2 Удалить карточку\n");
  printf("\n3 Редактировать содержимое карточки\n");
  printf("\n4 Изменить номер ячейки\n");
  printf("\n5 Сортировка карточек\n");
  printf("\n6 Найти карточку\n");
  printf("\n7 Вывести на печать\n");
  printf("\n8 Выйти из программы\n");
  printf("\nПожалйста, введите Ваш выбор: ");
  select = getchar();
  //putchar('\n');
  switch(select)
  {
   case '1': addcd();break;
 /*  case '2': delcd();break;
   case '3':chcd();break;
   case '4':chloc();break;
   case '5':sort();break;
   case '6':locate();break;
   case '7':plist();break;*/
   case '8':break;
   default: puts("Ошибка, повторите ввод\n\n");
  }
 }while(select!='8');
 return 0;
}
//---------------------------------------------------------
void addcd(void)
{
 int pause;
 if(count > MAX)
 {
  puts("К сожалению свободных ячеек нет\n");
  pause=getchar();
  return;
 }
 if((fp = fopen(FILENAME,"a")) == NULL)
 {
  printf("Невозможно открыть файл %s\n",FILENAME);
exit(1);
 }
// puts("\n");
 printf("\nEnter name disc: ");
 scanf("%s", disc.name);
 printf("Enter description:");
 scanf("%s", disc.description);
 printf("Enter category:");
 scanf("%s", disc.category);
 printf("Enter price:");
 scanf("%f", &disc.cost);
// getslot();
 fwrite(&disc, sizeof(disc), 1, fp);
 fclose(fp);
// getslot();
 //return;
}
63
13 ноября 2006 года
Zorkus
2.6K / / 04.11.2006
Прочитай что-то по основам программирования в С, иначе тебе трудно помогать будет...
242
13 ноября 2006 года
Оlga
2.2K / / 04.02.2006
[quote=Belomorkan]Оля Спасибо тебе большое!!![/quote]
особенно не за что =), это был образец форматирования кода и пару ошибок исправила. следущий код я проверила - он рабочий. по крайней мере VS 6 работает.

[COLOR=red]файл на диске С cоздается[/COLOR]
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define FILENAME "c:\\CDfile.txt"
#define TEMPFILE "Temp"
#define MAX 20
 
[COLOR=green]/*----- Global Variables ----*/[/COLOR]
struct CD
{
 char name[20];
 char description[40];
 char category[12];
 double cost;
 [COLOR=green]//int number;[/COLOR]
} disc;
int slots[MAX];
int count;
FILE *fp, *tp, *printer;
 
[COLOR=green]/*----- прототипы функций --*/[/COLOR]
void addcd(void); // add CD to collections
void plist(void);
void printmenu(void);
 
main()
{
 char select;
 
 do
 {
  printmenu();
  select = getche();
 
  switch(select)
  {
   case '1': addcd();break;
  /* case '2': delcd();break;
   case '3':chcd();break;
   case '4':chloc();break;
   case '5':sort();break;
   case '6':locate();break;*/
   case '7':plist();break;
   case '8':break;
   default: puts("Ошибка, повторите ввод\n\n");
  }
 }while(select!='8');
 return 0;
}
[COLOR=green]/*---------------------------------------------------------*/[/COLOR]
void printmenu(void)
{
[COLOR=green]/* printf("\nМоя коллекция компакт-дисков\n");*/[/COLOR]
  printf("\n1 Add case\n");
  printf("\n7 Print List\n");
 [COLOR=green]/* printf("\n3 Редактировать содержимое карточки\n");[/COLOR]
[COLOR=green]printf("\n4 Изменить номер ячейки\n");[/COLOR]
[COLOR=green]printf("\n5 Сортировка карточек\n");[/COLOR]
[COLOR=green]printf("\n6 Найти карточку\n");[/COLOR]
[COLOR=green]printf("\n7 Вывести на печать\n");*/[/COLOR]
  printf("\n8 Exit.\n");
  printf("\nEnter your choice: ");
 
  //putchar('\n');
}
[COLOR=green]/*---------------------------------------------------------*/[/COLOR]
void addcd(void)
{
 
 if(count > MAX)
 {
  puts("К сожалению свободных ячеек нет\n");
  return;
 }
 if((fp = fopen(FILENAME,"a")) == NULL)
 {
  printf("Невозможно открыть файл %s\n",FILENAME);
  exit(1);
 }
 count++;
 printf("\n\nEnter name disc: ");
 scanf("%s", disc.name);
 printf("\nEnter description:");
 scanf("%s", disc.description);
 printf("\nEnter category:");
 scanf("%s", disc.category);
 printf("\nEnter price:");
 scanf("%lf", &disc.cost);
 fwrite(&disc, sizeof(disc), 1, fp);
 fclose(fp);
}
[COLOR=#008000]/*---------------------------------------------------------*/[/COLOR]
void plist(void)
{
 printf("\n");
 if((fp = fopen(FILENAME,"r")) == NULL)
 {
  printf("Невозможно открыть файл %s\n",FILENAME);
  exit(1);
 }
 while(fread(&disc, sizeof(disc), 1, fp)==1)
 {
  printf("\n%s  %s  %s  %f\n", disc.name, disc.description, disc.category, disc.cost);
 }
 fclose(fp);
}
12K
13 ноября 2006 года
Belomorkan
59 / / 18.10.2006
А зачем Оля мне нужна в этой проге пауза=гетчар?Я этого не догоняю. Я начал читать книгу, но только неделю как занимаюсь и очень много вопросов появилось,а вот задать пока было некому, но теперь знаю к кому можно обращатся.Спасибо еще раз!!!
242
13 ноября 2006 года
Оlga
2.2K / / 04.02.2006
[quote=Belomorkan]А зачем Оля мне нужна в этой проге пауза=гетчар?Я этого не догоняю. Я начал читать книгу, но только неделю как занимаюсь и очень много вопросов появилось,а вот задать пока было некому, но теперь знаю к кому можно обращатся.Спасибо еще раз!!![/quote]
а я откуда знаю? я книгу не писала, по моему мнению не нужно...
если ты только неделю учишь язык - сбавляй обороты, пиши небольшие для начала проги, ну и задавай конкретные вопросы на форуме. а не чудо что ты выше накатал с сотней ошибок, мне все и читать влом. Удачи =).
12K
13 ноября 2006 года
Belomorkan
59 / / 18.10.2006
А в каком компиляторе ты пишешь ето все? А то мне так надоел это ТУРБО Си в нем гемороя!!!
242
13 ноября 2006 года
Оlga
2.2K / / 04.02.2006
[quote=Belomorkan]А в каком компиляторе ты пишешь ето все? А то мне так надоел это ТУРБО Си в нем гемороя!!![/quote]
я же написала VS 6, т.е. я пользуюсь Microsoft Visual Studio 6.0 ...
12K
13 ноября 2006 года
Belomorkan
59 / / 18.10.2006
И сбавить обороты не могу, мне прогу сдавать надо через неделю, а у меня все так хреново.Я перевелся из филиала КАИ в настоящий КАИ, и уровни программирования у нас и в Казани разный на порядок оказался, препод это унюхал и грузанул.!!!ЗЛОДЕЙ БЛИН!!! Ну и сказал напиши мне эту прогу и тебе пряник в руки, а вот если нет, то на нет и суда нет!!!
12K
13 ноября 2006 года
Belomorkan
59 / / 18.10.2006
А что за ошибка TYPE MISMATCH IN REDECLARATION ADD
242
14 ноября 2006 года
Оlga
2.2K / / 04.02.2006
[QUOTE=Belomorkan]А что за ошибка TYPE MISMATCH IN REDECLARATION ADD[/QUOTE]
TYPE MISMATCH - несоответствие типа
что бы более подробно узнать об ошибке предлагаю www.msdn.com .Например у меня в проге компилер выдает ошибку: error C2371: 'i' : redefinition; different basic types. идем на сайт, вводим в поисковик номер ошибки: Compiler error C2371 и получаем РЕЗУЛЬТАТ, а затем наслаждаемся жизнью :), и не надо долго ждать. запутаешься - тащи код. Удачи
242
14 ноября 2006 года
Оlga
2.2K / / 04.02.2006
[COLOR=blue]Только ищем на всех языках, ни в коем случае не на русском, а то долго искать будешь.[/COLOR]
12K
14 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Оля! Кстати привет!!!! У меня вопрос, как можно сделать так чтоб в Турбо Си когда в файл закидываешь текст проги не вбивая его, как сделать так чтоб русский язык не писался загагулинами!Спасибо заранее!!!
242
14 ноября 2006 года
Оlga
2.2K / / 04.02.2006
вопрос тысячи раз обсуждался на форуме, юзай плиз поиск
 
Код:
#include <windows.h>// CharToOem
#include <stdio.h>
void main(void)
{
 char name[] = "Привет.";
 char buff[7];
 CharToOem(name,buff);
 puts(buff);

}
12K
14 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Я видел кстати эту тему на другом форуме, но прога не работала!!!Вот так!!!
12K
14 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Вот еще как можно, не смотрите что ето для с++, он и на Си действует, просто переделайте
#include "rusout.h"

int main()

{

cout<<"Привет, мир!"<<endl;

return 0;

}
12K
14 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Вот почти все работает только осталось две последние дописать,Ю но есть вопрос.У меня корректировка не катит может я ошибку допустил?? И еще вот что я когда на компиляцию отправляю, короче там как меню, все работает, а вот когда я ввожу дату приема на работу чела, то дата в файле не сохраняется или просто какойто битый код вместо него и поетому когда я корректировку ввожу у меня выходит что я ввел неправильно такого чела нет вовсе в списке
242
14 ноября 2006 года
Оlga
2.2K / / 04.02.2006
меня русский конечно не очень интерисует =), как то пользы ноль мне от него на сегодня, но молодец!
тебе для корректировки файла надо использовать функцию fseek.
дату в каком формате сохраняешь? пользуй массив символов.(char date[]) будет время завтра ближе к вечеру попробую прогу посмотреть, но не обещаю.
12K
15 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Оля,Привет!!! У меня может и дебильный ,но вопрос.Почему вот ето не работает.(И вот еще что я вчера прогу написал же, она чуть легче показалась преподу чем была до етого и сказал что если я не сдам первую то мне кирдык, а вторая он сказал для лохов, так что можешь файл не разбирать даже, который я вчера скинул)(А препод просто ГАД)
void plist(void)
{
printf("\n");
if((fp = fopen(FILENAME,"r")) == NULL)
{
printf("Невозможно открыть файл %s\n",FILENAME);
exit(1);
}
while(fread(&disc, sizeof(disc), 1, fp)==1)
{
printf("\n%s %s %s %f\n", disc.name, disc.description, disc.category, disc.cost);
}
fclose(fp);
}
242
15 ноября 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
У меня может и дебильный ,но вопрос.Почему вот ето не работает


что значит не работает? у меня эта функция работает.

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

242
15 ноября 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
и сказал что если я не сдам первую то мне кирдык


а какая первая? тебе что конкретно надо?

242
15 ноября 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Надо сделать корректировку указанной записи


запись - это набор данных, в твоем примере: намеСД, стоимость и т.д. я так понимаю что у пользователя должен быть выбор, что именно из этого набора изменять, или можно заставить его заново ввести все данные и заменить старую запись на новую(этот вариант попроще первого).

Цитата:
Надо сделать корректировку указанной записи,а в этом я уже не секу как


ты должен узнать что точно хочет препод, иначе придется переделывать...

242
15 ноября 2006 года
Оlga
2.2K / / 04.02.2006
и зачем ты выложил функцию сортировки и ...?
успокойся и конкретно пойми что тебе надо, и потом проси о помощи в конкретных вещах
12K
15 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Заново ввести все данные и заменить старую запись на новую.Вот что нам надо.Я так то спокоен, да вот что то в армию не хочется мне, а препод просто требовательный.А есть такие курсы по программированию на определенном языке программирования???
Код:
chcd()
{
char  chname[20];
char  fflag;
int pause;
fflag='n';
openrw();
puts("Редактирование сведений о диске\n");
printf("Введите название диска: ");
gets(chname);
while(fread(&disc, sizeof(disc), 1, fp)==1)
{
if(strcmp(disc.name,chname)!=0)
fwrite(&disc, sizeof(disc), 1, tp);
else
{
fflag='y';
puts("Текущая информация\n");
showdisc();
puts("Новая информация\n");
printf("Введите название диска: ");
gets(disc.name);
printf("Введите описание:");
gets(disc.description);
printf("Введите категорию:");
gets(disc.category);
printf("Введите цену:");
scanf("%f", &disc.cost);
if(count>>=MAX)
{
puts("К сожалению
 свободных ячеек нет\n");
pause=getchar();
}
else
{
getslot();
}
fwrite(&disc, sizeof(disc), 1, tp);
}
}
fclose(fp);
fclose(tp);
if(fflag=='n')
nofind();
else
{
openwr();
while(fread(&disc, sizeof(disc), 1, tp)==1)
fwrite(&disc, sizeof(disc), 1, fp);
fclose(fp);
fclose(tp);
}
getslots();
return;
}
242
15 ноября 2006 года
Оlga
2.2K / / 04.02.2006
в армию не хочется - учись, насчет курсов - в гостевой открывай тему, при этом не забудь указать город.
вообще то тебе надо, мне эта задача сто лет ненадо, просто помагаю ... иногда :)
зы не забывай, что у других их личные заботы есть...
http://www.codenet.ru/search/?q=fseek&spr=any
http://www.codenet.ru/cat/Languages/C-CPP/
12K
15 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Извини Оль! Ладно напишу, вроде не дурак. Короче если помошь в задачах по графам нужна,пишите на мыло [email]belomor-kan@mail.ru[/email]. Ето единственное что я точно легко могу делать на Си! Помогу сделать даже курсач!!!Пишите
12K
16 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Оля привет! Как дела? У меня вопрос, ты не знаешь как делать сортировку в файле,но не по цифрам ,а по буквам, тоесть сначала,
Антон,
Гадя Петрович Хренова,
Дима и т.д.
Заранее спасибо!
242
16 ноября 2006 года
Оlga
2.2K / / 04.02.2006
на мой взгляд самое удобное, если оперативка и размеры файла позволяют, записать все записи из файла в вспомагательный массив(for example: struct Worker workers[]), отсортировать по нужному полю, и опять все заново записать в файл.
для сравнения строк используй функцию strcmp(str1, str2) :

http://www.codenet.ru/progr/cpp/sprd/strcat_strdup.php
12K
17 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Вот такая ошибка:
Код:
void deleteRecord(FILE *fPtr)
{                               error C2371: 'deleteRecord' : redefinition; different basic types
struct workData work;
struct workData Client={0};
int NUM;
printf("‚ўҐ¤ЁвҐ *®¬Ґа ¤«п г¤*«Ґ*Ёп (1-100):\n");
scanf("%d",&NUM);
fseek(fPtr,(NUM-1)*sizeof(struct workData),SEEK_SET);
fread(&work,sizeof(struct workData),1,fPtr);
if(work.num==0)
{
printf("Ќ®¬Ґа #%d *Ґ **©¤Ґ*\n",NUM);
}
else
{
fseek(fPtr,(NUM-1)*sizeof(struct workData),SEEK_SET);
fwrite(&Client,sizeof(struct workData),1,fPtr);
}
}
242
17 ноября 2006 года
Оlga
2.2K / / 04.02.2006
ну во первых телепаты в отпуске :), если приводишь кусок кода из проги со структурами - описание структуры в студию(но не торопись, сейчас).
Буду очень благодарна, если ты мне объяснишь, что ты здесь пытаешься сделать:
 
Код:
struct workData Client={0};

п.с. когда компилер ошибку выдает, он еще и номер линии отмечает, где приблизительно ее искать.
242
17 ноября 2006 года
Оlga
2.2K / / 04.02.2006
 
Код:
printf("‚ўҐ¤ЁвҐ *®¬Ґа ¤«п г¤*«Ґ*Ёп (1-100):\n");

что за абра кадабра в принтф? :(
12K
17 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Тоесть это инфа по умолчанию, Тоесть создается дата файл с инфой по умолчанию, вроде так делалось???
12K
17 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Это когда я с Турбо Си переношу то абра кодабра получается а вот как нормалек сделать я непонимать?
12K
17 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Могу весь файл прислать
struct workData
{
int num;
char name [20];
char dolz [20];
float god;
};
242
18 ноября 2006 года
Оlga
2.2K / / 04.02.2006
[quote=Belomorkan]Могу весь файл прислать


struct workData
{
int num; //variable1 == int
char name [20]; //variable2 == char[]
char dolz [20]; //variable3 == char[]
float god; //variable4 == float ?? [COLOR=red]это ты дату во флоат хочешь сохранить?[/COLOR]
};
[/quote]
 
Код:
[COLOR=red]struct workData Client={0};[/COLOR]

переменная Клиент типа стракт, нет никакого смысла делать то, что ты написал. подобная форма записи подходит для целочисленного массива( int arr[5] = {0};), что бы задать "инфа по умолчанию", надо:

 
Код:
struct workData Client={[COLOR=blue]0[/COLOR], [COLOR=purple]"Name"[/COLOR], [COLOR=green]"dolz"[/COLOR], 0.0};  // [COLOR=blue]int[/COLOR], [COLOR=purple]char[],[/COLOR] [COLOR=green]char[],[/COLOR] float

у Дейтела такии примеры есть.
12K
18 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Усек спасибо
12K
19 ноября 2006 года
Belomorkan
59 / / 18.10.2006
А как делать кооректировку существующей записи???, мне прогу писать ненадо, вот только что использовать надо я точно незнаю
242
19 ноября 2006 года
Оlga
2.2K / / 04.02.2006
[quote=Belomorkan]А как делать кооректировку существующей записи???, мне прогу писать ненадо, вот только что использовать надо я точно незнаю[/quote]
у тебя есть файл. в нем хранится n структур, допустим тебе надо изменить структуру k.
1 - при помощи функции fseek устанавливаешь указатель на нужную структуру
 
Код:
fseek(pointer, (k-1)*sizeof(struct Client), SEEK_SET);

ползователь начинает нумерацию с 1, а в файле нумерация с 0 => к-1.

2 - записываешь данные при помощи fwrite:
 
Код:
fwrite(&client, sizeof(struct Client), 1, pointer);


единственное тебе надо убедиться, что под номером к действительно существует запись, иначе - выдай сообщение об ошибке.
12K
20 ноября 2006 года
Belomorkan
59 / / 18.10.2006
Оляспасибо за подсказку у меня просто ошибка небольшая была,а так все пашет.Вот только последний вопрос? Я делаю поиск не по номеру сотрудника а по имени, вроде все работает, но вот не выводит он строку о сотруднике.Если нетрудно сможешь посмотреть вот файлик, он рабочий, кстати почти готовый, может кому понадобится, а себе можешь на память оставить.Вспоминать такого дебила как я в программировании и смеятся!!!ФАЙЛ:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог