Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
#1

поставить элемент на указанную позицию,файлы,cи - C++

24.03.2012, 22:07. Просмотров 790. Ответов 14
Метки нет (Все метки)

нужно написать программу на си
которая ставит некоторую цифру на указнную позицию
проблема как прописать код так чтобы цифра не заменяла то что стоит на укзанной позиции
а смещала то что стоит на этой позиции
пыталась создать временный файл и еще дополнительный массивчик
не получается ничего
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2012, 22:07     поставить элемент на указанную позицию,файлы,cи
Посмотрите здесь:

Вставить в указанную пользователем позицию в массиве значение - C++
Дан массив А из n чисел. Вставьте в указанную пользователем позицию массива значение, введённое пользователем. (c++ использовать функции...

Функция добавления элемента в односвязный список в указанную позицию - C++
Здравствуйте! Помогите пожалуйста написать функцию добавления элемента в односвязный список в указанную позицию.Не могу сообразить как...

Массив А из n чисел. Вставить в указанную пользователем позицию массива значение - C++
Дан массив А из n чисел. Вставьте в указанную пользователем позицию массива значение, введённое пользователем.

Написать функцию, вставляющую строку в указанную позицию двумерного массива - C++
компилятор постоянно показывает ошибку, не могу понять где ошибка в коде, в котором я выделил, может кто видит ошибку подскажите...

Ошибка в программе. Нужно добавить строку в динамическом массиве в указанную пользователем позицию - C++
Вот то , что у меня есть. Выводит массив до pos и выкидывает. #include <iostream> #include <time.h> #include <string> ...

Файлы. Как установить позицию в файле? - C++
Как установить позицию в файле с которой начнется, например, чтение данных. (Нужно установить в начало).

Вставить элемент в массив на заданную позицию - C++
вставка одномерного массива на определенное место( место нужно вписать с клавиатуры)

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Plazma
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 51
24.03.2012, 22:14     поставить элемент на указанную позицию,файлы,cи #2
попробуйте использовать векторы
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 23:05  [ТС]     поставить элемент на указанную позицию,файлы,cи #3
Plazma, векторы?О_О
впервый раз слышу о таком(
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.03.2012, 23:14     поставить элемент на указанную позицию,файлы,cи #4
Цитата Сообщение от лизи Посмотреть сообщение
Plazma, векторы?О_О
впервый раз слышу о таком(
векторы - это уже не си.


Цитата Сообщение от лизи Посмотреть сообщение
пыталась создать временный файл и еще дополнительный массивчик
не получается ничего
покажите что есть
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 23:35  [ТС]     поставить элемент на указанную позицию,файлы,cи #5
тут по заданию нужно произведение посчитать и вставаить на указанную позицию
коментарии в функции это как раз часть неудачных попыток
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
  #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;
}
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.03.2012, 23:42     поставить элемент на указанную позицию,файлы,cи #6
Два вопроса:
- обязательно ли использовать файлы?
- как звучит полностью задание?
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 23:50  [ТС]     поставить элемент на указанную позицию,файлы,cи #7
valeriikozlov, да файлы обязательно использовать
задание:
Дан файл f, компоненты которого являются действительными числами. Найти:
Произведение компонент файла f. Записать это произведение после компоненты с номером N.
Программа должна быть разбита на несколько функций и обязательно содержать:
1. Функция формирования исходного файла;
2. Функция вывода результата работы программы;
3. Одну или более функций, реализующих вычислительную часть алгоритма.
Основная программа должна содержать только операторы вызова подпрограмм.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.03.2012, 00:14     поставить элемент на указанную позицию,файлы,cи #8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
  #include <stdio.h>  //onn libraries
#include <stdlib.h>
#include <time.h>
 
 
int create(char *name);
void output(char *name);
void add(char *name);
float proizved(char *name);
 
 
int 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);
  return n;
}
 
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)
 {
  int N,i;float P;
 
        P=proizved(name);
         printf("\nPlease, input N\n=>");
         scanf("%d",&N);
         float *a=(float*)malloc (n* sizeof(float));
         FILE *out;
         if((out=fopen(name,"r"))!=NULL)
         {
             for(i=0; i<n; i++)
                 fread(&a[i],sizeof(float),1,out);
         }
         else
             printf("Error adding!");
         fclose(out);
         FILE *in;
         if ((in=fopen(name,"w"))!=NULL)
         {
             for(i=0;i<n && i<=N;i++)
             {
                 fwrite(&a[i],sizeof(float),1,in);               
             } 
             fwrite(&P,sizeof(float),1,in); 
             for(;i<n;i++)
             {
                 fwrite(&a[i],sizeof(float),1,in);               
             } 
        }
        else
        printf("Error adding!");
        fclose(in);     
        free(a);
 }
 
int main()
{int flag, n;
do{
n=create("example");
add("example", n);
output("example");
 printf("\nInput '0' if you want to exit=>");
s
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 00:27  [ТС]     поставить элемент на указанную позицию,файлы,cи #9
valeriikozlov, исправила ошибки,запустила,вылетает=(
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.03.2012, 07:59     поставить элемент на указанную позицию,файлы,cи #10
Цитата Сообщение от лизи Посмотреть сообщение
исправила ошибки,запустила,вылетает=(
покажите последнюю версию, которая вылетает.
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 13:27  [ТС]     поставить элемент на указанную позицию,файлы,cи #11
valeriikozlov,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 #include <stdio.h>  //onn libraries
#include <stdlib.h>
#include <time.h>
 
 
int create(char *name);
void output(char *name);
void add(char *name);
float proizved(char *name);
 
 
int 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);
  return n;
}
 
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,n,i;float P;
 
 
        P=proizved(name);
         printf("\nPlease, input N\n=>");
         scanf("%d",&N);
                 float *a=(float*)malloc (n* sizeof(float));
                 FILE *out;
                 if((out=fopen(name,"r"))!=NULL)
                 {
                         for(i=0; i<n; i++)
                                 fread(&a[i],sizeof(float),1,out);
                 }
                 else
                         printf("Error adding!");
                 fclose(out);
                 FILE *in;
                 if ((in=fopen(name,"w"))!=NULL)
                 {
                         for(i=0;i<n && i<=N;i++)
                         {
                                 fwrite(&a[i],sizeof(float),1,in);
                         }
                         fwrite(&P,sizeof(float),1,in);
                         for(;i<n;i++)
                         {
                                 fwrite(&a[i],sizeof(float),1,in);
                         }
        }
        else
        printf("Error adding!");
                fclose(in);
                free(a);
 }
 
int main()
{int flag, n;
do{
n=create("example");
add("example");
output("example");
 printf("\nInput '0' if you want to exit=>");
 scanf("%d",&flag);
} while(flag!=0);
return 1;
}
после того как ввожу позицию вылетает
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.03.2012, 13:46     поставить элемент на указанную позицию,файлы,cи #12
Цитата Сообщение от лизи Посмотреть сообщение
после того как ввожу позицию вылетает
так и должно быть. переделали add() так, что создаете массив размером n, когда n неинициализировано (не имеет значения).
пробуйте:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 #include <stdio.h>  //onn libraries
#include <stdlib.h>
#include <time.h>
 
 
int create(char *name);
void output(char *name);
void add(char *name, int n);
float proizved(char *name);
 
 
int 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);
  return n;
}
 
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)
 {
  int N,i;float P;
 
 
        P=proizved(name);
         printf("\nPlease, input N\n=>");
         scanf("%d",&N);
                 float *a=(float*)malloc (n* sizeof(float));
                 FILE *out;
                 if((out=fopen(name,"r"))!=NULL)
                 {
                         for(i=0; i<n; i++)
                                 fread(&a[i],sizeof(float),1,out);
                 }
                 else
                         printf("Error adding!");
                 fclose(out);
                 FILE *in;
                 if ((in=fopen(name,"w"))!=NULL)
                 {
                         for(i=0;i<n && i<N;i++)
                         {
                                 fwrite(&a[i],sizeof(float),1,in);
                         }
                         fwrite(&P,sizeof(float),1,in);
                         for(;i<n;i++)
                         {
                                 fwrite(&a[i],sizeof(float),1,in);
                         }
        }
        else
        printf("Error adding!");
                fclose(in);
                free(a);
 }
 
int main()
{int flag, n;
do{
n=create("example");
add("example", n);
output("example");
 printf("\nInput '0' if you want to exit=>");
 scanf("%d",&flag);
} while(flag!=0);
return 1;
}
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 13:55  [ТС]     поставить элемент на указанную позицию,файлы,cи #13
valeriikozlov, работает
токо вы не могли бы еще раз объяснить что вы изменили
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.03.2012, 14:25     поставить элемент на указанную позицию,файлы,cи #14
Цитата Сообщение от лизи Посмотреть сообщение
токо вы не могли бы еще раз объяснить что вы изменили
если коротко, то вот что:

Цитата Сообщение от valeriikozlov Посмотреть сообщение
int create(char *name);
теперь стала не просто создавать массив размерностью n, но и возвращать это значение. Это значение теперь передается в add(), где создается массив размерность n. В этот массив считываются данные из файла, потом записываются обратно в файл, с временной остановкой чтобы записать произведение элементов в указанном месте.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 14:34     поставить элемент на указанную позицию,файлы,cи
Еще ссылки по теме:

Добавить новый элемент в определенную позицию массива объектов - C++
Здравствуйте, помогите с решением задачи. Дан класс Продукты. Необходимо добавить новый элемент перед тем, для которого знаем Вес. Ниже код...

Массивы (циклическим сдвигом переместить найденный элемент на последнюю позицию) - C++
В общем первое задание &quot;определить минимальный положительный массив и средне арифметическое значение отрицательных элементов&quot;, я сделал,...

Определить последний отрицательный максимальный элемент и его позицию в массиве - C++
мальчики помогите пожалуйста решить задачи 1)Для заданного двумерного массива из n строк и m столбцов: a.)Определить последний...

Как добавить элемент в конец массива и расширить его на одну позицию? - C++
как добавить элемент в конец? просидел 5 часов , прошустрил кучу сайтов и не сообразил. (через vector не подходит) #define N 100 ...

Сделать массив упорядоченным, переместив элемент который нарушает упорядоченность, на новую позицию - C++
Здравствуйте, помогите решить задачку, все возможные способы испробывал - не получаеться.. Суть задачи... Дан массив размера N, все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 14:34  [ТС]     поставить элемент на указанную позицию,файлы,cи #15
valeriikozlov, спасибоо)
Yandex
Объявления
25.03.2012, 14:34     поставить элемент на указанную позицию,файлы,cи
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru