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

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

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

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

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

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

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

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

Вставить слово в указанную позицию во все строки массива - C++
У меня есть массив string, который заполняет пользователь. После того как массив заполнен нужно вставить дополнительное слово во все...

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

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

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

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


Цитата Сообщение от лизи Посмотреть сообщение
пыталась создать временный файл и еще дополнительный массивчик
не получается ничего
покажите что есть
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 23:35  [ТС] #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;
}
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.03.2012, 23:42 #6
Два вопроса:
- обязательно ли использовать файлы?
- как звучит полностью задание?
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 23:50  [ТС] #7
valeriikozlov, да файлы обязательно использовать
задание:
Дан файл f, компоненты которого являются действительными числами. Найти:
Произведение компонент файла f. Записать это произведение после компоненты с номером N.
Программа должна быть разбита на несколько функций и обязательно содержать:
1. Функция формирования исходного файла;
2. Функция вывода результата работы программы;
3. Одну или более функций, реализующих вычислительную часть алгоритма.
Основная программа должна содержать только операторы вызова подпрограмм.
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.03.2012, 00:14 #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 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 00:27  [ТС] #9
valeriikozlov, исправила ошибки,запустила,вылетает=(
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.03.2012, 07:59 #10
Цитата Сообщение от лизи Посмотреть сообщение
исправила ошибки,запустила,вылетает=(
покажите последнюю версию, которая вылетает.
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 13:27  [ТС] #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;
}
после того как ввожу позицию вылетает
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.03.2012, 13:46 #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 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 13:55  [ТС] #13
valeriikozlov, работает
токо вы не могли бы еще раз объяснить что вы изменили
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.03.2012, 14:25 #14
Цитата Сообщение от лизи Посмотреть сообщение
токо вы не могли бы еще раз объяснить что вы изменили
если коротко, то вот что:

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

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

Однонаправленный список. Операции: удалить элемент из заданной позиции, добавить элемент в заданную позицию,проверка на неравенство - C++
Помогите. Есть одна написанная. Условия: Очередь. Операции: “+” добавить элемент ; “-“ удалить элемент ; bool() проверка «Пуста...

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.03.2012, 14:34
Ответ Создать тему
Опции темы

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