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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2012, 14:12   #1
LordFerrum
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

Уважаемый народ подмогните!!!;
Куча ошибок и незнаю что делать!!;
вот сама прога:
Код:
#include<iostream.h>
#include<conio.h>
int main ()
{
 struct OlimpInf {
        char name[10];
        char rating[3];
        char position[3];
        };
 struct OlimpMat{
        char namem[10];
        char ratingm[3];
        char positionm[3];
        };
 struct Olimp{
       char namet[10];
       char ratingt[3];
       char positiont[3];
        };

 cout<<"Enter the number of records in a table in computer science \n";
 char inf;
 cin>>inf;
 
 cout<<endl<<"Enter the number of records in a table in mathematics science \n";
 int mat;
 cin>>mat;
 
 OlimpInf car[inf], *fkp=&car[0]; 
 for(int i=0;i<inf;i++,fkp++)
 {
         cout<<endl<<"Enter the full name of the participant olympiad in informatics ";
         cin>>(*fkp).name;
         cout<<endl<<"Enter the rating(from 0 and to 100) of the participant olympiad in informatics ";
         cin>>(*fkp).rating;
         cout<<endl<<"Enter the session participants stand olympiad in informatics \n (from 0 and to 100) ";
         cin>>(*fkp).position;
 }
 fkp-=inf;
 
 
 OlimpMat car[mat], *fkk=&car[1]; 
 for(int j=0;j<mat;j++,fkk++)
 {
         cout<<endl<<"Enter the full name of the participant olympiad in mathematics ";
         cin>>(*fkk).namem;
         cout<<endl<<"Enter the rating(from 0 and to 100) of the participant olympiad in mathematics ";
         cin>>(*fkk).ratingm;
         cout<<endl<<"Enter the session participants stand olympiad in mathematics \n (from 0 and to 100) ";
         cin>>(*fkk).positionm;         
}
fkk-=mat;
 
 OlimpMat car[mat+inf], *fpk=&car[2];
 if(OlimpMat.namem=OlimpInf.name)
 {
 for(int k=0;k<inf+mat;k++,fpk++)
 {
       (*fpk).namet=(*fkp).name;
       (*fpk).ratingt=(*fkp).rating;
       (*fpk).positiont=(*fkp).position; 
}
fpk-=mat+inf;
}
else 
cout<<"No matches";
return 0;
}
Если ваша программа имеет вид
#include<iostream.h> int main() { return 0; }
ТО вы без сомнений ГЕНИЙ!!!

Последний раз редактировалось ACE Valery; 31.03.2012 в 16:48.
LordFerrum вне форума Ответить с цитированием
Старый 31.03.2012, 16:49   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Сорри, наверное, еще сплю... Объединила сообщения там, где не надо было. Вот вам ответили на ваш вопрос:
Цитата:
1. Определять статические массивы с помощью переменной нельзя, используй динамическое выделение памяти.
OlimpInf car[inf], *fkp=&car[0]; // замени на следующее
OlimpInf *car, *fkp;
car = new OlimpInf[inf]; fkp = car;
В конце программы соответственно сделай освобождение динамической памяти
delete[] car;
2. Опиши саму суть задачи, последний код совершенно непонятно что должен делать, для чего тебе массив размером как сумма 2-х предыдущих?
3. Используй либо спецификатор std:: перед cin, cout. Либо пропиши using namespace std; после всех инкладов.
4. char inf; замени на int inf;
(прошу прощения у автора данного сообщения)
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 31.03.2012, 20:21   #3
LordFerrum
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
Радость

Спасибо огромное!!!!

Тема задания:
Использование структур в С++;
Суть задачи вот:
В одном списке инф. про студентов, что принимали участие в олимпиаде по математике, в другом - по информатике. Сформировать третий список с учениками, что участвовали в обоих олимпиадах;

А если заменить
char inf;
на
int inf;
то ошибок при компиле намного больше!!!

Извини ACE Valery за мою не образованность в С++ но чегото заменив
Код:
OlimpInf car[inf], *fkp=&car[0];
на
Код:
OlimpInf *car, *fkp;
 car = new OlimpInf[inf]; 
 fkp=car;
ошибок стало на 14 больше.
Может я чегото недогоняю???

Всё изменил но почемуто ругается вот здесь
Код:
Olimp *rank, *fpk;
rank = new Olimp[b]; 
fpk=rank; 
 
 if(OlimpMat.namem=OlimpInf.name)+++++++++++++++++++++++++++Сюда орёт что expected primary-expression before '.' token 
 {
 for(int k=0;k<b;k++,fpk++)
 {
cout<<(*fkp).name<<"\n";
cout<<(*fkp).rating<<"\n";
cout<<(*fkp).position<<"\n";
}
fpk-=b;
delete[] rank;
}
else 
cout<<"No matches";

Как с такой какой бороться???
Если ваша программа имеет вид
#include<iostream.h> int main() { return 0; }
ТО вы без сомнений ГЕНИЙ!!!

Последний раз редактировалось LordFerrum; 01.04.2012 в 17:05.
LordFerrum вне форума Ответить с цитированием
Старый 31.03.2012, 23:02   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Ммм...
Код:
if(OlimpMat.namem=OlimpInf.name)
Тут нужно не =, а ==

Код:
OlimpMat.namem
Так писать нельзя. OlimpMat - это тип. Можно объявить переменную типа OlimpMat, например
Код:
OlimpMat om
а потом брать у него имя
Код:
om.namem
Зачем вам три одинаковые структуры? Тут хватит одной. А вот массивов должно быть три: в одном математики, в другом информатики, в третьем - оба. Дальше вам нужно сделать цикл в цикле, где вы проверите, есть ли в одном массиве студенты, которые есть в другом. Судя по всему, у вас проверка будет идти по имени студента. Если есть, записываете студента в третий массив.

По правилам оформления сообщений:
1) задание пишется на русском языке
2) если нужно дописать сообщение, есть кнопка "Правка/Редактирование". Кучу сообщений плодить не нужно
3) код оформлять нужно тегом [code].
[ CODE ]ваш код[ / CODE ] (без пробелов в теге, разумеется)
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 31.03.2012, 23:16   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2ACE Valery
Цитата:
Тут нужно не =, а ==
o rly?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 01.04.2012, 00:59   #6
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

А с каких пор в Си в условиях ставится присваивание?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 01.04.2012, 01:10   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Валерия, ну вполне себе ставяться
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.04.2012, 11:45   #8
LordFerrum
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

Спасибо модеру за совет насчёт 3-х массивов вот я набросал быстренько код:
Код:
 #include<iostream.h>
#include<conio.h>
int main()
{
 cout<<"Enter the number of records in a table in computer science \n";
 int f;
 cin>>f;
 
 cout<<endl<<"Enter the number of records in a table in mathematics science \n";
 int t;
 cin>>t;
  
 int s;
 s=f+t;
  struct Olimp 
  {
        char inf;
        char mat;
        char total;
  };
 


for(int i=0;i<f;i++)
for(int j=0;j<3;j++)
{
         cout<<endl<<"Enter the full name of the participant olympiad in informatics ";
         cin>>inf.mas1[i][0];
         cout<<endl<<"Enter the rating(from 0 and to 100) of the participant olympiad in informatics ";
         cin>>inf.mas1[i][1];
         cout<<endl<<"Enter the session participants stand olympiad in informatics \n (from 0 and to 100) ";
         cin>>inf.mas1[i][2];

}

for(int k=0;k<t;k++)
for(int l=0;l<3;l++)
{
         cout<<endl<<"Enter the full name of the participant olympiad in mathematics \n";
         cin>>mat.mas2[k][0];
         cout<<endl<<"Enter the rating(from 0 and to 100) of the participant olympiad in mathematics \n";
         cin>>mat.mas2[k][1];
         cout<<endl<<"Enter the session participants stand olympiad in mathematics \n (from 0 and to 100) ";
         cin>>mat.mas2[k][2];

}


if(inf.mas1[i][0]=mat.mas2[k][0])
 for(int a=0;a<s;a++)
 for(int d=0;d<3;d++)
 {
total.mas3[a][0]=inf.mas1[i][0];
cout<<total.mas3[a][0]<<"\n";
total.mas3[a][1]=inf.mas1[i][1];
cout<<total.mas3[a][1]<<"\n";
total.mas3[a][2]=inf.mas1[i][2];
cout<<total.mas3[a][2]<<"\n";
}
else 
cout<<"No matches";




return 0;
}
Я до банальности почти незнаю орфографию записи структур в С++.
У меня опять ругня при компиле на то что
Код:
cin>>inf.mas1[i][0];
cin>>mat.mas2[i][0];
cin>>total.mas1[i][0];
Ошибка типа
inf' undeclared (first use this function)
по русски говоря
переменная 'inf" не объявлена и сначало нужно использовать эту функцию!

Что делать подскажите!
за раннее спасибо!
Если ваша программа имеет вид
#include<iostream.h> int main() { return 0; }
ТО вы без сомнений ГЕНИЙ!!!

Последний раз редактировалось LordFerrum; 01.04.2012 в 13:37.
LordFerrum вне форума Ответить с цитированием
Старый 01.04.2012, 12:27   #9
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2ACE Valery
Цитата:
Тут нужно не =, а ==
o rly?
Цитата:
Сообщение от ACE Valery
А с каких пор в Си в условиях ставится присваивание?
Как я понимаю, уважаемый pproger придерживается принципа "имеющий уши да услышит!". Буду рад ошибиться, но, по-моему, в этот раз его не услышали. Для "неуслышавших":
Код:
#include <stdio.h> 
#include <string.h>

int main() {

   struct OlimpMat {
      char namem[10] ;
   } ;

   struct OlimpMat man1, man2 ;

   strcpy( man1.namem, "Ivanov" ) ;
   strcpy( man2.namem, "Ivanov" ) ;

   if ( man1.namem == man2.namem ) 
//   if ( strcmp( man1.namem, man2.namem ) == 0 )
      printf( "=" ) ;
   else
      printf( "!=" ) ;
   printf( "\n" ) ;

   return 0 ;

}
Что выведет эта программка?
Vago вне форума Ответить с цитированием
Старый 01.04.2012, 13:02   #10
LiuLiuJons
Форумчанин
 
Регистрация: 28.12.2011
Сообщений: 124
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Что выведет эта программка?
Ой, какая классная штука )

А что же здесь сравнивается:
Код:
( man1.namem == man2.namem )
?
"Думай не о задаче, а о решении" (с)
LiuLiuJons вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структуры Alexander1205 Общие вопросы C/C++ 12 15.04.2011 21:15
Структуры Juguar Помощь студентам 0 12.01.2011 17:17
C++ структуры Chica Bond Общие вопросы C/C++ 6 01.05.2010 01:21
Структуры. Влад-mego Помощь студентам 1 12.04.2009 19:24
Структуры в СИ ManInBlack Помощь студентам 3 04.04.2009 19:08