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

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

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

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

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

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

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Объясните, плиз эту запись
Код:
Olimp car[f], *point=&car[0];
Ну типа так в инете вычитал как обращаться к динамической памяти и это работает!!!

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Зачем вы так делаете? И зачем вы делаете так:
Код:
for(int i=0;i<f;i++,point++,mat++)
  {
   cout<<endl<<"Enter the full name of the participant olympiad in informatics ";
   cin>>(*point).name;
Это тоже с инета и тоже работает(поправде говоря я и сам непонимаю как оно работает но "работае")
Если ваша программа имеет вид
#include<iostream.h> int main() { return 0; }
ТО вы без сомнений ГЕНИЙ!!!
LordFerrum вне форума Ответить с цитированием
Старый 02.04.2012, 08:31   #22
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
2010-я студия тоже не позволяет... Пичалька...
Тогда еще проще - не нужно никаких new и delete.
Сейчас уже вот такие речи все чаще слышать стал:

1) AVRStudio. Это переделанная VisualStudio со встроенным AssistX и компилятором gcc под Atmel контроллеры.
В принципе можно повозиться чтобы переделать под работу с mingw (по крайней мере я так думаю).
2) Сегодня обнаружил интересную вещицу http://visualgdb.com/

ссылка_на_соседний_портал(с)

/зы: мопед не мой, но суть в том, что студия людей все больше огорчает. Все больше людей переползает на другие ИДЕ, по возможности "похожие" на студию, но с моральными компиляторами.
_Bers вне форума Ответить с цитированием
Старый 02.04.2012, 09:01   #23
LordFerrum
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Я и говорю - сделайте без структуры, но правильно.
Код:
#include<iostream.h>
#include<conio.h>

int main()
{
    cout<<"Vvedite chislo uchasnikov olimpeade po mathemetics";
    int f;
    cin>>f;
     cout<<"Vvedite chislo uchasnikov olimpeade po informatice";
    int t;
    cin>>t;
    
    char m1[255],m2[255],m3[255];
    
    int i;
    for(i=0;i<f;i++)
    {
     cout<<"vvedite imya uchastnica olimp po matematice\n";
     cin>>m1[i];
    }
    
    int j;
    for(j=0;j<t;j++)
    {
     cout<<"\nvvedite imya uchastnica olimp po informatice\n";
     cin>>m2[j];
    }
    
    for( i=0;i<f;i++)
    for( j=0;j<t;j++)
    {
    if (m1[i]==m2[j])
    {
      m3[i]=m2[j];
      cout<<endl<<" "<<m3[i]<<" ";
      }
      else
      cout<<"no mathes";
    }
    int k ;
    cin>>k;
return 0;
}
Вот гдето так! как я вас понял!
Если ваша программа имеет вид
#include<iostream.h> int main() { return 0; }
ТО вы без сомнений ГЕНИЙ!!!

Последний раз редактировалось LordFerrum; 02.04.2012 в 09:22.
LordFerrum вне форума Ответить с цитированием
Старый 02.04.2012, 11:15   #24
zvoronz
Пользователь
 
Регистрация: 03.01.2011
Сообщений: 49
По умолчанию

Снимаю перед вами шляпу ACE Valery У меня терпения не хватает читать не код а чушь, такое чувство будто бы человек пишет и отправляет не проверяя на компилируемость и хотя бы более менее адекватную выполнимость

2LordFerrum
Ты понимаешь что ты делаешь в этом коде?
Код:
for(i=0;i<f;i++)
    {
     cout<<"vvedite imya uchastnica olimp po matematice\n";
     cin>>m1[i];
    }
Подумай ещё пару секунд.
А я вот вижу что ты видимо не понимаешь.
m1 массив символов? Следовательно конструкция обращения к элементу массива обратится к конкретному символу m1[i]? Если ты это понимаешь то зачем же ты пишешь такую чушь как приведено выше?
В выше приведенном коде ты просто считываешь первые 2-ва символа из потока ввода.
zvoronz вне форума Ответить с цитированием
Старый 02.04.2012, 13:46   #25
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
Ну типа так в инете вычитал как обращаться к динамической памяти и это работает!!!
Ну замечательно. Вопрос в том, ЗАЧЕМ вам обращаться к динамической памяти? Общими усилиями мы выяснили, что у вас массивы прекрасно создаются без динамической памяти. (В чем я вам несказанно завидую)
Код:
char m1[255],m2[255],m3[255];
char - символ
char [10] - массив символов, то бишь слово
Вам надо массив слов, то бишь массив массивов символов.
На моем компиляторе это примерно так:
Код:
char **total = new char*[count_all]; 
for(int k = 0; k < count_all; k++){
total[k] = new char[10]; //10 - это будет длина слова в массиве (можно любую указывать, в пределах разумного)
}
Как на вашем, я не знаю. Предположительно
Код:
char inform[count_inform][10]
Вообще вам бы следовало проверять свою программу прежде, чем скидывать на форум. И еще очень желательно называть переменные НОРМАЛЬНЫМИ именами. Потому что мне ни t, ни f ни о чем не говорит.
Еще сто раз было сказано, что сравнение строк проверяется функцией strcmp. А присваивание строк strcpy.
Код:
for( i=0;i<f;i++)
    for( j=0;j<t;j++)
    {
    if (m1[i]==m2[j])
    {
      m3[i]=m2[j];
      cout<<endl<<" "<<m3[i]<<" ";
      }
      else
      cout<<"no mathes";
    }
Теперь думайте как компилятор. У нас есть два студента, которые сдавали математику: Чижиков и Петров. И три студента, которые сдавали информатику: Иванов, Петров, Сидоров.
i = 0, студент Чижиков.
j = 0, студент Иванов.
Чижиков равен Иванову? Нет. Выводим на экран "no matches". Переходим в следующую итерацию.
i = 0, студент Чижиков.
j = 1, студент Петров.
Чижиков равен Петрову? Нет. Выводим на экран "no matches". Переходим в следующую итерацию.
i = 0, студент Чижиков.
j = 2, студент Сидоров.
Чижиков равен Сидорову? Нет. Выводим на экран "no matches". Переходим в следующую итерацию.
i = 1, студент Петров.
j = 0, студент Иванов.
Петров равен Иванову? Нет. Выводим на экран "no matches". Переходим в следующую итерацию.
i = 1, студент Петров.
j = 1, студент Петров.
Петров равен Петрову? Да. Присваиваем третьему массиву в позицию 1 (потому что i у нас равно 1) фамилию Петров. Переходим в следующую итерацию.
i = 1, студент Петров.
j = 2, студент Сидоров.
Петров равен Сидорову? Нет. Выводим на экран "no matches". Следующей итерации не будет, так как массивы закончились.

Смотрим, что получилось. На экране у нас 5 строк с фразой "no matches". А в массиве пустой нулевой индекс, в первом записан Петров. Хотя Петров должен быть записан в нулевом индексе. Я это к чему? К тому, что для третьего массива нужен свой счетчик, который будет идти с нуля и инкрементироваться только тогда, когда мы нашли совпадение. "no matches" вообще нужна только в том случае, если НИ ОДНОГО совпадения не было найдено.

Вижу, со строками у вас тоже плохо. Сделайте с массивом int. Пусть именем студента будет цифра. Может, так вам легче будет...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 02.04.2012, 14:48   #26
LordFerrum
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

ACE Valery мне наверно вас не понять как вы еше читаете мои бредни!
И за то что вы их читаете и подкидываете классные идеи (многие из которых до меня не доходят) я вам должен большую часть мировых денег и огромное спасибо! Прост я С++ начал изучать 1.5 недели назад.
В это моя и беда наверное.
А вот что насчёт
Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Еще сто раз было сказано, что сравнение строк проверяется функцией strcmp. А присваивание строк strcpy.
Я так понимаю strcmp это (=), а strcpy(==)? (только сильно не смейтесь с моей не образованности в С++).
Если ваша программа имеет вид
#include<iostream.h> int main() { return 0; }
ТО вы без сомнений ГЕНИЙ!!!

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

Цитата:
Прост я С++ начал изучать 1.5 недели назад.
То есть вы не студент и изучаете самостоятельно? Так вот что я вам скажу: до структур (в трех учебных заведениях) мы шли почти полгода. Ясно, что за полторы недели это не освоить, если вы не знаете основных принципов программирования.

Вообще я бы вам посоветовала MSDN. Или просто поискать в гугле непонятные вам функции, тем более, что язык развивается, там уже может все уже в сто раз проще, чем было в те времена, когда я писала на Си.

strcmp - сравнение строк (==)
strcpy - копирует строку (=)
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 02.04.2012, 16:04   #28
LordFerrum
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

Я как раз студент но так как мой прежний препод ЗАКОНЧЕНЫЙ алкаш был он мне не дал азов а новый препод пришол и не хрена не обьеснив (и не собераеться ничего объеснять) дал курсач писать!!! Вот я за 2 месяца должен догнать С++ и сделать курсач!

А вот такой вариант норм или нет??
Код:
#include<iostream.h>
#include<conio.h>

int main()
{
    cout<<"Enter the number of records in a table in computer science \n";
    int inf;
    cin>>inf;
    cout<<endl<<"Enter the number of records in a table in mathematics science \n";
    int mat;
    cin>>mat;
    int k;
    char **mas1=new char*[inf]; 
    for(k = 0; k <inf; k++)
    {
     mas1[k]=new char[10]; 
    }
    int i;
    for(i=0;i<inf;i++)
    {
      cout<<endl<<"Enter the full name of the participant olympiad in informatics ";
      cin>>mas1[i];
      }
      for(i=0;i<inf;i++)
    {
    cout<<"\n"<<mas1[i];
      }
   
   char **mas2=new char*[mat]; 
    for( k=0;k<mat; k++)
    {
     mas2[k]=new char[10];
    }
    
    cout<<endl;
   
    for(i=0;i<mat;i++)
    {
      cout<<endl<<"Enter the full name of the participant olympiad in mathematics ";
      cin>>mas2[i];
      }
      for(i=0;i<mat;i++)
    {
    cout<<"\n"<<mas2[i];
      }
     
      cout<<endl<<"\n "; 
      
      
      if(inf<mat)   //проверка размерности mas3
      {
    char **mas3 = new char*[mat]; 
    for( k=0; k <mat; k++)
     mas3[k] = new char[10];
     
      
      for(i=0;i<mat;i++)
      if( mas1[i]==mas2[i])
      {
          mas3[i]=mas1[i];
          }
       
       for(i=0;i<mat;i++)
        cout<<"Members two Olympiads\n"<<mas3[i];
         }
      
      
      if(mat<inf)   //проверка размерности mas3
      {
     char **mas3 = new char*[inf]; 
    for( k=0; k <inf; k++)
    mas3[k] = new char[10];
      
      
      for(i=0;i<inf;i++)
       if( mas1[i]==mas2[i])
      {
          mas3[i]=mas1[i];
          }
       
       for(i=0;i<inf;i++)
         cout<<"Members two Olympiads\n"<<mas3[i];
         
         if(mat=inf)
    char **mas3 = new char*[inf]; 
    for( k=0; k <inf; k++)
    mas3[k] = new char[10];
      
      
      for(i=0;i<inf;i++)
       if( mas1[i]==mas2[i])
      {
          mas3[i]=mas1[i];
          }
       
       for(i=0;i<inf;i++)
         cout<<"Members two Olympiads\n"<<mas3[i];
         
         }
         
    int r;
    cin>>r;
return 0;
}
И ешё у меня VisualStudio6.0!!!
Ну на компиле проверил немного есть псевдографики в конце!!!
Если ваша программа имеет вид
#include<iostream.h> int main() { return 0; }
ТО вы без сомнений ГЕНИЙ!!!

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

Цитата:
Ну на компиле проверил немного есть псевдографики в конце!!!
Вообще-то это не "немного", а ваша прога не работает. Итак, с горем пополам более-менее адекватного ввода данных я от вас добилась. Теперь переходим к самому главному.
Код:
if(inf<mat)   //проверка размерности mas3
      {
    char **mas3 = new char*[mat];
ДУМАЕМ. Если у нас сдали 3 студента математику и 2 информатику, сколько максимум может быть студентов, которые сдали и то, и то? Когда решите эту задачку, можете создавать третий массив. Не обязательно писать два раза все вычисления. В любом случае вычисления у вас будут одинаковыми. В условиях вы всего лишь узнаете размерность массива в отдельную переменную, а блок с подсчетом у вас должен быть один.

Код:
   if( mas1[i]==mas2[i])
      {
          mas3[i]=mas1[i];
          }
По этому коду я вам уже объясняла в сообщении №25. И про сравнение строк, и про присваивание строк, и про индексы массивов. Про циклы я писала в сообщении №15 (о том, сколько их должно быть и как они должны выглядеть).
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 02.04.2012, 21:07   #30
LordFerrum
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

Уважаемая ACE Valery наконецто я понял большинство советов и кодов которые вы мне давали!
Вот результат дошедших МЫСЛЕЙ :
Код:
#include<iostream.h>
#include<conio.h>
#include <string.h>
int main()
{

/*struct Student 
     {
char name [10];
int  rat[3];
int pos[3];
     };
  */  
     cout<<"Enter the number of records in a table in computer science \n";
int inf;
       cin>>inf;
    cout<<endl<<"Enter the number of records in a table in mathematics science \n";
int mat;
       cin>>mat;
int k;
    
    char **informatics=new char*[inf]; 
    for(k = 0; k <inf; k++)
    {
     informatics[k]=new char[10]; 
    }
int i;
    for(i=0;i<inf;i++)
    {
      cout<<endl<<"Enter the full name of the participant olympiad in informatics ";
      cin>>informatics[i];
      }
      for(i=0;i<inf;i++)
    {
    cout<<"\n"<<informatics[i];
      }
   
    char **mathematics=new char*[mat]; 
     for( k=0;k<mat; k++)
     {
      mathematics[k]=new char[10];
     }
    
    cout<<endl;
   
    for(k=0;k<mat;k++)
    {
      cout<<endl<<"Enter the full name of the participant olympiad in mathematics ";
      cin>>mathematics[k];
    }
    for(i=0;i<mat;i++)
    {
      cout<<"\n"<<mathematics[i];
    }
     
      cout<<endl<<"\n "; 
     
int counter=0;
   
    char **mas3 = new char*[mat]; 
     for( k=0; k <mat; k++)
      mas3[k] = new char[10];
     
      for(i=0;i<inf;i++)
      for(k=0;k<mat;k++)
       if(strcmp(informatics[i],mathematics[k])==0)
       {
          mas3[i]=informatics[i];
           counter++; 
        }
        
      for(i=0;i<counter;i++)
       cout<<endl<<"Members two Olympiads\n"<<mas3[i];
  
int r;
    cin>>r;
return 0;
}

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

Последний раз редактировалось LordFerrum; 02.04.2012 в 21:13.
LordFerrum вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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