메모리를 낭비하지 않고 어떻게 10 개의 부동 소수점을 배열에 저장할 수 있습니까?배열로 플로팅 읽기
답변
문제에 대해 좀 더 구체적으로 설명해야합니다.
이 번호로 수행해야 할 다른 작업이 없으면 메모리를 저장하는 가장 쉬운 방법은 배열에 배열을 저장하는 것이 아닙니다.
원하는 것처럼 들리는군요.
합계 = 0;
(아직 10 수를 읽지 않은)
현재
합계 + = 현재
동안 읽을 할; 이 질문에
OP는 그가 * add *를 쓸 때 상점 *을 의미한다고 생각합니다. – Jens
int size = 10;
float vet[size];
for(i = 0; i < size; i++){
scanf("%f", &vet[i]);
}
으로 간단한.
키보드 10에서 읽은 수의 수는 단지 예제 일뿐입니다 – user104108
scanf에서 오류를 확인하지 않았습니까? 나쁜 프로그래머, 아니 쿠키! :-) – Jens
'scanf '를 전혀 사용하지 않습니까? 나쁜 프로그래머, 아니 쿠키! :-) – Emmet
대답은 당신이 배열에 일을 추가하고 배열이 메모리를 사용할 것으로 예상 할 수 없다는 것입니다 :)이 될 수 있기
float 값 [100]을 가정 해 봅시다. int n; int index; 는 scanf ("%의 D"(인덱스 = 0 &n); n은 지수 <; 인덱스 ++) 는 scanf ("%의 F", 값 [인덱스]); n은 95 다른 일어나는 예 5의 경우 \t 유동 온도; \t는 scanf ("%의 D"&n); \t 플로트 *의 pValues = (플로트 *)은 calloc (? 해전 것이 여전히 문제 INT 않음 인덱스처럼 위치 – user104108
float arr[10];
for(i = 0; i < 10; i++){
scanf("%f", &arr[i]);
}
나는 위와 비슷하지만 최적화되지 않은 경우 여분의 int를 사용하지 않습니다. hehe
더 적은 메모리를 사용하려면 아래 코드를 사용하십시오. 그것들은 모두 배열로 읽히지 만, 마지막으로 읽어 올 것은 배열에 있습니다 :
float arr[1];
for(i = 0; i < 10; i++){
scanf("%f", &arr[0]);
}
아하. 그것은 문제의 수레를 읽지 않습니다. 그것은 기억입니다. i을 읽고 정확하게 수하물이있는 배열이 필요합니다.
이것은 실제로 숙제와 같이 냄새가 좋지만 괜찮습니다.하지만 전 답변을 전할 선생님이 너무 많습니다. 이제부터는 malloc()이라는 C 함수와 C 연산자 (함수처럼 보입니다. 실제로는 언어에 내장되어 있음)가 크기이라는 이름으로 알려 드리겠습니다.
this tutorial을 살펴보십시오.
그래, 거기있어. 다음은 형식화 된 주석의 코드입니다.
int n,index;
float temp;
scanf("%d",&n);
float *pValues=(float *)calloc(n,sizeof(float));
for(index=0;index<n;index++) {
scanf("%f",&temp);
*(pValues+index)=temp;
}
나는 두 가지 변화와 함께 할 것 :
- 그 문자 외에 아무것도
malloc
을 사용하는 것이 더 관용적 - C에서, 배열과 포인터는 매우 밀접한 관계를 가지고; 사실
*(pValues+index)
은 정확히pValues[index]
과 같습니다.int n,index; float temp; scanf("%d",&n); float *pValues=(float *)malloc(n*sizeof(float)); for(index=0;index<n;index++) { scanf("%f",&temp); pValues[index]=temp; }
의 코드의 또 하나의 변화를 살펴 보자 :
그래서이 같이 다시 쓸 것입니다. pValues
이 있으며 float
에 대한 포인터입니다. &temp
이 있는데 float
에 대한 포인터입니다. &
은 주소 연산자이며 temp
은 float
입니다. 그리고, 여러분은 여러분의 인덱스로 포인터 연산만을하고있는 것입니다.
int n,index; // Don't need temp
scanf("%d",&n);
float *pValues=(float *)malloc(n*sizeof(float));
for(index=0;index<n;index++) {
scanf("%f",pValues+index);
}
자, 퀴즈 질문 : 당신은 루프
for(index=0;index<n;index++) {
scanf("%f",pValues++);
}
는 그것을 냈 (인덱스 = 0, 인덱스
내 나쁜. 내가 전에 게시 된 것처럼 괜찮습니다 :) 그냥 잘 작동합니다. – user104108
scanf에서 오류를 확인하지 않습니까? 나쁜 프로그래머, 아니 쿠키! :-) – Jens
한 경우 무슨 일이 일어날 지 숙제 같은 소리 그래서, 우리는이 한 번 더 다시 작성할 수 있습니다.
입력에서 부동 소수점 수를 읽습니다. 개별 플로트의 크기로 해당 값을 곱하십시오. float에 대한 포인터에 주소를 저장하는 정확한 바이트 수를 할당하십시오. 입력에서 float으로 루프를 읽습니다. 배열의 모든 float를 더하는 루프가 있습니다.
내 숙제 레슨은 용어 포인터와 배열 사이의 연결을 실현하는 것입니다. 배열 인덱싱없이이 작업을 수행 할 수 있지만 질문은 배열을 사용해야 함을 의미합니다.
- 1. 배열로 csv 파일 읽기
- 2. 배열로 이진 파일 읽기
- 3. C++에서 배열로 읽기
- 4. C : 배열로 파일 읽기
- 5. 배열로 이진 파일 읽기
- 6. 배열로 텍스트 파일 읽기
- 7. C에서 배열로 텍스트 파일 읽기
- 8. 코어 오디오를 플로트 배열로 읽기
- 9. esri 모양의 파일 읽기 및 플로팅 R
- 10. VB.NET : CSV 파일을 2D 배열로 읽기
- 11. 다차원 배열로 데이터 파일 읽기 Java
- 12. PHP를 사용하여 바이트 배열로 이미지 읽기
- 13. 문자열 배열로 텍스트 파일 읽기 (및 쓰기)
- 14. 플로팅 요소를 둘러싸는 비 플로팅 요소 만들기
- 15. 플로팅 문제
- 16. 자바에서 플로팅?
- 17. 플로팅 라인
- 18. C에서 동적 할당을 사용하여 다차원 배열로 파일 읽기
- 19. 플로팅 div를 세로로 정렬
- 20. matlab - 그래프 플로팅
- 21. 플로팅 TPopupMenu 만들기
- 22. 플로팅 옆에 div 정렬하기
- 23. IDL의 과학 표기법으로 플로팅
- 24. matlab - 그래프 플로팅
- 25. 플로팅 Divs + 다이나믹 하이츠
- 26. Google지도 - 우편 번호 플로팅
- 27. 플로팅 메뉴를 만드는 방법
- 28. 플로팅 DIV 컨테이너
- 29. matlab에 벡터 플로팅 벡터
- 30. 추출 된 피쳐의 플로팅
조숙 한 최적화는 모든 악의 뿌리입니다. – Juliet
냄새가 나는 숙제 태그가 있습니까? 나는 아직 그것을 보지 못했습니다 :) –
이것은 숙제와 비슷해 보입니다. 1. 교재를주의 깊게 읽으십시오. 2. 질문을 할 때 입력을 읽고 결과를 저장하는 과정에서 지금까지 노출 된 바른 기능을 선택하십시오. 여기서 대답을 얻으면 배우는 데 도움이되지 않습니다. 스스로 주어진 도구로 올바른 솔루션을 찾는 사고 과정을 거쳐야합니다. – lothar