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

почему PRINTF не работает? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ графическая оболочка http://www.cyberforum.ru/cpp-beginners/thread809781.html
Возник вопрос с таким заданием: 1)Нужно создать абстрактный класс "геометрические фигуры" сделать 3 дочерних класса, треугольник, квадрат и шестиугольник (равносторонние) эту часть я сделал 2)Нужно создать несколько экземпляров этих классов так, чтобы они двигались по экрану, отскакивали от стен и крутились вокруг центра фигуры. Собственно даже не знаю как подступиться. Что использовать...
C++ Правильно ли я понял условие ? Условие: Дан массив квадратных матриц. Определить, найдется ли в этом массиве пара взаимно обратных матриц 1) Нахожу обратную матрицу для очередной матрицы 2) Сравниваю полученную обратную матрицу с последующими матрицами 3) Если есть совпадение вывожу "Да" http://www.cyberforum.ru/cpp-beginners/thread809770.html
Реально ли получить из стд::вектора Сишный массив? C++
Или для этого придётся поэлементно копировать и смысл теряется? Я понимаю, что указатель на память выделяемую вектором спрятан где-то глубоко в его реализации. И вообще в том, что он спрятан - вся суть класса. Но если мне надо передать данные в функцию, принимающую Си-массив, неужели я либо не смогу использовать вектор, либо буду предварительно создавать си-массив и копировать в него поэлементно...
C++ Классы и матрица
Создать два класса: вектор и матрица. Определить конструкторы с параметрами. Определить функцию умножения матрицы на вектор как дружественную. Я определил 2 класса сделал конструкторы к ним. Мне нужно написать дружескую ф-ю уможения матрицы на вектор.Только есть проблема: я ввожу свой вектор как массив 1 2 3 4, а при умножения матрицы на вектор он должен выглядеть так 1 2 3 4 как столбик. Как...
C++ Объявление статического объекта http://www.cyberforum.ru/cpp-beginners/thread809727.html
Объясните пожалуйста как правильно объявить статический объект. У меня в кейсе создаётся объект,но мне он нужен и за пределами кейса,как его сделать статическим?
C++ fseek не работает Нужно записать данные в структурированный текстовый файл. Проблема заключается в том, что в части ввод данных, функция fseek не отрабатывает. Если в части ввод данных не закрывать файл, а писать сразу все элементы - все нормально, но файл нужно закрывать (такое условие задачи). Подскажите, в чем проблема, пожалуйста. struct Man { char name; int age; }; подробнее

Показать сообщение отдельно
Kr
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 35
16.03.2013, 15:36  [ТС]     почему PRINTF не работает?
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <iostream>
#include <string>
#include <cstdlib>
#include <time.h>
using namespace std;
int main()
{
 
  FILE *fp, *fp1, *fp2;
  char msg1[15]="msg1.txt";
  char msg2[15]="msg2.txt";
  char key[100]="key.txt";
  int N=0,n=0,k,k2,l,q,p;
  char i,j,c, d1,x;
  char d[2];
  char a[676][3];
  char st[6];
  char s[3];
  char* temp=s;
  char zam[3];
  int mas[676];
  srand (time(NULL));
 
  fp=fopen(msg1,"r");
  if (fp==NULL)
  {
     printf("file ne nayden!\n");
     return 1;
  }
 
  fp1=fopen(key,"w+");
  if (fp1==NULL)
  {
     printf("Nevozmozhno sozdat file key!\n");
     return 1;
  }
 
  fp2=fopen(msg2,"w");
  if (fp2==NULL)
  {
     printf("Nevozmozhno sozdat file 2!\n");
     return 1;
  }
 
for(k=0; k<625; k++)
{
    mas[k]=0;
}
 
for(l=0; l<6; l++)
{
    st[l]=0;
}
//формирую массив двубуквенных комбинаций для того чтобы каждая комбинация имела совй порядковый номер
p=0;
for ( i='a'; i<='z'; i++)
{
    for (j = 'a'; j <= 'z'; j++)
    {
        sprintf(a[p], "%c%c\0", i,j);
        p++;
    }
}
//после этого массив a[0]=aa,  a[1]=ab,  a[2]=ac, .. a[675]=zz
 
// генерация ключа
k=0; p=0;
for ( i='a'; i<='z'; i++)
{
    for (j = 'a'; j <= 'z'; j++)
    {
       while(true)
       {
          n=rand()%676;
          for (q = 0; q < 676; q++)
          {
              if (n == mas[q]) break;
          }
          if (q==676)
          {
              mas[p]=n;
              fprintf(fp1, "%c%c %s\n",i,j,a[n]);  
              p++;
              break;
          }
       }
    }
}
 
clearerr(fp1);
p=0;
while (!feof(fp)) // пока не конец файла MSG1.txt  
{
    for(q=0; q<2; q++) //считываю посимвольно 2 символа и для них ищу в KEY.txt соответствующую пару /////////////////////   подозреваю что может надо не по 2 символа считывать из MSG1.txt  может тут проблема
    {
        c=fgetc(fp);
        d[q]=c;
        if ( (c==' ')  || (c==',') || (c=='.') || (c==':')  || (c=='\n') ) //если пробел или какой то знак препинания 
        {
            fputc(d[0],fp2); //то оставляем его как есть в файл MSG2.txt 
            fputc(d[1],fp2);
        }
        else
        {
            d[q]=c; // иначе запоминаем его
            if(q==2) // если 2 символа считаны и оба символы, то обращаемся к файлу KEY.txt
            {
                while (!feof(fp1))
                {
                    fp1=fopen(key,"r");
                    if (fp1==NULL)
                    {
                        printf("Nevozmozhno sozdat file key!\n");
                        return 1;
                    }
                   // fread(&st, 5*sizeof(char),5,fp1);
                   // fseek(fp1, 0, SEEK_SET);
                    for(l=0; l<6; l++)
                   {
 
                    //  st[l]=fgetc(fp1);
                      fread(&x,sizeof(char),1,fp1);
                      st[l]=x;
                      printf("%c ", st[l]);
                    }
                    if((st[0]==d[0]) && (st[1]==d[1])) //если первые два символа равны тем которые ищем, то
                    {
                      //  fwrite(&st[3],sizeof(char),1,fp2);
                      //  fwrite(&st[4],sizeof(char),1,fp2);
 
 
                        fputc(st[3], fp2); //  записываем их в файл MSG2.txt
                        fputc(st[4], fp2);
                    }
                }
            }
 
        }
    }
}
  fclose(fp);
  fclose(fp1);
  fclose(fp2);
  return 0;
}

прикладываю весь код, посомтрите, пожалуйста в чем проблема!!! такое ощущение что к ключу не обращается вообще, сколько раз запускаю прогу, в MSG2.txt просто записывает 3 взятых с потолка символа, и каждый раз они одни и те же!

ИСПРАВЬТЕ пожалуйста ТУТ что не так!!! Буду очень благодарна!
 
Текущее время: 16:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru