forum.rastrnet.ru  

Вернуться   forum.rastrnet.ru > Компьютеры и всё, что с ними связано > Программируем

 Сообщения за день       Добавить альбом       Поиск      Правила форума  


Ответ
 
Опции темы Опции просмотра
Старый 12.12.2007, 22:11   #31
REY
Trader & Freediver
 
Аватар для REY
 
Регистрация: 27.06.2007
Сообщений: 61
По умолчанию

Товарищи, есть небольшой теоретический вопрос, подскажите пожалуйста. а то я сейчас голову об стену разобью.
Вобщем есть у меня в функции main структура под кодовым названием TEL. Еще объявленна переменная структуы, следующим образом, TEL t[N] (N просто константное число).
Как передать эту структуру вместе с переменной в функцию. т .е какие у этой функции будут параметры. Прототип такой:
void InStruct(...) . Я пробовол что-то вроде struct TEL &t, но не то. Кто подскажет как правильно?
__________________
Не в деньгах счастье, но и не в их отсутствии.
REY вне форума   Ответить с цитированием
Старый 13.12.2007, 08:19   #32
Casy
Программист
 
Аватар для Casy
 
Регистрация: 18.07.2004
Сообщений: 455
Отправить сообщение для Casy с помощью ICQ
По умолчанию

Могу ошибаться, но по моему никак. Страктура - это тип, и если он объявлен внутри какой-то функции (в твоем случае функции main), то и пользоваться им можно только внутри этой функции. Если вынесешь объявление за пределы функции (как правило сразу после include'ов), то функцию можно будет объявить так:
void InStruct(TEL *t, int size)
{
...
}
Casy вне форума   Ответить с цитированием
Старый 13.12.2007, 10:32   #33
TiRex
Red Machine!
 
Аватар для TiRex
 
Регистрация: 18.07.2004
Сообщений: 1,401
По умолчанию

Переменную передать можно примерно так
void InStruct(void *t,int size);
правда работать ты с ней нормально не сможешь

Читай внимателньей главу про область видимости имён.
__________________
1: Андрей, я тебя ненавижу!
2: Хм, надо же. А кого ненавижу я? А давай угадывать?
TiRex вне форума   Ответить с цитированием
Старый 13.12.2007, 17:21   #34
REY
Trader & Freediver
 
Аватар для REY
 
Регистрация: 27.06.2007
Сообщений: 61
По умолчанию

Спасибо. Сегодня на лабараторной работе использовал вариант, как у Case. Все дело было в том, что шаблон структуры надо было объявить и в функции - я этого не знал
__________________
Не в деньгах счастье, но и не в их отсутствии.
REY вне форума   Ответить с цитированием
Старый 14.12.2007, 01:19   #35
Димка
Профи
 
Аватар для Димка
 
Регистрация: 28.05.2007
Сообщений: 1,290
По умолчанию

Ребята выручайте плиз.
Товарищу прогу нада написать.
у него ошибка где не знаю проги нету.
Вот условие:
Написать программу которая проверяет, является ли введённая с клавиатуры строка двоичным числом.

завтро я спрошу как решал, у него не получилось. если не трудно попробуйте написать.
__________________
Димка вне форума   Ответить с цитированием
Старый 15.12.2007, 10:21   #36
TiRex
Red Machine!
 
Аватар для TiRex
 
Регистрация: 18.07.2004
Сообщений: 1,401
По умолчанию

printf("%s",str); считывает лишь 1 слово (до пробела илим переноса строки, может даже до табуляции, точно незнаю)
__________________
1: Андрей, я тебя ненавижу!
2: Хм, надо же. А кого ненавижу я? А давай угадывать?
TiRex вне форума   Ответить с цитированием
Старый 15.12.2007, 22:21   #37
ZiC_
программист
 
Аватар для ZiC_
 
Регистрация: 09.10.2005
Сообщений: 83
По умолчанию

Тирекс, а как в массив тогда записать? Надо ведь заранее знать количество слов. Значит либо дважды проходить весь файл (в первый раз, чтоб узнать количество слов), но это некрасиво. Использовать списки - думаю пока сложновато для авторов поста. Изучить STL??? Им все таки проще дважды файл пройти)))
Ах да, есть ведь еще вариант создать нереально большой массив, в которых можно запихать дофига и больше слов. Никогда не любил этот вариант, особенно после того, как некоторые преподы специально делали файл, который не влезал в мой массив Но, пожалуй, в данном случае он подойдет лучше остальных
__________________
"Нельзя бояться, страх убивает разум" Ф. Герберт

Последний раз редактировалось ZiC_; 15.12.2007 в 22:25.
ZiC_ вне форума   Ответить с цитированием
Старый 16.12.2007, 03:00   #38
TiRex
Red Machine!
 
Аватар для TiRex
 
Регистрация: 18.07.2004
Сообщений: 1,401
По умолчанию

Цитата:
Сообщение от ZiC_ Посмотреть сообщение
Тирекс, а как в массив тогда записать? Надо ведь заранее знать количество слов. Значит либо дважды проходить весь файл (в первый раз, чтоб узнать количество слов), но это некрасиво. Использовать списки - думаю пока сложновато для авторов поста. Изучить STL??? Им все таки проще дважды файл пройти)))
Ах да, есть ведь еще вариант создать нереально большой массив, в которых можно запихать дофига и больше слов. Никогда не любил этот вариант, особенно после того, как некоторые преподы специально делали файл, который не влезал в мой массив Но, пожалуй, в данном случае он подойдет лучше остальных
ведь я не предлагал что-то сложнее чем записать пословно. Главное что можно сохранять строку str с scanf("%s",str), дальше уж воля разума как ты это дело обрабатывать будешь. Хочешь делай огромнейший массив, хочешь в списки помещай, я попытался полегче ответить на заданый вопрос
__________________
1: Андрей, я тебя ненавижу!
2: Хм, надо же. А кого ненавижу я? А давай угадывать?
TiRex вне форума   Ответить с цитированием
Старый 17.12.2007, 19:47   #39
MebiuS
[3912]
 
Аватар для MebiuS
 
Регистрация: 09.10.2004
Сообщений: 5,600
Отправить сообщение для MebiuS с помощью ICQ
По умолчанию

Цитата:
Сообщение от Incognito Посмотреть сообщение
Ты не понял fprintf и fscanf это ф-ции записи и чтения из файла.
Цитата:
#include<stdio.h>
#include<conio.h>

void vvod(char *name,int *a, int n, int m)
{
FILE *f=fopen(name,"r");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
fscanf(f,"%d",&a[i*m+j]);
}
fclose(f);
}

void vivod(int *a, int n, int m)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
printf(" %d",a[i*m+j]);
printf("\n");
}
printf("\n");
}


void main()
{
const n=3, m=4;
char matrica_a[]="matrica_a.txt";
char matrica_b[]="matrica_b.txt";
int a[n][m], b[n][m], x1, y1, x2, y2;
vvod(matrica_a,a[0],n,m);
vvod(matrica_b,b[0],n,m);
printf("\n Matrica A chitannaya is faila: \n");
vivod(a[0],n,m);
printf("\n Matrica B chitannaya is faila: \n");
vivod(b[0],n,m);

printf("\n Najmite lubyu klavishy dlya vihoda");
getch();
}
это?
__________________
Сдохни, тостер, сдохни
MebiuS вне форума   Ответить с цитированием
Старый 17.12.2007, 21:33   #40
Diom
заблудился
 
Аватар для Diom
 
Регистрация: 12.10.2005
Сообщений: 199
По умолчанию

fscanf(<указатель>,"<управляющая строка>",<список ввода>);
Указатель - указатель на файл, управляющая строка - сам текст, список ввода - переменные. Также и с директивой fprintf.
В твоем примере в printf нет списка переменных и точки с запятой после директивы.
В программе сплошные ошибки, она у тебя на считывании массива в бесконечный цикл войдет.))
__________________
Diom вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 23:05. Часовой пояс GMT +7.


Powered by vBulletin® Version 3.8.4 Patch Level 5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Форум открыт в июле 2004 г.
Кошки и котята Красноярска и Сибири Живой Мир Сибири