Ошибки при компиляции - исправить ошибки в коде - C (СИ)
Формулировка задачи:
Помогите исправить ошибки , не понимаю в чем может быть причина ...
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string.h>
void ctenie (int mas, int n ,int m)
{
int i,j;
printf(" Vvedite razmer matrici:\n" );
scanf("%d%d",&n,&m);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
scanf("%d",&mas[i][j]);
}
}
}
int random (int mas ,int n ,int m)
{
int i,j;
for(i=0; i < n; i++)
{
for(j=0; j < m; j++)
{
mas[i][j]= rand()%100 ;
}
}
}
int vivod (int mas, int n ,int m)
{
int i,j;
for (int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
printf(" Matrix :%d\n", mas[i][j]);
}
}
int Max_Min (int mas, int n ,int m)
{
int imax, jmax,imin,jmin;
int i,j,max,min;
min = mas[0][0];//ïðèñâГ*ГЁГўГ*ГҐГ¬ ìèГ*èìóì ïåðâîìó ýëåìåГ*ГІГі Г¬Г*òðèöû
max = mas[0][0]; //ïðèñâГ*ГЁГўГ*ГҐГ¬ Г¬Г*êñèìóì ïåðâîìó ýëåìåГ*ГІГі Г¬Г*òðèöû
for(i = 0; i < n; ++i)
{
for(j = 0; j < n; ++j)
{
if(max < mas[i][j])
max = mas[i][j];
imin = i;
jmin = j;
if(min > mas[i][j])
min = mas[i][j];
imin = i;
jmin = j;
}
}
printf("\nMax element s coord [%d][%d] raven %d", imax, jmax, mas[i][j]);
printf("\nMin element s coord [%d][%d] raven %d", imin, jmin, mas[i][j]);
}
int main(void)
{
int key,n,m,i,j;
int mas[100][100];
do {
system("cls");
printf("\n Menu");
printf("\n 1.Ctenie s claviaturi.");
printf("\n 2.Min_Max znacen i pozitii.");
printf("\n 3.Pemeniati mestami 2 stolbtsa.");
printf("\n 4.Dobaviti stroku i zapolniti soglasno variantu .");
printf("\n 5.Otsortirovati matritu po dobavlennoi stroke .");
printf("\n 6.Sgenerirovati matricu .");
printf("\n 0. Vihod");
printf("\n\t==>");
scanf("%d",&key);
switch(key)
{
case 1:
system("cls");
printf(" Vvedite razmer matrici:\n" );
scanf("%d %d",&n,&m);
vivod(mas,n,m);
getch();
break;
}
while(key!=0);
}
}F:\c++\Dev-CppPortable\Lab2.cpp: In function `void ctenie(int, int, int)':
F:\c++\Dev-CppPortable\Lab2.cpp:16: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp: In function `int random(int, int, int)':
F:\c++\Dev-CppPortable\Lab2.cpp:28: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp: In function `int vivod(int, int, int)':
F:\c++\Dev-CppPortable\Lab2.cpp:39: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp: In function `int Max_Min(int, int, int)':
F:\c++\Dev-CppPortable\Lab2.cpp:47: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp:48: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp:53: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp:54: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp:58: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp:59: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp:64: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp:65: error: invalid types `int[int]' for array subscript
F:\c++\Dev-CppPortable\Lab2.cpp: In function `int main()':
F:\c++\Dev-CppPortable\Lab2.cpp:93: error: invalid conversion from `int (*)[100]' to `int'
F:\c++\Dev-CppPortable\Lab2.cpp:93: error: initializing argument 1 of `int vivod(int, int, int)'
F:\c++\Dev-CppPortable\Lab2.cpp:101: error: expected `while' before '}' token
F:\c++\Dev-CppPortable\Lab2.cpp:101: error: expected `(' before '}' token
F:\c++\Dev-CppPortable\Lab2.cpp:101: error: expected primary-expression before '}' token
F:\c++\Dev-CppPortable\Lab2.cpp:101: error: expected `)' before '}' token
F:\c++\Dev-CppPortable\Lab2.cpp:101: error: expected `;' before '}' tokenРешение задачи: «Ошибки при компиляции - исправить ошибки в коде»
textual
Листинг программы
// C-string-drob.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <locale.h> //подключаем библиотеки
void write(char p,int i) //функция для вывода названия соответветствующего разряда числа, в ней передаём само число p и его разряд i(от 1 до 6)
{
if ((i==0)||(i==3)) //если первый или 4-й разряд т.е. сотни тысяч и сотни
{
if (p=='1') printf("сто");
if (p=='2') printf("двести");
if (p=='3') printf("триста");
if (p=='4') printf("четыреста");
if (p=='5') printf("пятьсот");
if (p=='6') printf("шестьсот");
if (p=='7') printf("семьсот");
if (p=='8') printf("восемьсот");
if (p=='9') printf("девятьсот");
}
if ((i==1)||(i==4)) //если второй и 5-й т.е. десятки тысяч и десятки
{
if (p=='1') printf("десять");
if (p=='2') printf("двадцать");
if (p=='3') printf("тридцать");
if (p=='4') printf("сорок");
if (p=='5') printf("пятьдесят");
if (p=='6') printf("шестьдесят");
if (p=='7') printf("семьдесят");
if (p=='8') printf("восемьдесят");
if (p=='9') printf("девяносто");
}
if ((i==2)||(i==5)) //если третий и 6-й т.е. тысячи и еденицы
{
if (p=='1') printf("одна");
if (p=='2') printf("две");
if (p=='3') printf("три");
if (p=='4') printf("четыре");
if (p=='5') printf("пять");
if (p=='6') printf("шесть");
if (p=='7') printf("семь");
if (p=='8') printf("восемь");
if (p=='9') printf("девять");
}
}
void main() //основная функция
{
setlocale(LC_ALL,""); //русский язык
FILE *in; //переменная для фаила
int k,i,j; //переменные бегунки
float c,z; //знаменатель и числитель
i=0;
char *ch,*zn; //переменные для знаменателя и числителя, а точнее для их записи
char S[1024]; //переменная для считывания всего что находится в фаиле
if ((in=fopen("C:\\String.txt", "r"))!=NULL) //если есть фаил и он не пустой
{
while (!feof(in)) //пока не конец фаила
{
fscanf(in,"%s", &S[i]); //считываем поэлементно из фаила в S
i++;
}
fclose(in); //закрываем фаил
}
else printf("No file!");
i=strlen(S); //вычисляем размер строки S т.е. то кол-во символом что было записано в фаиле
for (j=0;j<i;j++)
if (S[j]=='/') k=j; //ищем в строке S где находится знак / и запоминаем его номер
ch=new char [k+1]; //создаём соот. размера массивы char-ов для числителя и знаменателя
zn=new char [i-k];
strncpy(ch,S,k); //копируем первые k-символом , т.е. всё что до знака / в строку для числителя
for (j=k+1;j<i;j++)
zn[j-k-1]=S[j]; //аналогично для знаменателя только то , что полсе знака деления
c=atoi(ch); //функция которая переводит строку в число
z=atoi(zn);
c=c/z; //после перевода высчитываем результат деления
printf("Само число: %f\n", c); //выводим результат деления с 6-ю знаками после запятой
c=1000000*c; //домножаем на 1000000 чтобы потом при
k=c; //пероде в int у нас исчезло всё что после 6-го знака
char s[20];
char *p; //перменные для первода строки в число
int l;
p=itoa(k,s,10); //вызываем функцию в 10-ричной систем счисления
j=strlen(p); //вычисляем размер строки, в которую перевели результат
l=j;
for (i=1;i<6;i++)
if (p[j-1]=='0')
j--; //в цикле смотрим чтобы не было нолей на конце, т.е. например 12300 преходит в 123
if (k==1) printf("Одна миллионная");
else if (k==10) printf("Одна стотысячная");
else if (k==100) printf("Одна десятитысячная");
else if (k==1000) printf("Одна тысячная");
else if (k==10000) printf("Одна сотая");
else if (k==100000) printf("Одна десятая");
else if (k==1000000) printf("одна целая"); //условия на проверку одной чего-то там
else //если результат деления не равен одной
{
if (j==6) k=0; //то смотрим размер строки
if (j==5) k=1; //в зависимости от него
if (j==4) k=2; //т.е. то сколько нулей посел запятой идёт прежде чем мы встрети первый ненулевой элемент
if (j==3) k=3; //сколько нулей то на столько смещаем номер разряда в дальнейшем
if (j==2) k=4;
if (j==1) k=5;
for (i=0;i<(6-k);i++) //поразрядно учитывая нули сразу после запятой смотрим числа
{
if ((((i+k)==1)||((i+k)==4))&&(p[i]==1)&&(p[i+1]!=0)) //это условие если у нас числа 11,12,13....,19 - т.к. у нас эо числа исключения при написании, для них не подхордит общий случай описания
{
if (p[i+1]=='1') {printf("одиннадцать");i++;}
if (p[i+1]=='2') {printf("двенадцать");i++;}
if (p[i+1]=='3') {printf("тринадцать");i++;}
if (p[i+1]=='4') {printf("четырнадцать");i++;}
if (p[i+1]=='5') {printf("пятьнадцать");i++;}
if (p[i+1]=='6') {printf("шестьнадцать");i++;}
if (p[i+1]=='7') {printf("семьнадцать");i++;}
if (p[i+1]=='8') {printf("восемьнадцать");i++;}
if (p[i+1]=='9') {printf("девятьнадцать");i++;}
}
else write(p[i],i+k); //если чисел исклбчений нет то вывзываем функцию написания
if (i==(2-k)) printf(" тысяч(и)"); //если прошли третий разряд то пишем что это были тысячи
printf(" "); //добавляем пробельчики
}
k=k-(6-l); //это для того чтобы понять сколько нулей сразу после запятой
if (k==5) printf("десятых");
if (k==4) printf("сотых");
if (k==3) printf("тысячных");
if (k==2) printf("десятитысячных");
if (k==1) printf("стотысячных");
if (k==0) printf("миллионных");
}
printf("\n");
system("pause");
}