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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2012, 19:51   #1
ленок-носок
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 12
По умолчанию Нужно исправить код! Файлы,cи, fseek

проблема надо вставить прозиведение P на указанную позицию N
но у меня получается так что произведение тупо заменяет цифру стоящую на этой позиции а надо что бы смещал в право все остальные цифры


Код:
void add(char *name)
 {
  int N,i;FILE *out;float P;

if((out=fopen(name,"r+"))!=NULL)
	{
	 P=proizved(name);
	 printf("\nPlease, input N\n=>");
	 scanf("%d",&N);
	 fseek(out,N*sizeof(float),SEEK_SET);

	 fwrite(&P,sizeof(float),1,out);
	  


	}
       else
       printf("Error adding!");

 fclose(out);
 }

Последний раз редактировалось Stilet; 23.03.2012 в 20:34.
ленок-носок вне форума Ответить с цитированием
Старый 23.03.2012, 19:52   #2
ленок-носок
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 12
По умолчанию

а если нужно вот код целой программы
на коментарии не обращаете внимание


Код:
 #include <stdio.h>  //onn libraries
#include <stdlib.h>
#include <time.h>


void create(char *name);
void output(char *name);
void add(char *name);
float proizved(char *name);


void create(char *name)
{
FILE *in;
int n,i;
float a;
 if ((in=fopen(name,"w"))!=NULL)
	{
	 printf("Please, input n\n=>");
	 scanf("%d",&n);
	  for(i=0;i<n;i++)
	  {
	   printf("\na=");
	   scanf("%f",&a);
	   fwrite(&a,sizeof(float),1,in);

	  }


	}
	else
	printf("Error! File not created!");
  fclose(in);
}

void output(char *name)
{
FILE *out;
float a;
if((out=fopen(name,"r"))!=NULL)
	{
	  while(!feof(out))
	   {
	    fread(&a,sizeof(float),1,out);
	     if(!feof(out))
	      printf("%f   ",a);
	   }
	  printf("\n");

	}
       else
       printf("Error output!");
 fclose(out);
}

 float proizved(char *name)
 { float P=1,a;
  FILE *out;

if((out=fopen(name,"r"))!=NULL)
	{
	  while(!feof(out))
	   {
	    fread(&a,sizeof(float),1,out);
	     if(!feof(out))
	      P*=a;
	   }
	}
       else
       printf("Error proived!");

 return P;
 fclose(out);

 }

 void add(char *name)
 {
  int N,i;FILE *out;float P;

if((out=fopen(name,"r+"))!=NULL)
	{
	 P=proizved(name);
	 printf("\nPlease, input N\n=>");
	 scanf("%d",&N);
	 fseek(out,N*sizeof(float),SEEK_SET);

	 fwrite(&P,sizeof(float),1,out);
	 //for(i=0;i<N;i++)
	// for(i=0;i>N;i--)
	 //fwrite(&a,sizeof(float),1,out);
	// i=N;
	 //if(out=fopen(name,r++))!=NULL;
	// N=filelenght(fileno(out))(sizeof(int)));
	 //if(i<N-1)
//file close(int),1,out;
	 //fread(&a,sizeof(int),1,out);}
	 //fseek(out,i*sizeof(int),SEEK_SET);
	 //fwrite(&a,sizeof(int),1,out);
	//fseek(out,(i=N*sizeof(int),SEEK_SET);
 //}


	}
       else
       printf("Error adding!");

 fclose(out);
 }

int main()
{int flag;
do{
create("example");
add("example");
output("example");
 printf("\nInput '0' if you want to exit=>");
scanf("%d",&flag);
} while(flag!=0);
return 1;
}

Последний раз редактировалось Stilet; 23.03.2012 в 20:33.
ленок-носок вне форума Ответить с цитированием
Старый 23.03.2012, 20:32   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Так не получится.
Создай временный файл, переписываешь в него из исходника все что до N позиции, после вписываешь свое значение, и дописываешь остаток файла.
После файл можно переименовать затерев исходник.

создай в памяти массив размером с тот файл + размер вставляемой переменки.
Считываешь в массивфайл, опять таки по частям, внося после первой части в массив свое значение. А после сам массив выводишь в этот файл с перезаписью.

Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.03.2012, 13:11   #4
ленок-носок
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 12
По умолчанию

Stilet, да идея понятна, когда я пыталась сделать вот как вы советуете у меня программа вприцпе перестала работать, запускалась и потом вылетала
я видимо где то накосячила =(
попробую еще раз
ленок-носок вне форума Ответить с цитированием
Старый 24.03.2012, 22:59   #5
ленок-носок
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 12
По умолчанию

спасибо)
все получилось)

Последний раз редактировалось ленок-носок; 25.03.2012 в 15:25.
ленок-носок вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно исправить код melkaya9112 Помощь студентам 1 09.12.2010 00:56
нужно исправить код Alt_Shift Общие вопросы C/C++ 4 14.11.2010 16:16
[C++ масиви] Нужно исправить код basav1k Помощь студентам 1 02.06.2010 22:21
нужно исправить готовый код Алексей Долгов Помощь студентам 2 02.06.2010 15:46
[C++ масиви] Нужно исправить код loloverg Общие вопросы C/C++ 1 01.06.2010 19:16