Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Прошу помочь найти ошибку в программе.

Ответить
Настройки темы
Прошу помочь найти ошибку в программе.
Sox Sox вне форума

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Sox
Дата: 04-12-2005
Всем привет!
У меня вот возник такой вопрос, на который я уже совершенно не знаю ответа....
я как бы занимаюсь в данное время изучением программирования на языке С с использованием массивов и на данном этапе передо мной встал такой вопрос:
необходимо написать программу:
Вводится ряд Т, состоящий из символов, затем вводятся значения символов u и v. Программа заменяет в ряду Т значения символа u на значения символа v и наоборот, значения символа v на значения символа u. Т.о. формируется ряд Q, который и выводится на экран. Как я понял, Т, Q, u, v - это все массивы. Все это выглядит примерно так:
T= asdafgfh
v=a;
u=f;
Q=fsdfagah
Ну и написал я как бы соответствующую программу:

#include <stdio.h>
int main()
{
char T[10], Q[10], v[1], u[1];//* u, v - это у нас массивы, состоящие из 1-ого элемента*//
char temp[10];
int i=0;

{ printf("Enter T: ", T[10]);
scanf("%s", &T[10]);
T[10]=temp[10];//* отправляем полученный ряд Т во временную папку temp*//
temp[10]=Q[10];//*как бы присваиваем ряду Q значения ряда Т, т.е. т.о. ряд Q у нас формируется из символов ряда T*// }
printf("Please, enter u:", u[1]);
scanf ("%s", & u[1]);
printf("Please, enter v:", v[1]);
scanf ("%s", & v[1]);
do { Q[i]=0;//* Определяем i-тый элемент ряда Q*// }
while ((i=i+1)<=10);
do { temp[i]=0;//*Определяем i-тый элемент ряда temp (Q=T=temp)*// }
while ((i=i+1)<=10);
for(i = 0; i<=10; ++i)
if(Q[i]==u[1])
{ Q[i]==v[1]; }
else
{ Q[i]==temp[i]; }//*Если и-тый элемент равен значению u, меняем его на значение v, в противном случае он равен своему прежнему значению, взятому из temp*//
if (Q[i]==v[1])
{ Q[i]==u[1]; }
else
{ Q[i]==temp[i]; }//* то же самое, только теперь с v*//
Q[10]==Q[1]&&Q[2]&&Q[3]&&Q[4]&&Q[5]&&Q[6]&&Q[7]&&Q[8]&&Q[9];
{ printf("Q=10.0 %s/n",Q[10]);
}


Вот только программа эта не работает... она запускается, запрашивает введение T, u, v, а потом просто выдает ошибку segmentation fault. Кто-нибудь может подсказать почему? Спасибо....

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Отправлено: 12:38, 04-12-2005

 
Sox Sox вне форума Автор темы

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Zippy
Щас посмотрим...

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Отправлено: 17:54, 04-12-2005 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Zippy

Старожил


Сообщения: 278
Благодарности: 2

Профиль | Отправить PM | Цитировать


Вот код:
Код: Выделить весь код
#include <stdio.h>
#include <string.h>
#define N 10
 
void main()
{
char T[ N ], Q[ N ]; // Объявляем массивы
char v, u, tmp; // Заменяемые символы
int i = 0; // счетчик
int lenQ = 0; // Длина строки
 
 
// Вводим данные
printf( "Enter T: " );
scanf( "%s", T );
printf( "\nPlease, enter u:" );
scanf ( "\n%1s", &u );
printf( "\nPlease, enter v:" );
scanf ( "\n%1s", &v );
 
// Выводим полученные данные
printf( "\nYou entered: T=%s, u=%c, v=%c", T, u, v );
 
// Копируем Т в Q
strcpy( Q, T );
 
// Получаем и выводим длину строки
lenQ = strlen( Q );
printf( "\nLength T: %d\n", lenQ );
 
// Пробегаем в цикле по строке
for( i = 0; i < lenQ; i++ )
{
tmp = Q[ i ];
if( tmp == u )
Q[ i ] = v;
if( tmp == v )
Q[ i ] = u;
}
// Выводим результат
printf( "\nResult Q: %s", Q );
}
 
Результат:
Enter T: asdafgfh
Please, enter u:a
Please, enter v:f
You entered: T=asdafgfh, u=a, v=f
Length T: 8
Result Q: fsdfagah
C тебя пиво!!!

Отправлено: 18:15, 04-12-2005 | #12

Sox Sox вне форума Автор темы

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Щас потестим... если заработает, кидай адрес, пришлю!

На первый взгляд выглядит неплохо!

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Отправлено: 18:17, 04-12-2005 | #13


Аватара для Zippy

Старожил


Сообщения: 278
Благодарности: 2

Профиль | Отправить PM | Цитировать


Хм, странный здесь контейнер code, куда он все пробелы мои дел в начале каждой строки? Да и еще это полоса прокрутки, неудобно с ней...

Отправлено: 18:21, 04-12-2005 | #14

Sox Sox вне форума Автор темы

Аватара для Sox

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Zippy
И правда работает!
Кидай свой адрес куда-нибудь, такая помощь не может остаться без вознаграждения...

-------
-Мы - за собак...
-А мы - ЗаПЧЕЛ


Отправлено: 19:12, 04-12-2005 | #15


Аватара для Duddits

Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


mar
Ну скорее зависит от компиллятора имхо.....

-------
Если вам советуют использовать v.begin() вместо &v[0] - меняйте круг общения!


Последний раз редактировалось Duddits, 05-12-2005 в 09:04.


Отправлено: 08:47, 05-12-2005 | #16



Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Прошу помочь найти ошибку в программе.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Обработка массивов данных, программа на паскале. Не могу найти ошибку в программе yulia_hoi Программирование и базы данных 6 08-01-2010 14:50
[решено] Прошу помочь evm180 Лечение систем от вредоносных программ 23 24-02-2009 08:35
Очень прошу помочь... aviss Выбор отдельных компонентов компьютера и конфигурации в целом 6 09-08-2008 23:26
Интерфейс - Прошу помочь со стайлбулдером ! Tanr Хочу все знать 1 25-04-2008 19:36
DRVSPACE. Очень прошу помочь! dima123 Microsoft Windows 95/98/Me (архив) 3 27-02-2005 16:35




 
Переход