|
|
|
| Здравствуйте друзья!
помогите новичку плз)
Есть такая задача.
Необходимо прочитать из текстового файла числа следующего вида
1 72 3 4 -5
3 5 9 767 3
5 -77 9 0 2
-7 667 4 71 3
0 7 345 3 0
и записать их в двумерный числовой массив a[i][j]. (пробелы не учитываются) Ну и далее уже работать с числами: найти произведение элементов главной диагонали и т.д....
Вобщем вот мой код)
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
int main(void)
{
int a[5][5], i, j;
FILE * fp;
fp=fopen("C:\Program Files\Microsoft Visual Studio\MyProjects\zadanie2\Debug\mas.txt", "rb"); //полный путь к файлу
for(i=0; i<5; i++)
for(j=0; j<5; j++)
while ((a[i][j] = getch()) != EOF)
{
if((a[i][j] = getch()) != (char)" ")
{
putch(a[i][j]);
printf("%d", a[i][j]);
}
}
fclose(fp);
for(i=0; i<5; i++)
for(j=0; j<5; j++)
printf("%d", a[i][j]);
return 0;
} | |
|
|
|
|
автор: heed (29.11.2009 в 01:13) |
|
|
для: afing
(28.11.2009 в 14:51)
| | я тоже не намного дальше ушёл :)
#include "stdio.h"
int main(void)
{
int a[5][5], i, j;
FILE * fp;
fp=fopen("d:\\_zzz.txt", "rb"); //полный путь к файлу
for(i=0; i<5; i++)
{
fscanf( fp, "%d %d %d %d %d "
, &a[i][0], &a[i][1], &a[i][2], &a[i][3], &a[i][4]);
}
fclose(fp);
for(i=0; i<5; i++) {
for(j=0; j<5; j++) {
printf("\t%d", a[i][j]);
}
printf("\n");
}
return 0;
} |
| |
|
|
|
|
|
|
|
для: heed
(29.11.2009 в 01:13)
| | Спасибо, но все равно не пашет(((
а я пробую так
#include "stdio.h"
int main(void)
{
int a[5][5], i, j;
FILE * fp;
fp=fopen("C:\Program Files\Microsoft Visual Studio\MyProjects\zadanie2\Debug\mas.txt", "rb"); //ïîëíûé ïóòü ê ôàéëó
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
if((a[i][j] = getc(fp)) != ' ') putc(a[i][j], fp);
}
fclose(fp);
for(i=0; i<5; i++) {
for(j=0; j<5; j++) {
printf("\t%d", a[i][j]);
}
printf("\n");
}
return 0;
}
|
и толку 0 все равно... есть еще какие идеи?) | |
|
|
|
|
автор: .... (29.11.2009 в 17:42) |
|
|
для: afing
(29.11.2009 в 14:44)
| | Ваш код у меня первой строкой выводит 49 55 32 51 52
вместо того что в файле 1 72 3 4 -5
свой код запускал из под Visual Studio 98 AKA Visual C++ 6
в VC9 тоже всё работает , не считая предупреждений
1>Компиляция...
1>9.cpp
1>c:\_projects\vs\projects\9\9\9.cpp(8) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237): см. объявление 'fopen'
1>c:\_projects\vs\projects\9\9\9.cpp(12) : warning C4996: 'fscanf': This function or variable may be unsafe. Consider using fscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(256): см. объявление 'fscanf'
..............
1>9 - ошибок 0, предупреждений 2
В VC8 решил не проверять
В DevCpp работает
В PellesC с компилятором lss тоже всё нормально скомпилировалось и работает ,
А borlandС++builder я решил пока не ставить ,) ибо мне хватает.
а это
>Ну и далее уже работать с числами: найти произведение элементов главной диагонали и т.д....
я даже и понятия не имею какая из двух диагоналей в прямоугольнике главнее | |
|
|
|
|
автор: heed (29.11.2009 в 17:56) |
|
|
для: afing
(29.11.2009 в 14:44)
| | даже проверил в Visual C++ Toolkit 2003 Command Promt
C:\_PROJECTS\vs\9>cd c:\_PROJECTS\vs\9
C:\_PROJECTS\vs\9>cl 1.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3052 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
1.cpp
Microsoft (R) Incremental Linker Version 7.10.3052
Copyright (C) Microsoft Corporation. All rights reserved.
/out:1.exe
1.obj
C:\_PROJECTS\vs\9>link 1.obj
Microsoft (R) Incremental Linker Version 7.10.3052
Copyright (C) Microsoft Corporation. All rights reserved.
C:\_PROJECTS\vs\9>1.exe
1 72 3 4 -5
3 5 9 767 3
5 -77 9 0 2
-7 667 4 71 3
0 7 345 3 0 |
| |
|
|
|
|
|
|
|
для: heed
(29.11.2009 в 17:56)
| | ну я в Visual C++ 6.0 работаю как консольное приложение...)
можт в этом проблема... с компиляцией??( | |
|
|
|
|
автор: heed (30.11.2009 в 13:06) |
|
|
для: afing
(29.11.2009 в 23:03)
| | привели-бы сообщение об ошибке
судя по #include "stdafx.h" в п1
Вы создавали не пустой проект
Выбор "Консольное приложение" определяет только будет-ли добавлено /D "_CONSOLE" к параметрам для линкера, и как следствие будет-ли ожидаться main()
или WinMain() , если было /D "_WINDOWS"
Просто создайте новый пустой консольный проект , а потом вручную создайте или откройте с/cpp файл | |
|
|
|
|
 62.4 Кб |
|
|
для: heed
(30.11.2009 в 13:06)
| | вот такая ошибка вылазит( | |
|
|
|
|
автор: heed (30.11.2009 в 17:26) |
|
|
для: afing
(30.11.2009 в 14:48)
| | что-то не смог получить у себя такую ошибку
я-бы просто попробовал чего получится если в строке меню
"Build"->"Set Active Configuration.."
Выбрать Release вместо Debug
Но у меня работает и при Debug, а с помощью fgetc() можно тоже сделать
, только это заметно больше кода получится
fscanf вроде самая стандартная , если поставить галочку в свойствах проекта там где
Линкер Кустомайзе "print process message"
, то
...................
Searching C:\Program Files\Microsoft Visual Studio\VC98\LIB\LIBCD.lib:
Found _printf
Referenced in x.obj
Loaded LIBCD.lib(printf.obj)
Found _fclose
Referenced in x.obj
Loaded LIBCD.lib(fclose.obj)
Found _fscanf
Referenced in x.obj
Loaded LIBCD.lib(fscanf.obj)
......... |
то видно что она просто берётся из LIBCD.lib, а fscanf.c он вроде даже и не компилируется, он уже лежит в этой LIBCD.lib вместе с _assert()
, если Releas всё тоже самое но с LIBC.lib | |
|
|
|
|
|
|
|
для: heed
(30.11.2009 в 17:26)
| | дэбаг на релиз поменял... ну теперь вылазит отчет об ошибке как в обычной проге...=(
наверное просто с вижуал студио проблемы какие или еще там что в этом роде...
а у вас и массив формируется и все дела? да?? | |
|
|
|
|
автор: heed (01.12.2009 в 00:10) |
|
|
для: afing
(30.11.2009 в 19:31)
| | зато у меня отладчик так не работает :)
А что скажет например на sscanf() ?
#include "stdio.h"
#include "windows.h"
typedef unsigned int uint;
int ShowErrorMessage( char*);
int ShowErrorMessage( char txt[] ) { // GetLastError()
char* lpBuffer;
char* szBuf = (char*) LocalAlloc(LPTR, 100); //выделение памяти
int err = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM
,0, err, LANG_NEUTRAL, (LPTSTR)&lpBuffer,1024,0);
wsprintf(szBuf,
"код:%#08lx %s", err, txt);
err = MessageBox(0, lpBuffer, szBuf
, MB_ICONERROR |MB_RETRYCANCEL |MB_DEFBUTTON2);
LocalFree(lpBuffer); //освобождение памяти
LocalFree(szBuf); //освобождение памяти
return err;
}
/////////// main ///////////////
int main(void)
{
int a[5][5], i, j;
FILE * fp;
char buff[1024];
OPEN_FILE:
fp=fopen("d:\\_zzz.txt", "rb"); //полный путь к файлу
i=0;
while( !feof(fp) )
{
if( fgets( buff, 1023, fp ) == NULL )
break;
sscanf(buff, "%d %d %d %d %d "
, &a[i][0], &a[i][1], &a[i][2], &a[i][3], &a[i][4]);
i++;
}
ShowErrorMessage("проверка");
fclose(fp);
for(i=0; i<5; i++) {
for(j=0; j<5; j++) {
printf("\t%d", a[i][j]);
}
printf("\n");
}
if ( ShowErrorMessage("повторить") == IDRETRY) goto OPEN_FILE;
return 0;
} |
| |
|
|
|
|
|
|
|
для: heed
(01.12.2009 в 00:10)
| | тот же отчет об ошибке, та же лажа...=)
вобщем с компилятором походу какая то беда...
ну все равно СПАСИБО ОГРОМНОЕ за помощь!!!) | |
|
|
|